byterover-cli 3.4.0 → 3.5.1
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/oclif/commands/connectors/install.d.ts +2 -2
- package/dist/oclif/commands/connectors/install.js +15 -7
- package/dist/server/core/domain/entities/agent.js +4 -0
- package/dist/server/infra/connectors/mcp/claude-desktop-config-path.d.ts +20 -0
- package/dist/server/infra/connectors/mcp/claude-desktop-config-path.js +47 -0
- package/dist/server/infra/connectors/mcp/mcp-connector-config.d.ts +19 -0
- package/dist/server/infra/connectors/mcp/mcp-connector-config.js +9 -0
- package/dist/server/infra/connectors/mcp/mcp-connector.js +12 -3
- package/dist/server/infra/mcp/mcp-server.js +3 -0
- package/dist/server/infra/mcp/tools/brv-curate-tool.js +3 -7
- package/dist/server/infra/mcp/tools/brv-query-tool.js +3 -7
- package/dist/server/infra/mcp/tools/index.d.ts +1 -0
- package/dist/server/infra/mcp/tools/index.js +1 -0
- package/dist/server/infra/mcp/tools/shared-schema.d.ts +3 -0
- package/dist/server/infra/mcp/tools/shared-schema.js +17 -0
- package/dist/shared/types/agent.d.ts +2 -1
- package/dist/shared/types/agent.js +2 -0
- package/dist/tui/features/connectors/components/connectors-flow.js +7 -2
- package/oclif.manifest.json +355 -355
- package/package.json +1 -1
|
@@ -15,13 +15,13 @@ export default class ConnectorsInstall extends Command {
|
|
|
15
15
|
agentId: string;
|
|
16
16
|
connectorType?: string;
|
|
17
17
|
}, options?: DaemonClientOptions): Promise<{
|
|
18
|
-
agentId: "Amp" | "Antigravity" | "Auggie CLI" | "Augment Code" | "Claude Code" | "Cline" | "Codex" | "Cursor" | "Gemini CLI" | "Github Copilot" | "Junie" | "Kilo Code" | "Kiro" | "OpenClaw" | "OpenCode" | "Qoder" | "Qwen Code" | "Roo Code" | "Trae.ai" | "Warp" | "Windsurf" | "Zed";
|
|
18
|
+
agentId: "Amp" | "Antigravity" | "Auggie CLI" | "Augment Code" | "Claude Code" | "Claude Desktop" | "Cline" | "Codex" | "Cursor" | "Gemini CLI" | "Github Copilot" | "Junie" | "Kilo Code" | "Kiro" | "OpenClaw" | "OpenCode" | "Qoder" | "Qwen Code" | "Roo Code" | "Trae.ai" | "Warp" | "Windsurf" | "Zed";
|
|
19
19
|
alreadySameType: boolean;
|
|
20
20
|
connectorType: "rules" | "hook" | "mcp" | "skill";
|
|
21
21
|
fromType?: undefined;
|
|
22
22
|
result?: undefined;
|
|
23
23
|
} | {
|
|
24
|
-
agentId: "Amp" | "Antigravity" | "Auggie CLI" | "Augment Code" | "Claude Code" | "Cline" | "Codex" | "Cursor" | "Gemini CLI" | "Github Copilot" | "Junie" | "Kilo Code" | "Kiro" | "OpenClaw" | "OpenCode" | "Qoder" | "Qwen Code" | "Roo Code" | "Trae.ai" | "Warp" | "Windsurf" | "Zed";
|
|
24
|
+
agentId: "Amp" | "Antigravity" | "Auggie CLI" | "Augment Code" | "Claude Code" | "Claude Desktop" | "Cline" | "Codex" | "Cursor" | "Gemini CLI" | "Github Copilot" | "Junie" | "Kilo Code" | "Kiro" | "OpenClaw" | "OpenCode" | "Qoder" | "Qwen Code" | "Roo Code" | "Trae.ai" | "Warp" | "Windsurf" | "Zed";
|
|
25
25
|
alreadySameType: boolean;
|
|
26
26
|
connectorType: "rules" | "hook" | "mcp" | "skill";
|
|
27
27
|
fromType: "rules" | "hook" | "mcp" | "skill" | undefined;
|
|
@@ -2,7 +2,7 @@ import { select } from '@inquirer/prompts';
|
|
|
2
2
|
import { Args, Command, Flags } from '@oclif/core';
|
|
3
3
|
import { AGENT_CONNECTOR_CONFIG } from '../../../server/core/domain/entities/agent.js';
|
|
4
4
|
import { ConnectorEvents, } from '../../../shared/transport/events/connector-events.js';
|
|
5
|
-
import { AGENT_VALUES } from '../../../shared/types/agent.js';
|
|
5
|
+
import { AGENT_VALUES, CLAUDE_DESKTOP } from '../../../shared/types/agent.js';
|
|
6
6
|
import { isConnectorType, requiresAgentRestart } from '../../../shared/types/connector-type.js';
|
|
7
7
|
import { getConnectorName } from '../../../tui/features/connectors/utils/get-connector-name.js';
|
|
8
8
|
import { withDaemonRetry } from '../../lib/daemon-client.js';
|
|
@@ -70,7 +70,10 @@ ${agentTable}`;
|
|
|
70
70
|
return { agentId: matchedAgent.id, alreadySameType: true, connectorType: resolvedType };
|
|
71
71
|
}
|
|
72
72
|
// 5. Install or switch
|
|
73
|
-
const result = await client.requestWithAck(ConnectorEvents.INSTALL, {
|
|
73
|
+
const result = await client.requestWithAck(ConnectorEvents.INSTALL, {
|
|
74
|
+
agentId: matchedAgent.id,
|
|
75
|
+
connectorType: resolvedType,
|
|
76
|
+
});
|
|
74
77
|
if (!result.success) {
|
|
75
78
|
throw new Error(result.message);
|
|
76
79
|
}
|
|
@@ -132,10 +135,12 @@ ${agentTable}`;
|
|
|
132
135
|
configPath: installResult.result?.configPath,
|
|
133
136
|
connectorType: installResult.connectorType,
|
|
134
137
|
...(installResult.alreadySameType ? { message: 'Already using this connector type' } : {}),
|
|
135
|
-
...(installResult.result?.requiresManualSetup
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
...(installResult.result?.requiresManualSetup
|
|
139
|
+
? {
|
|
140
|
+
manualInstructions: installResult.result.manualInstructions,
|
|
141
|
+
requiresManualSetup: true,
|
|
142
|
+
}
|
|
143
|
+
: {}),
|
|
139
144
|
},
|
|
140
145
|
success: true,
|
|
141
146
|
});
|
|
@@ -167,7 +172,10 @@ ${agentTable}`;
|
|
|
167
172
|
this.log(`Location: ${installResult.result.configPath}`);
|
|
168
173
|
}
|
|
169
174
|
if (requiresAgentRestart(installResult.connectorType)) {
|
|
170
|
-
|
|
175
|
+
const hint = installResult.agentId === CLAUDE_DESKTOP
|
|
176
|
+
? `\nQuit ${installResult.agentId} from the system tray (Win) or menu bar (Mac), then reopen it.`
|
|
177
|
+
: `\nPlease restart ${installResult.agentId} to apply the new ${getConnectorName(installResult.connectorType)}.`;
|
|
178
|
+
this.log(hint);
|
|
171
179
|
}
|
|
172
180
|
}
|
|
173
181
|
catch (error) {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependencies for platform detection, injectable for testing.
|
|
3
|
+
*/
|
|
4
|
+
type PlatformDeps = {
|
|
5
|
+
env: Record<string, string | undefined>;
|
|
6
|
+
existsSync?: (path: string) => boolean;
|
|
7
|
+
homedir: () => string;
|
|
8
|
+
platform: () => NodeJS.Platform;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Returns the absolute path to the Claude Desktop config file,
|
|
12
|
+
* following platform conventions:
|
|
13
|
+
* - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
|
|
14
|
+
* - Windows: %APPDATA%\Claude\claude_desktop_config.json
|
|
15
|
+
* - Linux: ~/.config/Claude/claude_desktop_config.json
|
|
16
|
+
*
|
|
17
|
+
* @returns Absolute path to the Claude Desktop config file
|
|
18
|
+
*/
|
|
19
|
+
export declare const getClaudeDesktopConfigPath: (deps?: PlatformDeps) => string;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { homedir, platform } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const CLAUDE_DESKTOP_CONFIG_FILE = 'claude_desktop_config.json';
|
|
5
|
+
const CLAUDE_DESKTOP_DIR = 'Claude';
|
|
6
|
+
// Publisher hash is derived from Anthropic's signing certificate — stable per publisher identity
|
|
7
|
+
const MSIX_PACKAGE_DIR = 'Claude_pzs8sxrjxfjjc';
|
|
8
|
+
const defaultDeps = {
|
|
9
|
+
env: process.env,
|
|
10
|
+
homedir,
|
|
11
|
+
platform,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Returns the absolute path to the Claude Desktop config file,
|
|
15
|
+
* following platform conventions:
|
|
16
|
+
* - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
|
|
17
|
+
* - Windows: %APPDATA%\Claude\claude_desktop_config.json
|
|
18
|
+
* - Linux: ~/.config/Claude/claude_desktop_config.json
|
|
19
|
+
*
|
|
20
|
+
* @returns Absolute path to the Claude Desktop config file
|
|
21
|
+
*/
|
|
22
|
+
export const getClaudeDesktopConfigPath = (deps = defaultDeps) => {
|
|
23
|
+
const currentPlatform = deps.platform();
|
|
24
|
+
if (currentPlatform === 'win32') {
|
|
25
|
+
const checkExists = deps.existsSync ?? existsSync;
|
|
26
|
+
const localAppData = deps.env.LOCALAPPDATA ?? join(deps.homedir(), 'AppData', 'Local');
|
|
27
|
+
const msixDir = join(localAppData, 'Packages', MSIX_PACKAGE_DIR, 'LocalCache', 'Roaming', CLAUDE_DESKTOP_DIR);
|
|
28
|
+
// Check directory, not the config file — file may not exist yet on first launch
|
|
29
|
+
if (checkExists(msixDir))
|
|
30
|
+
return join(msixDir, CLAUDE_DESKTOP_CONFIG_FILE);
|
|
31
|
+
const appData = deps.env.APPDATA;
|
|
32
|
+
if (appData !== undefined) {
|
|
33
|
+
return join(appData, CLAUDE_DESKTOP_DIR, CLAUDE_DESKTOP_CONFIG_FILE);
|
|
34
|
+
}
|
|
35
|
+
return join(deps.homedir(), 'AppData', 'Roaming', CLAUDE_DESKTOP_DIR, CLAUDE_DESKTOP_CONFIG_FILE);
|
|
36
|
+
}
|
|
37
|
+
if (currentPlatform === 'darwin') {
|
|
38
|
+
return join(deps.homedir(), 'Library', 'Application Support', CLAUDE_DESKTOP_DIR, CLAUDE_DESKTOP_CONFIG_FILE);
|
|
39
|
+
}
|
|
40
|
+
// Linux and other platforms: respect XDG_CONFIG_HOME if set
|
|
41
|
+
const xdgConfigHome = deps.env.XDG_CONFIG_HOME;
|
|
42
|
+
if (xdgConfigHome !== undefined) {
|
|
43
|
+
return join(xdgConfigHome, CLAUDE_DESKTOP_DIR, CLAUDE_DESKTOP_CONFIG_FILE);
|
|
44
|
+
}
|
|
45
|
+
// Default fallback (Linux and other platforms)
|
|
46
|
+
return join(deps.homedir(), '.config', CLAUDE_DESKTOP_DIR, CLAUDE_DESKTOP_CONFIG_FILE);
|
|
47
|
+
};
|
|
@@ -19,6 +19,12 @@ export type McpConfigMode = 'auto' | 'manual';
|
|
|
19
19
|
type McpConnectorConfigBase = {
|
|
20
20
|
/** Path to the MCP config file (relative to project root). Used when scope is 'project'. */
|
|
21
21
|
configPath?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Function that returns an absolute path to the config file.
|
|
24
|
+
* Takes precedence over configPath when present.
|
|
25
|
+
* Used when the path varies by platform (e.g., Claude Desktop).
|
|
26
|
+
*/
|
|
27
|
+
configPathResolver?: () => string;
|
|
22
28
|
/** Config file format */
|
|
23
29
|
format: McpConfigFormat;
|
|
24
30
|
/** Guide URL or instructions for manual setup. Required when mode is 'manual'. */
|
|
@@ -106,6 +112,19 @@ export declare const MCP_CONNECTOR_CONFIGS: {
|
|
|
106
112
|
};
|
|
107
113
|
readonly serverKeyPath: readonly ["mcpServers", "brv"];
|
|
108
114
|
};
|
|
115
|
+
readonly 'Claude Desktop': {
|
|
116
|
+
readonly configPathResolver: (deps?: {
|
|
117
|
+
env: Record<string, string | undefined>;
|
|
118
|
+
existsSync?: (path: string) => boolean;
|
|
119
|
+
homedir: () => string;
|
|
120
|
+
platform: () => NodeJS.Platform;
|
|
121
|
+
}) => string;
|
|
122
|
+
readonly format: "json";
|
|
123
|
+
readonly mode: "auto";
|
|
124
|
+
readonly scope: "global";
|
|
125
|
+
readonly serverConfig: McpServerConfig;
|
|
126
|
+
readonly serverKeyPath: readonly ["mcpServers", "brv"];
|
|
127
|
+
};
|
|
109
128
|
readonly Cline: {
|
|
110
129
|
readonly format: "json";
|
|
111
130
|
readonly manualGuide: "https://docs.cline.bot/mcp/configuring-mcp-servers#editing-mcp-settings-files";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getClaudeDesktopConfigPath } from './claude-desktop-config-path.js';
|
|
1
2
|
/* eslint-disable perfectionist/sort-objects */
|
|
2
3
|
/** Default MCP server configuration */
|
|
3
4
|
const DEFAULT_SERVER_CONFIG = {
|
|
@@ -60,6 +61,14 @@ export const MCP_CONNECTOR_CONFIGS = {
|
|
|
60
61
|
},
|
|
61
62
|
serverKeyPath: STANDARD_KEY_PATH,
|
|
62
63
|
},
|
|
64
|
+
'Claude Desktop': {
|
|
65
|
+
configPathResolver: getClaudeDesktopConfigPath,
|
|
66
|
+
format: 'json',
|
|
67
|
+
mode: 'auto',
|
|
68
|
+
scope: 'global',
|
|
69
|
+
serverConfig: DEFAULT_SERVER_CONFIG,
|
|
70
|
+
serverKeyPath: STANDARD_KEY_PATH,
|
|
71
|
+
},
|
|
63
72
|
Cline: {
|
|
64
73
|
format: 'json',
|
|
65
74
|
manualGuide: 'https://docs.cline.bot/mcp/configuring-mcp-servers#editing-mcp-settings-files',
|
|
@@ -198,6 +198,9 @@ export class McpConnector {
|
|
|
198
198
|
* - Global scope: relative to os.homedir()
|
|
199
199
|
*/
|
|
200
200
|
getFullConfigPath(config) {
|
|
201
|
+
if (config.configPathResolver) {
|
|
202
|
+
return config.configPathResolver();
|
|
203
|
+
}
|
|
201
204
|
if (!config.configPath) {
|
|
202
205
|
return '';
|
|
203
206
|
}
|
|
@@ -265,7 +268,9 @@ export class McpConnector {
|
|
|
265
268
|
* Install the rule file with MCP-specific content.
|
|
266
269
|
*/
|
|
267
270
|
async installRuleFile(agent) {
|
|
268
|
-
const rulesConfig = agent in RULES_CONNECTOR_CONFIGS
|
|
271
|
+
const rulesConfig = agent in RULES_CONNECTOR_CONFIGS
|
|
272
|
+
? RULES_CONNECTOR_CONFIGS[agent]
|
|
273
|
+
: undefined;
|
|
269
274
|
if (!rulesConfig) {
|
|
270
275
|
return;
|
|
271
276
|
}
|
|
@@ -300,7 +305,9 @@ export class McpConnector {
|
|
|
300
305
|
* Checks for markers AND MCP-specific tool references (brv-query, brv-curate).
|
|
301
306
|
*/
|
|
302
307
|
async statusManual(agent) {
|
|
303
|
-
const rulesConfig = agent in RULES_CONNECTOR_CONFIGS
|
|
308
|
+
const rulesConfig = agent in RULES_CONNECTOR_CONFIGS
|
|
309
|
+
? RULES_CONNECTOR_CONFIGS[agent]
|
|
310
|
+
: undefined;
|
|
304
311
|
if (!rulesConfig) {
|
|
305
312
|
return {
|
|
306
313
|
configExists: false,
|
|
@@ -330,7 +337,9 @@ export class McpConnector {
|
|
|
330
337
|
* Uninstall the rule file content.
|
|
331
338
|
*/
|
|
332
339
|
async uninstallRuleFile(agent) {
|
|
333
|
-
const rulesConfig = agent in RULES_CONNECTOR_CONFIGS
|
|
340
|
+
const rulesConfig = agent in RULES_CONNECTOR_CONFIGS
|
|
341
|
+
? RULES_CONNECTOR_CONFIGS[agent]
|
|
342
|
+
: undefined;
|
|
334
343
|
if (!rulesConfig) {
|
|
335
344
|
return;
|
|
336
345
|
}
|
|
@@ -39,6 +39,9 @@ export class ByteRoverMcpServer {
|
|
|
39
39
|
this.server = new McpServer({
|
|
40
40
|
name: 'byterover',
|
|
41
41
|
version: config.version,
|
|
42
|
+
}, {
|
|
43
|
+
instructions: 'ByteRover MCP — curate and query project context trees. ' +
|
|
44
|
+
'See the `cwd` parameter description on each tool for how to provide the project path correctly.',
|
|
42
45
|
});
|
|
43
46
|
this.connectOptions = {
|
|
44
47
|
clientType: 'mcp',
|
|
@@ -2,19 +2,15 @@ import { waitForConnectedClient } from '@campfirein/brv-transport-client';
|
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { TransportTaskEventNames } from '../../../core/domain/transport/schemas.js';
|
|
5
|
-
import { associateProjectWithRetry, resolveMcpTaskContext
|
|
5
|
+
import { associateProjectWithRetry, resolveMcpTaskContext } from './mcp-project-context.js';
|
|
6
6
|
import { resolveClientCwd } from './resolve-client-cwd.js';
|
|
7
|
+
import { cwdField } from './shared-schema.js';
|
|
7
8
|
export const BrvCurateInputSchema = z.object({
|
|
8
9
|
context: z
|
|
9
10
|
.string()
|
|
10
11
|
.optional()
|
|
11
12
|
.describe('Knowledge to store: patterns, decisions, errors, or insights about the codebase. Required unless files or folder are provided.'),
|
|
12
|
-
cwd:
|
|
13
|
-
.string()
|
|
14
|
-
.optional()
|
|
15
|
-
.describe('Working directory of the project (absolute path). ' +
|
|
16
|
-
'Required when the MCP server runs in global mode (e.g., Windsurf). ' +
|
|
17
|
-
'Optional in project mode — defaults to the project directory.'),
|
|
13
|
+
cwd: cwdField,
|
|
18
14
|
files: z
|
|
19
15
|
.array(z.string())
|
|
20
16
|
.max(5)
|
|
@@ -2,16 +2,12 @@ import { waitForConnectedClient } from '@campfirein/brv-transport-client';
|
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { TransportTaskEventNames } from '../../../core/domain/transport/schemas.js';
|
|
5
|
-
import { associateProjectWithRetry, resolveMcpTaskContext
|
|
5
|
+
import { associateProjectWithRetry, resolveMcpTaskContext } from './mcp-project-context.js';
|
|
6
6
|
import { resolveClientCwd } from './resolve-client-cwd.js';
|
|
7
|
+
import { cwdField } from './shared-schema.js';
|
|
7
8
|
import { waitForTaskResult } from './task-result-waiter.js';
|
|
8
9
|
export const BrvQueryInputSchema = z.object({
|
|
9
|
-
cwd:
|
|
10
|
-
.string()
|
|
11
|
-
.optional()
|
|
12
|
-
.describe('Working directory of the project (absolute path). ' +
|
|
13
|
-
'Required when the MCP server runs in global mode (e.g., Windsurf). ' +
|
|
14
|
-
'Optional in project mode — defaults to the project directory.'),
|
|
10
|
+
cwd: cwdField,
|
|
15
11
|
query: z.string().describe('Natural language question about the codebase or project'),
|
|
16
12
|
});
|
|
17
13
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { registerBrvCurateTool } from './brv-curate-tool.js';
|
|
2
2
|
export { registerBrvQueryTool } from './brv-query-tool.js';
|
|
3
3
|
export { resolveClientCwd } from './resolve-client-cwd.js';
|
|
4
|
+
export { CWD_DESCRIPTION, cwdField } from './shared-schema.js';
|
|
4
5
|
export { waitForTaskResult } from './task-result-waiter.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { registerBrvCurateTool } from './brv-curate-tool.js';
|
|
2
2
|
export { registerBrvQueryTool } from './brv-query-tool.js';
|
|
3
3
|
export { resolveClientCwd } from './resolve-client-cwd.js';
|
|
4
|
+
export { CWD_DESCRIPTION, cwdField } from './shared-schema.js';
|
|
4
5
|
export { waitForTaskResult } from './task-result-waiter.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const CWD_DESCRIPTION = 'Absolute path to the project root — selects which ByteRover context tree to use ' +
|
|
3
|
+
String.raw `(e.g., "/Users/me/code/myapp", "C:\\code\\myapp").` +
|
|
4
|
+
'\n\n' +
|
|
5
|
+
'When to provide:\n' +
|
|
6
|
+
'- If your runtime does NOT expose any workspace/project context to you ' +
|
|
7
|
+
'(e.g., Claude Desktop, hosted MCP, global Windsurf): you MUST provide cwd. ' +
|
|
8
|
+
'Use the path the user mentions, or ASK the user for the absolute path if unknown.\n' +
|
|
9
|
+
'- If your runtime DOES expose an open workspace/project root to you ' +
|
|
10
|
+
'(e.g., Cursor, Cline, Zed, Claude Code): you can OMIT this field — ' +
|
|
11
|
+
'the MCP server was launched from that same project and already knows the cwd. ' +
|
|
12
|
+
'Providing it is harmless but unnecessary.\n' +
|
|
13
|
+
'\n' +
|
|
14
|
+
'If you omit cwd and the tool returns an error about the project not being resolved or cwd being required, retry with cwd explicitly set to the project root path.\n' +
|
|
15
|
+
'\n' +
|
|
16
|
+
'Never guess, never invent paths, never use relative paths.';
|
|
17
|
+
export const cwdField = z.string().optional().describe(CWD_DESCRIPTION);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Array of all supported Agents.
|
|
3
3
|
*/
|
|
4
|
-
export declare const AGENT_VALUES: readonly ["Amp", "Antigravity", "Auggie CLI", "Augment Code", "Claude Code", "Cline", "Codex", "Cursor", "Gemini CLI", "Github Copilot", "Junie", "Kilo Code", "Kiro", "OpenClaw", "OpenCode", "Qoder", "Qwen Code", "Roo Code", "Trae.ai", "Warp", "Windsurf", "Zed"];
|
|
4
|
+
export declare const AGENT_VALUES: readonly ["Amp", "Antigravity", "Auggie CLI", "Augment Code", "Claude Code", "Claude Desktop", "Cline", "Codex", "Cursor", "Gemini CLI", "Github Copilot", "Junie", "Kilo Code", "Kiro", "OpenClaw", "OpenCode", "Qoder", "Qwen Code", "Roo Code", "Trae.ai", "Warp", "Windsurf", "Zed"];
|
|
5
5
|
export type Agent = (typeof AGENT_VALUES)[number];
|
|
6
|
+
export declare const CLAUDE_DESKTOP: Agent;
|
|
@@ -7,6 +7,7 @@ export const AGENT_VALUES = [
|
|
|
7
7
|
'Auggie CLI',
|
|
8
8
|
'Augment Code',
|
|
9
9
|
'Claude Code',
|
|
10
|
+
'Claude Desktop',
|
|
10
11
|
'Cline',
|
|
11
12
|
'Codex',
|
|
12
13
|
'Cursor',
|
|
@@ -25,3 +26,4 @@ export const AGENT_VALUES = [
|
|
|
25
26
|
'Windsurf',
|
|
26
27
|
'Zed',
|
|
27
28
|
];
|
|
29
|
+
export const CLAUDE_DESKTOP = 'Claude Desktop';
|
|
@@ -12,6 +12,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
12
12
|
import chalk from 'chalk';
|
|
13
13
|
import { Box, Text } from 'ink';
|
|
14
14
|
import { useCallback, useMemo, useState } from 'react';
|
|
15
|
+
import { CLAUDE_DESKTOP } from '../../../../shared/types/agent.js';
|
|
15
16
|
import { requiresAgentRestart } from '../../../../shared/types/connector-type.js';
|
|
16
17
|
import { useTheme } from '../../../hooks/index.js';
|
|
17
18
|
import { useGetAgentConfigPaths } from '../api/get-agent-config-paths.js';
|
|
@@ -119,9 +120,13 @@ export const ConnectorsFlow = ({ isActive = true, onCancel, onComplete }) => {
|
|
|
119
120
|
: `${agentName} connected via ${getConnectorName(connectorType)}`;
|
|
120
121
|
const locationLine = result.configPath ? `\nLocation: ${result.configPath}` : '';
|
|
121
122
|
const prompt = chalk.hex('#0AA77D').italic('> "Save our API authentication patterns, use brv curate"');
|
|
122
|
-
const
|
|
123
|
+
const restartHint = requiresAgentRestart(connectorType)
|
|
124
|
+
? agentName === CLAUDE_DESKTOP
|
|
125
|
+
? `\n⚠️ Quit ${agentName} from the system tray (Win) or menu bar (Mac), then reopen it.`
|
|
126
|
+
: `\n⚠️ Please restart ${agentName} to apply the new ${getConnectorName(connectorType)}.`
|
|
127
|
+
: '';
|
|
123
128
|
const message = `${statusMessage}${locationLine}
|
|
124
|
-
${
|
|
129
|
+
${restartHint}
|
|
125
130
|
|
|
126
131
|
WHAT'S NEXT
|
|
127
132
|
Try this in your next prompt:
|
package/oclif.manifest.json
CHANGED
|
@@ -640,7 +640,7 @@
|
|
|
640
640
|
"required": false
|
|
641
641
|
}
|
|
642
642
|
},
|
|
643
|
-
"description": "Install or switch a connector for an agent\n\n Connector Types:\n Rules Agent reads instructions from rule file\n Hook Instructions injected on each prompt\n MCP Agent connects via MCP protocol\n Agent Skill Agent reads skill files from project directory\n\n Available agents Default Supported Types\n ──────────────────── ─────────────── ─────────────────────────\n Amp Agent Skill Rules, MCP, Agent Skill\n Antigravity Agent Skill Rules, MCP, Agent Skill\n Auggie CLI Agent Skill Rules, MCP, Agent Skill\n Augment Code MCP Rules, MCP\n Claude Code Agent Skill Rules, Hook, MCP, Agent Skill\n Cline MCP Rules, MCP\n Codex Agent Skill Rules, MCP, Agent Skill\n Cursor Agent Skill Rules, MCP, Agent Skill\n Gemini CLI Agent Skill Rules, MCP, Agent Skill\n Github Copilot Agent Skill Rules, MCP, Agent Skill\n Junie Agent Skill Rules, MCP, Agent Skill\n Kilo Code Agent Skill Rules, MCP, Agent Skill\n Kiro Agent Skill Rules, MCP, Agent Skill\n OpenClaw Agent Skill Agent Skill\n OpenCode Agent Skill Rules, MCP, Agent Skill\n Qoder Agent Skill Rules, MCP, Agent Skill\n Qwen Code MCP Rules, MCP\n Roo Code Agent Skill Rules, MCP, Agent Skill\n Trae.ai Agent Skill Rules, MCP, Agent Skill\n Warp Agent Skill Rules, MCP, Agent Skill\n Windsurf Agent Skill Rules, MCP, Agent Skill\n Zed MCP Rules, MCP",
|
|
643
|
+
"description": "Install or switch a connector for an agent\n\n Connector Types:\n Rules Agent reads instructions from rule file\n Hook Instructions injected on each prompt\n MCP Agent connects via MCP protocol\n Agent Skill Agent reads skill files from project directory\n\n Available agents Default Supported Types\n ──────────────────── ─────────────── ─────────────────────────\n Amp Agent Skill Rules, MCP, Agent Skill\n Antigravity Agent Skill Rules, MCP, Agent Skill\n Auggie CLI Agent Skill Rules, MCP, Agent Skill\n Augment Code MCP Rules, MCP\n Claude Code Agent Skill Rules, Hook, MCP, Agent Skill\n Claude Desktop MCP MCP\n Cline MCP Rules, MCP\n Codex Agent Skill Rules, MCP, Agent Skill\n Cursor Agent Skill Rules, MCP, Agent Skill\n Gemini CLI Agent Skill Rules, MCP, Agent Skill\n Github Copilot Agent Skill Rules, MCP, Agent Skill\n Junie Agent Skill Rules, MCP, Agent Skill\n Kilo Code Agent Skill Rules, MCP, Agent Skill\n Kiro Agent Skill Rules, MCP, Agent Skill\n OpenClaw Agent Skill Agent Skill\n OpenCode Agent Skill Rules, MCP, Agent Skill\n Qoder Agent Skill Rules, MCP, Agent Skill\n Qwen Code MCP Rules, MCP\n Roo Code Agent Skill Rules, MCP, Agent Skill\n Trae.ai Agent Skill Rules, MCP, Agent Skill\n Warp Agent Skill Rules, MCP, Agent Skill\n Windsurf Agent Skill Rules, MCP, Agent Skill\n Zed MCP Rules, MCP",
|
|
644
644
|
"examples": [
|
|
645
645
|
"<%= config.bin %> connectors install \"Claude Code\"",
|
|
646
646
|
"<%= config.bin %> connectors install \"Claude Code\" --type mcp",
|
|
@@ -1216,211 +1216,6 @@
|
|
|
1216
1216
|
"switch.js"
|
|
1217
1217
|
]
|
|
1218
1218
|
},
|
|
1219
|
-
"review:approve": {
|
|
1220
|
-
"aliases": [],
|
|
1221
|
-
"args": {
|
|
1222
|
-
"taskId": {
|
|
1223
|
-
"description": "Task ID shown in the curate output (e.g. \"brv review approve abc-123\")",
|
|
1224
|
-
"name": "taskId",
|
|
1225
|
-
"required": true
|
|
1226
|
-
}
|
|
1227
|
-
},
|
|
1228
|
-
"description": "Approve pending review operations for a curate task",
|
|
1229
|
-
"examples": [
|
|
1230
|
-
"# Approve all pending changes from a curate task",
|
|
1231
|
-
"<%= config.bin %> review approve abc-123",
|
|
1232
|
-
"",
|
|
1233
|
-
"# Approve specific files",
|
|
1234
|
-
"<%= config.bin %> review approve abc-123 --file architecture/security/audit.md",
|
|
1235
|
-
"<%= config.bin %> review approve abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
1236
|
-
"",
|
|
1237
|
-
"# Approve and get structured output (useful for coding agents)",
|
|
1238
|
-
"<%= config.bin %> review approve abc-123 --format json"
|
|
1239
|
-
],
|
|
1240
|
-
"flags": {
|
|
1241
|
-
"file": {
|
|
1242
|
-
"description": "Approve only the specified file path(s) (relative to context tree)",
|
|
1243
|
-
"name": "file",
|
|
1244
|
-
"hasDynamicHelp": false,
|
|
1245
|
-
"multiple": true,
|
|
1246
|
-
"type": "option"
|
|
1247
|
-
},
|
|
1248
|
-
"format": {
|
|
1249
|
-
"description": "Output format (text or json)",
|
|
1250
|
-
"name": "format",
|
|
1251
|
-
"default": "text",
|
|
1252
|
-
"hasDynamicHelp": false,
|
|
1253
|
-
"multiple": false,
|
|
1254
|
-
"options": [
|
|
1255
|
-
"text",
|
|
1256
|
-
"json"
|
|
1257
|
-
],
|
|
1258
|
-
"type": "option"
|
|
1259
|
-
}
|
|
1260
|
-
},
|
|
1261
|
-
"hasDynamicHelp": false,
|
|
1262
|
-
"hiddenAliases": [],
|
|
1263
|
-
"id": "review:approve",
|
|
1264
|
-
"pluginAlias": "byterover-cli",
|
|
1265
|
-
"pluginName": "byterover-cli",
|
|
1266
|
-
"pluginType": "core",
|
|
1267
|
-
"strict": true,
|
|
1268
|
-
"enableJsonFlag": false,
|
|
1269
|
-
"isESM": true,
|
|
1270
|
-
"relativePath": [
|
|
1271
|
-
"dist",
|
|
1272
|
-
"oclif",
|
|
1273
|
-
"commands",
|
|
1274
|
-
"review",
|
|
1275
|
-
"approve.js"
|
|
1276
|
-
]
|
|
1277
|
-
},
|
|
1278
|
-
"review:base-review-decision": {
|
|
1279
|
-
"aliases": [],
|
|
1280
|
-
"args": {
|
|
1281
|
-
"taskId": {
|
|
1282
|
-
"name": "taskId",
|
|
1283
|
-
"required": true
|
|
1284
|
-
}
|
|
1285
|
-
},
|
|
1286
|
-
"flags": {
|
|
1287
|
-
"file": {
|
|
1288
|
-
"name": "file",
|
|
1289
|
-
"hasDynamicHelp": false,
|
|
1290
|
-
"multiple": true,
|
|
1291
|
-
"type": "option"
|
|
1292
|
-
},
|
|
1293
|
-
"format": {
|
|
1294
|
-
"description": "Output format (text or json)",
|
|
1295
|
-
"name": "format",
|
|
1296
|
-
"default": "text",
|
|
1297
|
-
"hasDynamicHelp": false,
|
|
1298
|
-
"multiple": false,
|
|
1299
|
-
"options": [
|
|
1300
|
-
"text",
|
|
1301
|
-
"json"
|
|
1302
|
-
],
|
|
1303
|
-
"type": "option"
|
|
1304
|
-
}
|
|
1305
|
-
},
|
|
1306
|
-
"hasDynamicHelp": false,
|
|
1307
|
-
"hiddenAliases": [],
|
|
1308
|
-
"id": "review:base-review-decision",
|
|
1309
|
-
"pluginAlias": "byterover-cli",
|
|
1310
|
-
"pluginName": "byterover-cli",
|
|
1311
|
-
"pluginType": "core",
|
|
1312
|
-
"strict": true,
|
|
1313
|
-
"enableJsonFlag": false,
|
|
1314
|
-
"isESM": true,
|
|
1315
|
-
"relativePath": [
|
|
1316
|
-
"dist",
|
|
1317
|
-
"oclif",
|
|
1318
|
-
"commands",
|
|
1319
|
-
"review",
|
|
1320
|
-
"base-review-decision.js"
|
|
1321
|
-
]
|
|
1322
|
-
},
|
|
1323
|
-
"review:pending": {
|
|
1324
|
-
"aliases": [],
|
|
1325
|
-
"args": {},
|
|
1326
|
-
"description": "List all pending review operations for the current project",
|
|
1327
|
-
"examples": [
|
|
1328
|
-
"# Show all pending reviews",
|
|
1329
|
-
"<%= config.bin %> review pending",
|
|
1330
|
-
"",
|
|
1331
|
-
"# Get structured output for agent-driven workflows",
|
|
1332
|
-
"<%= config.bin %> review pending --format json"
|
|
1333
|
-
],
|
|
1334
|
-
"flags": {
|
|
1335
|
-
"format": {
|
|
1336
|
-
"description": "Output format (text or json)",
|
|
1337
|
-
"name": "format",
|
|
1338
|
-
"default": "text",
|
|
1339
|
-
"hasDynamicHelp": false,
|
|
1340
|
-
"multiple": false,
|
|
1341
|
-
"options": [
|
|
1342
|
-
"text",
|
|
1343
|
-
"json"
|
|
1344
|
-
],
|
|
1345
|
-
"type": "option"
|
|
1346
|
-
}
|
|
1347
|
-
},
|
|
1348
|
-
"hasDynamicHelp": false,
|
|
1349
|
-
"hiddenAliases": [],
|
|
1350
|
-
"id": "review:pending",
|
|
1351
|
-
"pluginAlias": "byterover-cli",
|
|
1352
|
-
"pluginName": "byterover-cli",
|
|
1353
|
-
"pluginType": "core",
|
|
1354
|
-
"strict": true,
|
|
1355
|
-
"enableJsonFlag": false,
|
|
1356
|
-
"isESM": true,
|
|
1357
|
-
"relativePath": [
|
|
1358
|
-
"dist",
|
|
1359
|
-
"oclif",
|
|
1360
|
-
"commands",
|
|
1361
|
-
"review",
|
|
1362
|
-
"pending.js"
|
|
1363
|
-
]
|
|
1364
|
-
},
|
|
1365
|
-
"review:reject": {
|
|
1366
|
-
"aliases": [],
|
|
1367
|
-
"args": {
|
|
1368
|
-
"taskId": {
|
|
1369
|
-
"description": "Task ID shown in the curate output (e.g. \"brv review reject abc-123\")",
|
|
1370
|
-
"name": "taskId",
|
|
1371
|
-
"required": true
|
|
1372
|
-
}
|
|
1373
|
-
},
|
|
1374
|
-
"description": "Reject pending review operations for a curate task (restores files from backup)",
|
|
1375
|
-
"examples": [
|
|
1376
|
-
"# Reject all pending changes from a curate task",
|
|
1377
|
-
"<%= config.bin %> review reject abc-123",
|
|
1378
|
-
"",
|
|
1379
|
-
"# Reject specific files",
|
|
1380
|
-
"<%= config.bin %> review reject abc-123 --file architecture/security/audit.md",
|
|
1381
|
-
"<%= config.bin %> review reject abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
1382
|
-
"",
|
|
1383
|
-
"# Reject and get structured output (useful for coding agents)",
|
|
1384
|
-
"<%= config.bin %> review reject abc-123 --format json"
|
|
1385
|
-
],
|
|
1386
|
-
"flags": {
|
|
1387
|
-
"file": {
|
|
1388
|
-
"description": "Reject only the specified file path(s) (relative to context tree)",
|
|
1389
|
-
"name": "file",
|
|
1390
|
-
"hasDynamicHelp": false,
|
|
1391
|
-
"multiple": true,
|
|
1392
|
-
"type": "option"
|
|
1393
|
-
},
|
|
1394
|
-
"format": {
|
|
1395
|
-
"description": "Output format (text or json)",
|
|
1396
|
-
"name": "format",
|
|
1397
|
-
"default": "text",
|
|
1398
|
-
"hasDynamicHelp": false,
|
|
1399
|
-
"multiple": false,
|
|
1400
|
-
"options": [
|
|
1401
|
-
"text",
|
|
1402
|
-
"json"
|
|
1403
|
-
],
|
|
1404
|
-
"type": "option"
|
|
1405
|
-
}
|
|
1406
|
-
},
|
|
1407
|
-
"hasDynamicHelp": false,
|
|
1408
|
-
"hiddenAliases": [],
|
|
1409
|
-
"id": "review:reject",
|
|
1410
|
-
"pluginAlias": "byterover-cli",
|
|
1411
|
-
"pluginName": "byterover-cli",
|
|
1412
|
-
"pluginType": "core",
|
|
1413
|
-
"strict": true,
|
|
1414
|
-
"enableJsonFlag": false,
|
|
1415
|
-
"isESM": true,
|
|
1416
|
-
"relativePath": [
|
|
1417
|
-
"dist",
|
|
1418
|
-
"oclif",
|
|
1419
|
-
"commands",
|
|
1420
|
-
"review",
|
|
1421
|
-
"reject.js"
|
|
1422
|
-
]
|
|
1423
|
-
},
|
|
1424
1219
|
"providers:connect": {
|
|
1425
1220
|
"aliases": [],
|
|
1426
1221
|
"args": {
|
|
@@ -1676,17 +1471,37 @@
|
|
|
1676
1471
|
"switch.js"
|
|
1677
1472
|
]
|
|
1678
1473
|
},
|
|
1679
|
-
"
|
|
1474
|
+
"review:approve": {
|
|
1680
1475
|
"aliases": [],
|
|
1681
|
-
"args": {
|
|
1682
|
-
|
|
1476
|
+
"args": {
|
|
1477
|
+
"taskId": {
|
|
1478
|
+
"description": "Task ID shown in the curate output (e.g. \"brv review approve abc-123\")",
|
|
1479
|
+
"name": "taskId",
|
|
1480
|
+
"required": true
|
|
1481
|
+
}
|
|
1482
|
+
},
|
|
1483
|
+
"description": "Approve pending review operations for a curate task",
|
|
1683
1484
|
"examples": [
|
|
1684
|
-
"
|
|
1485
|
+
"# Approve all pending changes from a curate task",
|
|
1486
|
+
"<%= config.bin %> review approve abc-123",
|
|
1487
|
+
"",
|
|
1488
|
+
"# Approve specific files",
|
|
1489
|
+
"<%= config.bin %> review approve abc-123 --file architecture/security/audit.md",
|
|
1490
|
+
"<%= config.bin %> review approve abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
1491
|
+
"",
|
|
1492
|
+
"# Approve and get structured output (useful for coding agents)",
|
|
1493
|
+
"<%= config.bin %> review approve abc-123 --format json"
|
|
1685
1494
|
],
|
|
1686
1495
|
"flags": {
|
|
1496
|
+
"file": {
|
|
1497
|
+
"description": "Approve only the specified file path(s) (relative to context tree)",
|
|
1498
|
+
"name": "file",
|
|
1499
|
+
"hasDynamicHelp": false,
|
|
1500
|
+
"multiple": true,
|
|
1501
|
+
"type": "option"
|
|
1502
|
+
},
|
|
1687
1503
|
"format": {
|
|
1688
|
-
"
|
|
1689
|
-
"description": "Output format",
|
|
1504
|
+
"description": "Output format (text or json)",
|
|
1690
1505
|
"name": "format",
|
|
1691
1506
|
"default": "text",
|
|
1692
1507
|
"hasDynamicHelp": false,
|
|
@@ -1700,7 +1515,7 @@
|
|
|
1700
1515
|
},
|
|
1701
1516
|
"hasDynamicHelp": false,
|
|
1702
1517
|
"hiddenAliases": [],
|
|
1703
|
-
"id": "
|
|
1518
|
+
"id": "review:approve",
|
|
1704
1519
|
"pluginAlias": "byterover-cli",
|
|
1705
1520
|
"pluginName": "byterover-cli",
|
|
1706
1521
|
"pluginType": "core",
|
|
@@ -1711,21 +1526,69 @@
|
|
|
1711
1526
|
"dist",
|
|
1712
1527
|
"oclif",
|
|
1713
1528
|
"commands",
|
|
1714
|
-
"
|
|
1715
|
-
"
|
|
1529
|
+
"review",
|
|
1530
|
+
"approve.js"
|
|
1716
1531
|
]
|
|
1717
1532
|
},
|
|
1718
|
-
"
|
|
1533
|
+
"review:base-review-decision": {
|
|
1534
|
+
"aliases": [],
|
|
1535
|
+
"args": {
|
|
1536
|
+
"taskId": {
|
|
1537
|
+
"name": "taskId",
|
|
1538
|
+
"required": true
|
|
1539
|
+
}
|
|
1540
|
+
},
|
|
1541
|
+
"flags": {
|
|
1542
|
+
"file": {
|
|
1543
|
+
"name": "file",
|
|
1544
|
+
"hasDynamicHelp": false,
|
|
1545
|
+
"multiple": true,
|
|
1546
|
+
"type": "option"
|
|
1547
|
+
},
|
|
1548
|
+
"format": {
|
|
1549
|
+
"description": "Output format (text or json)",
|
|
1550
|
+
"name": "format",
|
|
1551
|
+
"default": "text",
|
|
1552
|
+
"hasDynamicHelp": false,
|
|
1553
|
+
"multiple": false,
|
|
1554
|
+
"options": [
|
|
1555
|
+
"text",
|
|
1556
|
+
"json"
|
|
1557
|
+
],
|
|
1558
|
+
"type": "option"
|
|
1559
|
+
}
|
|
1560
|
+
},
|
|
1561
|
+
"hasDynamicHelp": false,
|
|
1562
|
+
"hiddenAliases": [],
|
|
1563
|
+
"id": "review:base-review-decision",
|
|
1564
|
+
"pluginAlias": "byterover-cli",
|
|
1565
|
+
"pluginName": "byterover-cli",
|
|
1566
|
+
"pluginType": "core",
|
|
1567
|
+
"strict": true,
|
|
1568
|
+
"enableJsonFlag": false,
|
|
1569
|
+
"isESM": true,
|
|
1570
|
+
"relativePath": [
|
|
1571
|
+
"dist",
|
|
1572
|
+
"oclif",
|
|
1573
|
+
"commands",
|
|
1574
|
+
"review",
|
|
1575
|
+
"base-review-decision.js"
|
|
1576
|
+
]
|
|
1577
|
+
},
|
|
1578
|
+
"review:pending": {
|
|
1719
1579
|
"aliases": [],
|
|
1720
1580
|
"args": {},
|
|
1721
|
-
"description": "
|
|
1581
|
+
"description": "List all pending review operations for the current project",
|
|
1722
1582
|
"examples": [
|
|
1723
|
-
"
|
|
1583
|
+
"# Show all pending reviews",
|
|
1584
|
+
"<%= config.bin %> review pending",
|
|
1585
|
+
"",
|
|
1586
|
+
"# Get structured output for agent-driven workflows",
|
|
1587
|
+
"<%= config.bin %> review pending --format json"
|
|
1724
1588
|
],
|
|
1725
1589
|
"flags": {
|
|
1726
1590
|
"format": {
|
|
1727
|
-
"
|
|
1728
|
-
"description": "Output format",
|
|
1591
|
+
"description": "Output format (text or json)",
|
|
1729
1592
|
"name": "format",
|
|
1730
1593
|
"default": "text",
|
|
1731
1594
|
"hasDynamicHelp": false,
|
|
@@ -1739,7 +1602,7 @@
|
|
|
1739
1602
|
},
|
|
1740
1603
|
"hasDynamicHelp": false,
|
|
1741
1604
|
"hiddenAliases": [],
|
|
1742
|
-
"id": "
|
|
1605
|
+
"id": "review:pending",
|
|
1743
1606
|
"pluginAlias": "byterover-cli",
|
|
1744
1607
|
"pluginName": "byterover-cli",
|
|
1745
1608
|
"pluginType": "core",
|
|
@@ -1750,8 +1613,67 @@
|
|
|
1750
1613
|
"dist",
|
|
1751
1614
|
"oclif",
|
|
1752
1615
|
"commands",
|
|
1753
|
-
"
|
|
1754
|
-
"
|
|
1616
|
+
"review",
|
|
1617
|
+
"pending.js"
|
|
1618
|
+
]
|
|
1619
|
+
},
|
|
1620
|
+
"review:reject": {
|
|
1621
|
+
"aliases": [],
|
|
1622
|
+
"args": {
|
|
1623
|
+
"taskId": {
|
|
1624
|
+
"description": "Task ID shown in the curate output (e.g. \"brv review reject abc-123\")",
|
|
1625
|
+
"name": "taskId",
|
|
1626
|
+
"required": true
|
|
1627
|
+
}
|
|
1628
|
+
},
|
|
1629
|
+
"description": "Reject pending review operations for a curate task (restores files from backup)",
|
|
1630
|
+
"examples": [
|
|
1631
|
+
"# Reject all pending changes from a curate task",
|
|
1632
|
+
"<%= config.bin %> review reject abc-123",
|
|
1633
|
+
"",
|
|
1634
|
+
"# Reject specific files",
|
|
1635
|
+
"<%= config.bin %> review reject abc-123 --file architecture/security/audit.md",
|
|
1636
|
+
"<%= config.bin %> review reject abc-123 --file auth/jwt.md --file auth/oauth.md",
|
|
1637
|
+
"",
|
|
1638
|
+
"# Reject and get structured output (useful for coding agents)",
|
|
1639
|
+
"<%= config.bin %> review reject abc-123 --format json"
|
|
1640
|
+
],
|
|
1641
|
+
"flags": {
|
|
1642
|
+
"file": {
|
|
1643
|
+
"description": "Reject only the specified file path(s) (relative to context tree)",
|
|
1644
|
+
"name": "file",
|
|
1645
|
+
"hasDynamicHelp": false,
|
|
1646
|
+
"multiple": true,
|
|
1647
|
+
"type": "option"
|
|
1648
|
+
},
|
|
1649
|
+
"format": {
|
|
1650
|
+
"description": "Output format (text or json)",
|
|
1651
|
+
"name": "format",
|
|
1652
|
+
"default": "text",
|
|
1653
|
+
"hasDynamicHelp": false,
|
|
1654
|
+
"multiple": false,
|
|
1655
|
+
"options": [
|
|
1656
|
+
"text",
|
|
1657
|
+
"json"
|
|
1658
|
+
],
|
|
1659
|
+
"type": "option"
|
|
1660
|
+
}
|
|
1661
|
+
},
|
|
1662
|
+
"hasDynamicHelp": false,
|
|
1663
|
+
"hiddenAliases": [],
|
|
1664
|
+
"id": "review:reject",
|
|
1665
|
+
"pluginAlias": "byterover-cli",
|
|
1666
|
+
"pluginName": "byterover-cli",
|
|
1667
|
+
"pluginType": "core",
|
|
1668
|
+
"strict": true,
|
|
1669
|
+
"enableJsonFlag": false,
|
|
1670
|
+
"isESM": true,
|
|
1671
|
+
"relativePath": [
|
|
1672
|
+
"dist",
|
|
1673
|
+
"oclif",
|
|
1674
|
+
"commands",
|
|
1675
|
+
"review",
|
|
1676
|
+
"reject.js"
|
|
1755
1677
|
]
|
|
1756
1678
|
},
|
|
1757
1679
|
"source:add": {
|
|
@@ -1854,15 +1776,93 @@
|
|
|
1854
1776
|
"required": true
|
|
1855
1777
|
}
|
|
1856
1778
|
},
|
|
1857
|
-
"description": "Remove a knowledge source",
|
|
1858
|
-
"examples": [
|
|
1859
|
-
"<%= config.bin %> <%= command.id %> shared-lib",
|
|
1860
|
-
"<%= config.bin %> <%= command.id %> /path/to/shared-lib"
|
|
1861
|
-
],
|
|
1862
|
-
"flags": {},
|
|
1779
|
+
"description": "Remove a knowledge source",
|
|
1780
|
+
"examples": [
|
|
1781
|
+
"<%= config.bin %> <%= command.id %> shared-lib",
|
|
1782
|
+
"<%= config.bin %> <%= command.id %> /path/to/shared-lib"
|
|
1783
|
+
],
|
|
1784
|
+
"flags": {},
|
|
1785
|
+
"hasDynamicHelp": false,
|
|
1786
|
+
"hiddenAliases": [],
|
|
1787
|
+
"id": "source:remove",
|
|
1788
|
+
"pluginAlias": "byterover-cli",
|
|
1789
|
+
"pluginName": "byterover-cli",
|
|
1790
|
+
"pluginType": "core",
|
|
1791
|
+
"strict": true,
|
|
1792
|
+
"enableJsonFlag": false,
|
|
1793
|
+
"isESM": true,
|
|
1794
|
+
"relativePath": [
|
|
1795
|
+
"dist",
|
|
1796
|
+
"oclif",
|
|
1797
|
+
"commands",
|
|
1798
|
+
"source",
|
|
1799
|
+
"remove.js"
|
|
1800
|
+
]
|
|
1801
|
+
},
|
|
1802
|
+
"space:list": {
|
|
1803
|
+
"aliases": [],
|
|
1804
|
+
"args": {},
|
|
1805
|
+
"description": "List all teams and spaces (deprecated)",
|
|
1806
|
+
"examples": [
|
|
1807
|
+
"<%= config.bin %> space list"
|
|
1808
|
+
],
|
|
1809
|
+
"flags": {
|
|
1810
|
+
"format": {
|
|
1811
|
+
"char": "f",
|
|
1812
|
+
"description": "Output format",
|
|
1813
|
+
"name": "format",
|
|
1814
|
+
"default": "text",
|
|
1815
|
+
"hasDynamicHelp": false,
|
|
1816
|
+
"multiple": false,
|
|
1817
|
+
"options": [
|
|
1818
|
+
"text",
|
|
1819
|
+
"json"
|
|
1820
|
+
],
|
|
1821
|
+
"type": "option"
|
|
1822
|
+
}
|
|
1823
|
+
},
|
|
1824
|
+
"hasDynamicHelp": false,
|
|
1825
|
+
"hiddenAliases": [],
|
|
1826
|
+
"id": "space:list",
|
|
1827
|
+
"pluginAlias": "byterover-cli",
|
|
1828
|
+
"pluginName": "byterover-cli",
|
|
1829
|
+
"pluginType": "core",
|
|
1830
|
+
"strict": true,
|
|
1831
|
+
"enableJsonFlag": false,
|
|
1832
|
+
"isESM": true,
|
|
1833
|
+
"relativePath": [
|
|
1834
|
+
"dist",
|
|
1835
|
+
"oclif",
|
|
1836
|
+
"commands",
|
|
1837
|
+
"space",
|
|
1838
|
+
"list.js"
|
|
1839
|
+
]
|
|
1840
|
+
},
|
|
1841
|
+
"space:switch": {
|
|
1842
|
+
"aliases": [],
|
|
1843
|
+
"args": {},
|
|
1844
|
+
"description": "Switch to a different space (deprecated)",
|
|
1845
|
+
"examples": [
|
|
1846
|
+
"<%= config.bin %> space switch"
|
|
1847
|
+
],
|
|
1848
|
+
"flags": {
|
|
1849
|
+
"format": {
|
|
1850
|
+
"char": "f",
|
|
1851
|
+
"description": "Output format",
|
|
1852
|
+
"name": "format",
|
|
1853
|
+
"default": "text",
|
|
1854
|
+
"hasDynamicHelp": false,
|
|
1855
|
+
"multiple": false,
|
|
1856
|
+
"options": [
|
|
1857
|
+
"text",
|
|
1858
|
+
"json"
|
|
1859
|
+
],
|
|
1860
|
+
"type": "option"
|
|
1861
|
+
}
|
|
1862
|
+
},
|
|
1863
1863
|
"hasDynamicHelp": false,
|
|
1864
1864
|
"hiddenAliases": [],
|
|
1865
|
-
"id": "
|
|
1865
|
+
"id": "space:switch",
|
|
1866
1866
|
"pluginAlias": "byterover-cli",
|
|
1867
1867
|
"pluginName": "byterover-cli",
|
|
1868
1868
|
"pluginType": "core",
|
|
@@ -1873,8 +1873,8 @@
|
|
|
1873
1873
|
"dist",
|
|
1874
1874
|
"oclif",
|
|
1875
1875
|
"commands",
|
|
1876
|
-
"
|
|
1877
|
-
"
|
|
1876
|
+
"space",
|
|
1877
|
+
"switch.js"
|
|
1878
1878
|
]
|
|
1879
1879
|
},
|
|
1880
1880
|
"swarm:curate": {
|
|
@@ -2057,6 +2057,128 @@
|
|
|
2057
2057
|
"status.js"
|
|
2058
2058
|
]
|
|
2059
2059
|
},
|
|
2060
|
+
"worktree:add": {
|
|
2061
|
+
"aliases": [],
|
|
2062
|
+
"args": {
|
|
2063
|
+
"path": {
|
|
2064
|
+
"description": "Path to the directory to register as a worktree (relative or absolute)",
|
|
2065
|
+
"name": "path",
|
|
2066
|
+
"required": false
|
|
2067
|
+
}
|
|
2068
|
+
},
|
|
2069
|
+
"description": "Register a directory as a worktree of this project",
|
|
2070
|
+
"examples": [
|
|
2071
|
+
"<%= config.bin %> <%= command.id %> packages/api",
|
|
2072
|
+
"<%= config.bin %> <%= command.id %> ../other-checkout",
|
|
2073
|
+
"<%= config.bin %> <%= command.id %> (auto-detect parent from subdirectory)"
|
|
2074
|
+
],
|
|
2075
|
+
"flags": {
|
|
2076
|
+
"force": {
|
|
2077
|
+
"description": "Replace existing .brv/ directory in target with a worktree pointer",
|
|
2078
|
+
"name": "force",
|
|
2079
|
+
"allowNo": false,
|
|
2080
|
+
"type": "boolean"
|
|
2081
|
+
}
|
|
2082
|
+
},
|
|
2083
|
+
"hasDynamicHelp": false,
|
|
2084
|
+
"hiddenAliases": [],
|
|
2085
|
+
"id": "worktree:add",
|
|
2086
|
+
"pluginAlias": "byterover-cli",
|
|
2087
|
+
"pluginName": "byterover-cli",
|
|
2088
|
+
"pluginType": "core",
|
|
2089
|
+
"strict": true,
|
|
2090
|
+
"enableJsonFlag": false,
|
|
2091
|
+
"isESM": true,
|
|
2092
|
+
"relativePath": [
|
|
2093
|
+
"dist",
|
|
2094
|
+
"oclif",
|
|
2095
|
+
"commands",
|
|
2096
|
+
"worktree",
|
|
2097
|
+
"add.js"
|
|
2098
|
+
]
|
|
2099
|
+
},
|
|
2100
|
+
"worktree": {
|
|
2101
|
+
"aliases": [],
|
|
2102
|
+
"args": {},
|
|
2103
|
+
"description": "Manage worktree links for subdirectories and sibling checkouts",
|
|
2104
|
+
"examples": [
|
|
2105
|
+
"<%= config.bin %> <%= command.id %> --help"
|
|
2106
|
+
],
|
|
2107
|
+
"flags": {},
|
|
2108
|
+
"hasDynamicHelp": false,
|
|
2109
|
+
"hiddenAliases": [],
|
|
2110
|
+
"id": "worktree",
|
|
2111
|
+
"pluginAlias": "byterover-cli",
|
|
2112
|
+
"pluginName": "byterover-cli",
|
|
2113
|
+
"pluginType": "core",
|
|
2114
|
+
"strict": true,
|
|
2115
|
+
"enableJsonFlag": false,
|
|
2116
|
+
"isESM": true,
|
|
2117
|
+
"relativePath": [
|
|
2118
|
+
"dist",
|
|
2119
|
+
"oclif",
|
|
2120
|
+
"commands",
|
|
2121
|
+
"worktree",
|
|
2122
|
+
"index.js"
|
|
2123
|
+
]
|
|
2124
|
+
},
|
|
2125
|
+
"worktree:list": {
|
|
2126
|
+
"aliases": [],
|
|
2127
|
+
"args": {},
|
|
2128
|
+
"description": "Show the current worktree link and list all registered worktrees",
|
|
2129
|
+
"examples": [
|
|
2130
|
+
"<%= config.bin %> <%= command.id %>"
|
|
2131
|
+
],
|
|
2132
|
+
"flags": {},
|
|
2133
|
+
"hasDynamicHelp": false,
|
|
2134
|
+
"hiddenAliases": [],
|
|
2135
|
+
"id": "worktree:list",
|
|
2136
|
+
"pluginAlias": "byterover-cli",
|
|
2137
|
+
"pluginName": "byterover-cli",
|
|
2138
|
+
"pluginType": "core",
|
|
2139
|
+
"strict": true,
|
|
2140
|
+
"enableJsonFlag": false,
|
|
2141
|
+
"isESM": true,
|
|
2142
|
+
"relativePath": [
|
|
2143
|
+
"dist",
|
|
2144
|
+
"oclif",
|
|
2145
|
+
"commands",
|
|
2146
|
+
"worktree",
|
|
2147
|
+
"list.js"
|
|
2148
|
+
]
|
|
2149
|
+
},
|
|
2150
|
+
"worktree:remove": {
|
|
2151
|
+
"aliases": [],
|
|
2152
|
+
"args": {
|
|
2153
|
+
"path": {
|
|
2154
|
+
"description": "Path to the worktree to remove (defaults to cwd)",
|
|
2155
|
+
"name": "path",
|
|
2156
|
+
"required": false
|
|
2157
|
+
}
|
|
2158
|
+
},
|
|
2159
|
+
"description": "Remove a worktree registration and its .brv pointer",
|
|
2160
|
+
"examples": [
|
|
2161
|
+
"<%= config.bin %> <%= command.id %> (remove cwd as worktree)",
|
|
2162
|
+
"<%= config.bin %> <%= command.id %> packages/api (remove from parent)"
|
|
2163
|
+
],
|
|
2164
|
+
"flags": {},
|
|
2165
|
+
"hasDynamicHelp": false,
|
|
2166
|
+
"hiddenAliases": [],
|
|
2167
|
+
"id": "worktree:remove",
|
|
2168
|
+
"pluginAlias": "byterover-cli",
|
|
2169
|
+
"pluginName": "byterover-cli",
|
|
2170
|
+
"pluginType": "core",
|
|
2171
|
+
"strict": true,
|
|
2172
|
+
"enableJsonFlag": false,
|
|
2173
|
+
"isESM": true,
|
|
2174
|
+
"relativePath": [
|
|
2175
|
+
"dist",
|
|
2176
|
+
"oclif",
|
|
2177
|
+
"commands",
|
|
2178
|
+
"worktree",
|
|
2179
|
+
"remove.js"
|
|
2180
|
+
]
|
|
2181
|
+
},
|
|
2060
2182
|
"vc:add": {
|
|
2061
2183
|
"aliases": [],
|
|
2062
2184
|
"args": {},
|
|
@@ -2659,128 +2781,6 @@
|
|
|
2659
2781
|
"status.js"
|
|
2660
2782
|
]
|
|
2661
2783
|
},
|
|
2662
|
-
"worktree:add": {
|
|
2663
|
-
"aliases": [],
|
|
2664
|
-
"args": {
|
|
2665
|
-
"path": {
|
|
2666
|
-
"description": "Path to the directory to register as a worktree (relative or absolute)",
|
|
2667
|
-
"name": "path",
|
|
2668
|
-
"required": false
|
|
2669
|
-
}
|
|
2670
|
-
},
|
|
2671
|
-
"description": "Register a directory as a worktree of this project",
|
|
2672
|
-
"examples": [
|
|
2673
|
-
"<%= config.bin %> <%= command.id %> packages/api",
|
|
2674
|
-
"<%= config.bin %> <%= command.id %> ../other-checkout",
|
|
2675
|
-
"<%= config.bin %> <%= command.id %> (auto-detect parent from subdirectory)"
|
|
2676
|
-
],
|
|
2677
|
-
"flags": {
|
|
2678
|
-
"force": {
|
|
2679
|
-
"description": "Replace existing .brv/ directory in target with a worktree pointer",
|
|
2680
|
-
"name": "force",
|
|
2681
|
-
"allowNo": false,
|
|
2682
|
-
"type": "boolean"
|
|
2683
|
-
}
|
|
2684
|
-
},
|
|
2685
|
-
"hasDynamicHelp": false,
|
|
2686
|
-
"hiddenAliases": [],
|
|
2687
|
-
"id": "worktree:add",
|
|
2688
|
-
"pluginAlias": "byterover-cli",
|
|
2689
|
-
"pluginName": "byterover-cli",
|
|
2690
|
-
"pluginType": "core",
|
|
2691
|
-
"strict": true,
|
|
2692
|
-
"enableJsonFlag": false,
|
|
2693
|
-
"isESM": true,
|
|
2694
|
-
"relativePath": [
|
|
2695
|
-
"dist",
|
|
2696
|
-
"oclif",
|
|
2697
|
-
"commands",
|
|
2698
|
-
"worktree",
|
|
2699
|
-
"add.js"
|
|
2700
|
-
]
|
|
2701
|
-
},
|
|
2702
|
-
"worktree": {
|
|
2703
|
-
"aliases": [],
|
|
2704
|
-
"args": {},
|
|
2705
|
-
"description": "Manage worktree links for subdirectories and sibling checkouts",
|
|
2706
|
-
"examples": [
|
|
2707
|
-
"<%= config.bin %> <%= command.id %> --help"
|
|
2708
|
-
],
|
|
2709
|
-
"flags": {},
|
|
2710
|
-
"hasDynamicHelp": false,
|
|
2711
|
-
"hiddenAliases": [],
|
|
2712
|
-
"id": "worktree",
|
|
2713
|
-
"pluginAlias": "byterover-cli",
|
|
2714
|
-
"pluginName": "byterover-cli",
|
|
2715
|
-
"pluginType": "core",
|
|
2716
|
-
"strict": true,
|
|
2717
|
-
"enableJsonFlag": false,
|
|
2718
|
-
"isESM": true,
|
|
2719
|
-
"relativePath": [
|
|
2720
|
-
"dist",
|
|
2721
|
-
"oclif",
|
|
2722
|
-
"commands",
|
|
2723
|
-
"worktree",
|
|
2724
|
-
"index.js"
|
|
2725
|
-
]
|
|
2726
|
-
},
|
|
2727
|
-
"worktree:list": {
|
|
2728
|
-
"aliases": [],
|
|
2729
|
-
"args": {},
|
|
2730
|
-
"description": "Show the current worktree link and list all registered worktrees",
|
|
2731
|
-
"examples": [
|
|
2732
|
-
"<%= config.bin %> <%= command.id %>"
|
|
2733
|
-
],
|
|
2734
|
-
"flags": {},
|
|
2735
|
-
"hasDynamicHelp": false,
|
|
2736
|
-
"hiddenAliases": [],
|
|
2737
|
-
"id": "worktree:list",
|
|
2738
|
-
"pluginAlias": "byterover-cli",
|
|
2739
|
-
"pluginName": "byterover-cli",
|
|
2740
|
-
"pluginType": "core",
|
|
2741
|
-
"strict": true,
|
|
2742
|
-
"enableJsonFlag": false,
|
|
2743
|
-
"isESM": true,
|
|
2744
|
-
"relativePath": [
|
|
2745
|
-
"dist",
|
|
2746
|
-
"oclif",
|
|
2747
|
-
"commands",
|
|
2748
|
-
"worktree",
|
|
2749
|
-
"list.js"
|
|
2750
|
-
]
|
|
2751
|
-
},
|
|
2752
|
-
"worktree:remove": {
|
|
2753
|
-
"aliases": [],
|
|
2754
|
-
"args": {
|
|
2755
|
-
"path": {
|
|
2756
|
-
"description": "Path to the worktree to remove (defaults to cwd)",
|
|
2757
|
-
"name": "path",
|
|
2758
|
-
"required": false
|
|
2759
|
-
}
|
|
2760
|
-
},
|
|
2761
|
-
"description": "Remove a worktree registration and its .brv pointer",
|
|
2762
|
-
"examples": [
|
|
2763
|
-
"<%= config.bin %> <%= command.id %> (remove cwd as worktree)",
|
|
2764
|
-
"<%= config.bin %> <%= command.id %> packages/api (remove from parent)"
|
|
2765
|
-
],
|
|
2766
|
-
"flags": {},
|
|
2767
|
-
"hasDynamicHelp": false,
|
|
2768
|
-
"hiddenAliases": [],
|
|
2769
|
-
"id": "worktree:remove",
|
|
2770
|
-
"pluginAlias": "byterover-cli",
|
|
2771
|
-
"pluginName": "byterover-cli",
|
|
2772
|
-
"pluginType": "core",
|
|
2773
|
-
"strict": true,
|
|
2774
|
-
"enableJsonFlag": false,
|
|
2775
|
-
"isESM": true,
|
|
2776
|
-
"relativePath": [
|
|
2777
|
-
"dist",
|
|
2778
|
-
"oclif",
|
|
2779
|
-
"commands",
|
|
2780
|
-
"worktree",
|
|
2781
|
-
"remove.js"
|
|
2782
|
-
]
|
|
2783
|
-
},
|
|
2784
2784
|
"hub:registry:add": {
|
|
2785
2785
|
"aliases": [],
|
|
2786
2786
|
"args": {
|
|
@@ -3080,5 +3080,5 @@
|
|
|
3080
3080
|
]
|
|
3081
3081
|
}
|
|
3082
3082
|
},
|
|
3083
|
-
"version": "3.
|
|
3083
|
+
"version": "3.5.1"
|
|
3084
3084
|
}
|