byterover-cli 3.4.0 → 3.5.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/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/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 +283 -283
- 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
|
}
|
|
@@ -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,33 +1216,47 @@
|
|
|
1216
1216
|
"switch.js"
|
|
1217
1217
|
]
|
|
1218
1218
|
},
|
|
1219
|
-
"
|
|
1219
|
+
"providers:connect": {
|
|
1220
1220
|
"aliases": [],
|
|
1221
1221
|
"args": {
|
|
1222
|
-
"
|
|
1223
|
-
"description": "
|
|
1224
|
-
"name": "
|
|
1225
|
-
"required":
|
|
1222
|
+
"provider": {
|
|
1223
|
+
"description": "Provider ID to connect (e.g., anthropic, openai, openrouter). Omit for interactive selection.",
|
|
1224
|
+
"name": "provider",
|
|
1225
|
+
"required": false
|
|
1226
1226
|
}
|
|
1227
1227
|
},
|
|
1228
|
-
"description": "
|
|
1228
|
+
"description": "Connect or switch to an LLM provider",
|
|
1229
1229
|
"examples": [
|
|
1230
|
-
"
|
|
1231
|
-
"<%= config.bin %>
|
|
1232
|
-
"",
|
|
1233
|
-
"
|
|
1234
|
-
"<%= config.bin %>
|
|
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"
|
|
1230
|
+
"<%= config.bin %> providers connect",
|
|
1231
|
+
"<%= config.bin %> providers connect anthropic --api-key sk-xxx",
|
|
1232
|
+
"<%= config.bin %> providers connect openai --oauth",
|
|
1233
|
+
"<%= config.bin %> providers connect byterover",
|
|
1234
|
+
"<%= config.bin %> providers connect openai-compatible --base-url http://localhost:11434/v1 --api-key sk-xxx"
|
|
1239
1235
|
],
|
|
1240
1236
|
"flags": {
|
|
1241
|
-
"
|
|
1242
|
-
"
|
|
1243
|
-
"
|
|
1237
|
+
"api-key": {
|
|
1238
|
+
"char": "k",
|
|
1239
|
+
"description": "API key for the provider",
|
|
1240
|
+
"name": "api-key",
|
|
1244
1241
|
"hasDynamicHelp": false,
|
|
1245
|
-
"multiple":
|
|
1242
|
+
"multiple": false,
|
|
1243
|
+
"type": "option"
|
|
1244
|
+
},
|
|
1245
|
+
"base-url": {
|
|
1246
|
+
"char": "b",
|
|
1247
|
+
"description": "Base URL for OpenAI-compatible providers (e.g., http://localhost:11434/v1)",
|
|
1248
|
+
"name": "base-url",
|
|
1249
|
+
"hasDynamicHelp": false,
|
|
1250
|
+
"multiple": false,
|
|
1251
|
+
"type": "option"
|
|
1252
|
+
},
|
|
1253
|
+
"code": {
|
|
1254
|
+
"char": "c",
|
|
1255
|
+
"description": "Authorization code for code-paste OAuth providers (e.g., Anthropic). Not applicable to browser-callback providers like OpenAI — use --oauth without --code instead.",
|
|
1256
|
+
"hidden": true,
|
|
1257
|
+
"name": "code",
|
|
1258
|
+
"hasDynamicHelp": false,
|
|
1259
|
+
"multiple": false,
|
|
1246
1260
|
"type": "option"
|
|
1247
1261
|
},
|
|
1248
1262
|
"format": {
|
|
@@ -1256,11 +1270,25 @@
|
|
|
1256
1270
|
"json"
|
|
1257
1271
|
],
|
|
1258
1272
|
"type": "option"
|
|
1273
|
+
},
|
|
1274
|
+
"model": {
|
|
1275
|
+
"char": "m",
|
|
1276
|
+
"description": "Model to set as active after connecting",
|
|
1277
|
+
"name": "model",
|
|
1278
|
+
"hasDynamicHelp": false,
|
|
1279
|
+
"multiple": false,
|
|
1280
|
+
"type": "option"
|
|
1281
|
+
},
|
|
1282
|
+
"oauth": {
|
|
1283
|
+
"description": "Connect via OAuth (browser-based)",
|
|
1284
|
+
"name": "oauth",
|
|
1285
|
+
"allowNo": false,
|
|
1286
|
+
"type": "boolean"
|
|
1259
1287
|
}
|
|
1260
1288
|
},
|
|
1261
1289
|
"hasDynamicHelp": false,
|
|
1262
1290
|
"hiddenAliases": [],
|
|
1263
|
-
"id": "
|
|
1291
|
+
"id": "providers:connect",
|
|
1264
1292
|
"pluginAlias": "byterover-cli",
|
|
1265
1293
|
"pluginName": "byterover-cli",
|
|
1266
1294
|
"pluginType": "core",
|
|
@@ -1271,25 +1299,25 @@
|
|
|
1271
1299
|
"dist",
|
|
1272
1300
|
"oclif",
|
|
1273
1301
|
"commands",
|
|
1274
|
-
"
|
|
1275
|
-
"
|
|
1302
|
+
"providers",
|
|
1303
|
+
"connect.js"
|
|
1276
1304
|
]
|
|
1277
1305
|
},
|
|
1278
|
-
"
|
|
1306
|
+
"providers:disconnect": {
|
|
1279
1307
|
"aliases": [],
|
|
1280
1308
|
"args": {
|
|
1281
|
-
"
|
|
1282
|
-
"
|
|
1309
|
+
"provider": {
|
|
1310
|
+
"description": "Provider ID to disconnect",
|
|
1311
|
+
"name": "provider",
|
|
1283
1312
|
"required": true
|
|
1284
1313
|
}
|
|
1285
1314
|
},
|
|
1315
|
+
"description": "Disconnect an LLM provider",
|
|
1316
|
+
"examples": [
|
|
1317
|
+
"<%= config.bin %> providers disconnect anthropic",
|
|
1318
|
+
"<%= config.bin %> providers disconnect openai --format json"
|
|
1319
|
+
],
|
|
1286
1320
|
"flags": {
|
|
1287
|
-
"file": {
|
|
1288
|
-
"name": "file",
|
|
1289
|
-
"hasDynamicHelp": false,
|
|
1290
|
-
"multiple": true,
|
|
1291
|
-
"type": "option"
|
|
1292
|
-
},
|
|
1293
1321
|
"format": {
|
|
1294
1322
|
"description": "Output format (text or json)",
|
|
1295
1323
|
"name": "format",
|
|
@@ -1305,7 +1333,7 @@
|
|
|
1305
1333
|
},
|
|
1306
1334
|
"hasDynamicHelp": false,
|
|
1307
1335
|
"hiddenAliases": [],
|
|
1308
|
-
"id": "
|
|
1336
|
+
"id": "providers:disconnect",
|
|
1309
1337
|
"pluginAlias": "byterover-cli",
|
|
1310
1338
|
"pluginName": "byterover-cli",
|
|
1311
1339
|
"pluginType": "core",
|
|
@@ -1316,20 +1344,17 @@
|
|
|
1316
1344
|
"dist",
|
|
1317
1345
|
"oclif",
|
|
1318
1346
|
"commands",
|
|
1319
|
-
"
|
|
1320
|
-
"
|
|
1347
|
+
"providers",
|
|
1348
|
+
"disconnect.js"
|
|
1321
1349
|
]
|
|
1322
1350
|
},
|
|
1323
|
-
"
|
|
1351
|
+
"providers": {
|
|
1324
1352
|
"aliases": [],
|
|
1325
1353
|
"args": {},
|
|
1326
|
-
"description": "
|
|
1354
|
+
"description": "Show active provider and model",
|
|
1327
1355
|
"examples": [
|
|
1328
|
-
"
|
|
1329
|
-
"<%= config.bin %>
|
|
1330
|
-
"",
|
|
1331
|
-
"# Get structured output for agent-driven workflows",
|
|
1332
|
-
"<%= config.bin %> review pending --format json"
|
|
1356
|
+
"<%= config.bin %> providers",
|
|
1357
|
+
"<%= config.bin %> providers --format json"
|
|
1333
1358
|
],
|
|
1334
1359
|
"flags": {
|
|
1335
1360
|
"format": {
|
|
@@ -1347,7 +1372,7 @@
|
|
|
1347
1372
|
},
|
|
1348
1373
|
"hasDynamicHelp": false,
|
|
1349
1374
|
"hiddenAliases": [],
|
|
1350
|
-
"id": "
|
|
1375
|
+
"id": "providers",
|
|
1351
1376
|
"pluginAlias": "byterover-cli",
|
|
1352
1377
|
"pluginName": "byterover-cli",
|
|
1353
1378
|
"pluginType": "core",
|
|
@@ -1358,39 +1383,19 @@
|
|
|
1358
1383
|
"dist",
|
|
1359
1384
|
"oclif",
|
|
1360
1385
|
"commands",
|
|
1361
|
-
"
|
|
1362
|
-
"
|
|
1386
|
+
"providers",
|
|
1387
|
+
"index.js"
|
|
1363
1388
|
]
|
|
1364
1389
|
},
|
|
1365
|
-
"
|
|
1390
|
+
"providers:list": {
|
|
1366
1391
|
"aliases": [],
|
|
1367
|
-
"args": {
|
|
1368
|
-
|
|
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)",
|
|
1392
|
+
"args": {},
|
|
1393
|
+
"description": "List all available providers and their connection status",
|
|
1375
1394
|
"examples": [
|
|
1376
|
-
"
|
|
1377
|
-
"<%= config.bin %>
|
|
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"
|
|
1395
|
+
"<%= config.bin %> providers list",
|
|
1396
|
+
"<%= config.bin %> providers list --format json"
|
|
1385
1397
|
],
|
|
1386
1398
|
"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
1399
|
"format": {
|
|
1395
1400
|
"description": "Output format (text or json)",
|
|
1396
1401
|
"name": "format",
|
|
@@ -1406,7 +1411,7 @@
|
|
|
1406
1411
|
},
|
|
1407
1412
|
"hasDynamicHelp": false,
|
|
1408
1413
|
"hiddenAliases": [],
|
|
1409
|
-
"id": "
|
|
1414
|
+
"id": "providers:list",
|
|
1410
1415
|
"pluginAlias": "byterover-cli",
|
|
1411
1416
|
"pluginName": "byterover-cli",
|
|
1412
1417
|
"pluginType": "core",
|
|
@@ -1417,53 +1422,25 @@
|
|
|
1417
1422
|
"dist",
|
|
1418
1423
|
"oclif",
|
|
1419
1424
|
"commands",
|
|
1420
|
-
"
|
|
1421
|
-
"
|
|
1425
|
+
"providers",
|
|
1426
|
+
"list.js"
|
|
1422
1427
|
]
|
|
1423
1428
|
},
|
|
1424
|
-
"providers:
|
|
1429
|
+
"providers:switch": {
|
|
1425
1430
|
"aliases": [],
|
|
1426
1431
|
"args": {
|
|
1427
1432
|
"provider": {
|
|
1428
|
-
"description": "Provider ID to
|
|
1433
|
+
"description": "Provider ID to switch to (e.g., anthropic, openai)",
|
|
1429
1434
|
"name": "provider",
|
|
1430
|
-
"required":
|
|
1435
|
+
"required": true
|
|
1431
1436
|
}
|
|
1432
1437
|
},
|
|
1433
|
-
"description": "
|
|
1438
|
+
"description": "Switch the active provider",
|
|
1434
1439
|
"examples": [
|
|
1435
|
-
"<%= config.bin %> providers
|
|
1436
|
-
"<%= config.bin %> providers
|
|
1437
|
-
"<%= config.bin %> providers connect openai --oauth",
|
|
1438
|
-
"<%= config.bin %> providers connect byterover",
|
|
1439
|
-
"<%= config.bin %> providers connect openai-compatible --base-url http://localhost:11434/v1 --api-key sk-xxx"
|
|
1440
|
+
"<%= config.bin %> providers switch anthropic",
|
|
1441
|
+
"<%= config.bin %> providers switch openai --format json"
|
|
1440
1442
|
],
|
|
1441
1443
|
"flags": {
|
|
1442
|
-
"api-key": {
|
|
1443
|
-
"char": "k",
|
|
1444
|
-
"description": "API key for the provider",
|
|
1445
|
-
"name": "api-key",
|
|
1446
|
-
"hasDynamicHelp": false,
|
|
1447
|
-
"multiple": false,
|
|
1448
|
-
"type": "option"
|
|
1449
|
-
},
|
|
1450
|
-
"base-url": {
|
|
1451
|
-
"char": "b",
|
|
1452
|
-
"description": "Base URL for OpenAI-compatible providers (e.g., http://localhost:11434/v1)",
|
|
1453
|
-
"name": "base-url",
|
|
1454
|
-
"hasDynamicHelp": false,
|
|
1455
|
-
"multiple": false,
|
|
1456
|
-
"type": "option"
|
|
1457
|
-
},
|
|
1458
|
-
"code": {
|
|
1459
|
-
"char": "c",
|
|
1460
|
-
"description": "Authorization code for code-paste OAuth providers (e.g., Anthropic). Not applicable to browser-callback providers like OpenAI — use --oauth without --code instead.",
|
|
1461
|
-
"hidden": true,
|
|
1462
|
-
"name": "code",
|
|
1463
|
-
"hasDynamicHelp": false,
|
|
1464
|
-
"multiple": false,
|
|
1465
|
-
"type": "option"
|
|
1466
|
-
},
|
|
1467
1444
|
"format": {
|
|
1468
1445
|
"description": "Output format (text or json)",
|
|
1469
1446
|
"name": "format",
|
|
@@ -1475,25 +1452,11 @@
|
|
|
1475
1452
|
"json"
|
|
1476
1453
|
],
|
|
1477
1454
|
"type": "option"
|
|
1478
|
-
},
|
|
1479
|
-
"model": {
|
|
1480
|
-
"char": "m",
|
|
1481
|
-
"description": "Model to set as active after connecting",
|
|
1482
|
-
"name": "model",
|
|
1483
|
-
"hasDynamicHelp": false,
|
|
1484
|
-
"multiple": false,
|
|
1485
|
-
"type": "option"
|
|
1486
|
-
},
|
|
1487
|
-
"oauth": {
|
|
1488
|
-
"description": "Connect via OAuth (browser-based)",
|
|
1489
|
-
"name": "oauth",
|
|
1490
|
-
"allowNo": false,
|
|
1491
|
-
"type": "boolean"
|
|
1492
1455
|
}
|
|
1493
1456
|
},
|
|
1494
1457
|
"hasDynamicHelp": false,
|
|
1495
1458
|
"hiddenAliases": [],
|
|
1496
|
-
"id": "providers:
|
|
1459
|
+
"id": "providers:switch",
|
|
1497
1460
|
"pluginAlias": "byterover-cli",
|
|
1498
1461
|
"pluginName": "byterover-cli",
|
|
1499
1462
|
"pluginType": "core",
|
|
@@ -1505,24 +1468,38 @@
|
|
|
1505
1468
|
"oclif",
|
|
1506
1469
|
"commands",
|
|
1507
1470
|
"providers",
|
|
1508
|
-
"
|
|
1471
|
+
"switch.js"
|
|
1509
1472
|
]
|
|
1510
1473
|
},
|
|
1511
|
-
"
|
|
1474
|
+
"review:approve": {
|
|
1512
1475
|
"aliases": [],
|
|
1513
1476
|
"args": {
|
|
1514
|
-
"
|
|
1515
|
-
"description": "
|
|
1516
|
-
"name": "
|
|
1477
|
+
"taskId": {
|
|
1478
|
+
"description": "Task ID shown in the curate output (e.g. \"brv review approve abc-123\")",
|
|
1479
|
+
"name": "taskId",
|
|
1517
1480
|
"required": true
|
|
1518
1481
|
}
|
|
1519
1482
|
},
|
|
1520
|
-
"description": "
|
|
1483
|
+
"description": "Approve pending review operations for a curate task",
|
|
1521
1484
|
"examples": [
|
|
1522
|
-
"
|
|
1523
|
-
"<%= config.bin %>
|
|
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"
|
|
1524
1494
|
],
|
|
1525
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
|
+
},
|
|
1526
1503
|
"format": {
|
|
1527
1504
|
"description": "Output format (text or json)",
|
|
1528
1505
|
"name": "format",
|
|
@@ -1538,7 +1515,7 @@
|
|
|
1538
1515
|
},
|
|
1539
1516
|
"hasDynamicHelp": false,
|
|
1540
1517
|
"hiddenAliases": [],
|
|
1541
|
-
"id": "
|
|
1518
|
+
"id": "review:approve",
|
|
1542
1519
|
"pluginAlias": "byterover-cli",
|
|
1543
1520
|
"pluginName": "byterover-cli",
|
|
1544
1521
|
"pluginType": "core",
|
|
@@ -1549,19 +1526,25 @@
|
|
|
1549
1526
|
"dist",
|
|
1550
1527
|
"oclif",
|
|
1551
1528
|
"commands",
|
|
1552
|
-
"
|
|
1553
|
-
"
|
|
1529
|
+
"review",
|
|
1530
|
+
"approve.js"
|
|
1554
1531
|
]
|
|
1555
1532
|
},
|
|
1556
|
-
"
|
|
1533
|
+
"review:base-review-decision": {
|
|
1557
1534
|
"aliases": [],
|
|
1558
|
-
"args": {
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1535
|
+
"args": {
|
|
1536
|
+
"taskId": {
|
|
1537
|
+
"name": "taskId",
|
|
1538
|
+
"required": true
|
|
1539
|
+
}
|
|
1540
|
+
},
|
|
1564
1541
|
"flags": {
|
|
1542
|
+
"file": {
|
|
1543
|
+
"name": "file",
|
|
1544
|
+
"hasDynamicHelp": false,
|
|
1545
|
+
"multiple": true,
|
|
1546
|
+
"type": "option"
|
|
1547
|
+
},
|
|
1565
1548
|
"format": {
|
|
1566
1549
|
"description": "Output format (text or json)",
|
|
1567
1550
|
"name": "format",
|
|
@@ -1577,7 +1560,7 @@
|
|
|
1577
1560
|
},
|
|
1578
1561
|
"hasDynamicHelp": false,
|
|
1579
1562
|
"hiddenAliases": [],
|
|
1580
|
-
"id": "
|
|
1563
|
+
"id": "review:base-review-decision",
|
|
1581
1564
|
"pluginAlias": "byterover-cli",
|
|
1582
1565
|
"pluginName": "byterover-cli",
|
|
1583
1566
|
"pluginType": "core",
|
|
@@ -1588,17 +1571,20 @@
|
|
|
1588
1571
|
"dist",
|
|
1589
1572
|
"oclif",
|
|
1590
1573
|
"commands",
|
|
1591
|
-
"
|
|
1592
|
-
"
|
|
1574
|
+
"review",
|
|
1575
|
+
"base-review-decision.js"
|
|
1593
1576
|
]
|
|
1594
1577
|
},
|
|
1595
|
-
"
|
|
1578
|
+
"review:pending": {
|
|
1596
1579
|
"aliases": [],
|
|
1597
1580
|
"args": {},
|
|
1598
|
-
"description": "List all
|
|
1581
|
+
"description": "List all pending review operations for the current project",
|
|
1599
1582
|
"examples": [
|
|
1600
|
-
"
|
|
1601
|
-
"<%= config.bin %>
|
|
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"
|
|
1602
1588
|
],
|
|
1603
1589
|
"flags": {
|
|
1604
1590
|
"format": {
|
|
@@ -1616,7 +1602,7 @@
|
|
|
1616
1602
|
},
|
|
1617
1603
|
"hasDynamicHelp": false,
|
|
1618
1604
|
"hiddenAliases": [],
|
|
1619
|
-
"id": "
|
|
1605
|
+
"id": "review:pending",
|
|
1620
1606
|
"pluginAlias": "byterover-cli",
|
|
1621
1607
|
"pluginName": "byterover-cli",
|
|
1622
1608
|
"pluginType": "core",
|
|
@@ -1627,25 +1613,39 @@
|
|
|
1627
1613
|
"dist",
|
|
1628
1614
|
"oclif",
|
|
1629
1615
|
"commands",
|
|
1630
|
-
"
|
|
1631
|
-
"
|
|
1616
|
+
"review",
|
|
1617
|
+
"pending.js"
|
|
1632
1618
|
]
|
|
1633
1619
|
},
|
|
1634
|
-
"
|
|
1620
|
+
"review:reject": {
|
|
1635
1621
|
"aliases": [],
|
|
1636
1622
|
"args": {
|
|
1637
|
-
"
|
|
1638
|
-
"description": "
|
|
1639
|
-
"name": "
|
|
1623
|
+
"taskId": {
|
|
1624
|
+
"description": "Task ID shown in the curate output (e.g. \"brv review reject abc-123\")",
|
|
1625
|
+
"name": "taskId",
|
|
1640
1626
|
"required": true
|
|
1641
1627
|
}
|
|
1642
1628
|
},
|
|
1643
|
-
"description": "
|
|
1629
|
+
"description": "Reject pending review operations for a curate task (restores files from backup)",
|
|
1644
1630
|
"examples": [
|
|
1645
|
-
"
|
|
1646
|
-
"<%= config.bin %>
|
|
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"
|
|
1647
1640
|
],
|
|
1648
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
1649
|
"format": {
|
|
1650
1650
|
"description": "Output format (text or json)",
|
|
1651
1651
|
"name": "format",
|
|
@@ -1661,7 +1661,7 @@
|
|
|
1661
1661
|
},
|
|
1662
1662
|
"hasDynamicHelp": false,
|
|
1663
1663
|
"hiddenAliases": [],
|
|
1664
|
-
"id": "
|
|
1664
|
+
"id": "review:reject",
|
|
1665
1665
|
"pluginAlias": "byterover-cli",
|
|
1666
1666
|
"pluginName": "byterover-cli",
|
|
1667
1667
|
"pluginType": "core",
|
|
@@ -1672,8 +1672,8 @@
|
|
|
1672
1672
|
"dist",
|
|
1673
1673
|
"oclif",
|
|
1674
1674
|
"commands",
|
|
1675
|
-
"
|
|
1676
|
-
"
|
|
1675
|
+
"review",
|
|
1676
|
+
"reject.js"
|
|
1677
1677
|
]
|
|
1678
1678
|
},
|
|
1679
1679
|
"space:list": {
|
|
@@ -1877,6 +1877,128 @@
|
|
|
1877
1877
|
"remove.js"
|
|
1878
1878
|
]
|
|
1879
1879
|
},
|
|
1880
|
+
"worktree:add": {
|
|
1881
|
+
"aliases": [],
|
|
1882
|
+
"args": {
|
|
1883
|
+
"path": {
|
|
1884
|
+
"description": "Path to the directory to register as a worktree (relative or absolute)",
|
|
1885
|
+
"name": "path",
|
|
1886
|
+
"required": false
|
|
1887
|
+
}
|
|
1888
|
+
},
|
|
1889
|
+
"description": "Register a directory as a worktree of this project",
|
|
1890
|
+
"examples": [
|
|
1891
|
+
"<%= config.bin %> <%= command.id %> packages/api",
|
|
1892
|
+
"<%= config.bin %> <%= command.id %> ../other-checkout",
|
|
1893
|
+
"<%= config.bin %> <%= command.id %> (auto-detect parent from subdirectory)"
|
|
1894
|
+
],
|
|
1895
|
+
"flags": {
|
|
1896
|
+
"force": {
|
|
1897
|
+
"description": "Replace existing .brv/ directory in target with a worktree pointer",
|
|
1898
|
+
"name": "force",
|
|
1899
|
+
"allowNo": false,
|
|
1900
|
+
"type": "boolean"
|
|
1901
|
+
}
|
|
1902
|
+
},
|
|
1903
|
+
"hasDynamicHelp": false,
|
|
1904
|
+
"hiddenAliases": [],
|
|
1905
|
+
"id": "worktree:add",
|
|
1906
|
+
"pluginAlias": "byterover-cli",
|
|
1907
|
+
"pluginName": "byterover-cli",
|
|
1908
|
+
"pluginType": "core",
|
|
1909
|
+
"strict": true,
|
|
1910
|
+
"enableJsonFlag": false,
|
|
1911
|
+
"isESM": true,
|
|
1912
|
+
"relativePath": [
|
|
1913
|
+
"dist",
|
|
1914
|
+
"oclif",
|
|
1915
|
+
"commands",
|
|
1916
|
+
"worktree",
|
|
1917
|
+
"add.js"
|
|
1918
|
+
]
|
|
1919
|
+
},
|
|
1920
|
+
"worktree": {
|
|
1921
|
+
"aliases": [],
|
|
1922
|
+
"args": {},
|
|
1923
|
+
"description": "Manage worktree links for subdirectories and sibling checkouts",
|
|
1924
|
+
"examples": [
|
|
1925
|
+
"<%= config.bin %> <%= command.id %> --help"
|
|
1926
|
+
],
|
|
1927
|
+
"flags": {},
|
|
1928
|
+
"hasDynamicHelp": false,
|
|
1929
|
+
"hiddenAliases": [],
|
|
1930
|
+
"id": "worktree",
|
|
1931
|
+
"pluginAlias": "byterover-cli",
|
|
1932
|
+
"pluginName": "byterover-cli",
|
|
1933
|
+
"pluginType": "core",
|
|
1934
|
+
"strict": true,
|
|
1935
|
+
"enableJsonFlag": false,
|
|
1936
|
+
"isESM": true,
|
|
1937
|
+
"relativePath": [
|
|
1938
|
+
"dist",
|
|
1939
|
+
"oclif",
|
|
1940
|
+
"commands",
|
|
1941
|
+
"worktree",
|
|
1942
|
+
"index.js"
|
|
1943
|
+
]
|
|
1944
|
+
},
|
|
1945
|
+
"worktree:list": {
|
|
1946
|
+
"aliases": [],
|
|
1947
|
+
"args": {},
|
|
1948
|
+
"description": "Show the current worktree link and list all registered worktrees",
|
|
1949
|
+
"examples": [
|
|
1950
|
+
"<%= config.bin %> <%= command.id %>"
|
|
1951
|
+
],
|
|
1952
|
+
"flags": {},
|
|
1953
|
+
"hasDynamicHelp": false,
|
|
1954
|
+
"hiddenAliases": [],
|
|
1955
|
+
"id": "worktree:list",
|
|
1956
|
+
"pluginAlias": "byterover-cli",
|
|
1957
|
+
"pluginName": "byterover-cli",
|
|
1958
|
+
"pluginType": "core",
|
|
1959
|
+
"strict": true,
|
|
1960
|
+
"enableJsonFlag": false,
|
|
1961
|
+
"isESM": true,
|
|
1962
|
+
"relativePath": [
|
|
1963
|
+
"dist",
|
|
1964
|
+
"oclif",
|
|
1965
|
+
"commands",
|
|
1966
|
+
"worktree",
|
|
1967
|
+
"list.js"
|
|
1968
|
+
]
|
|
1969
|
+
},
|
|
1970
|
+
"worktree:remove": {
|
|
1971
|
+
"aliases": [],
|
|
1972
|
+
"args": {
|
|
1973
|
+
"path": {
|
|
1974
|
+
"description": "Path to the worktree to remove (defaults to cwd)",
|
|
1975
|
+
"name": "path",
|
|
1976
|
+
"required": false
|
|
1977
|
+
}
|
|
1978
|
+
},
|
|
1979
|
+
"description": "Remove a worktree registration and its .brv pointer",
|
|
1980
|
+
"examples": [
|
|
1981
|
+
"<%= config.bin %> <%= command.id %> (remove cwd as worktree)",
|
|
1982
|
+
"<%= config.bin %> <%= command.id %> packages/api (remove from parent)"
|
|
1983
|
+
],
|
|
1984
|
+
"flags": {},
|
|
1985
|
+
"hasDynamicHelp": false,
|
|
1986
|
+
"hiddenAliases": [],
|
|
1987
|
+
"id": "worktree:remove",
|
|
1988
|
+
"pluginAlias": "byterover-cli",
|
|
1989
|
+
"pluginName": "byterover-cli",
|
|
1990
|
+
"pluginType": "core",
|
|
1991
|
+
"strict": true,
|
|
1992
|
+
"enableJsonFlag": false,
|
|
1993
|
+
"isESM": true,
|
|
1994
|
+
"relativePath": [
|
|
1995
|
+
"dist",
|
|
1996
|
+
"oclif",
|
|
1997
|
+
"commands",
|
|
1998
|
+
"worktree",
|
|
1999
|
+
"remove.js"
|
|
2000
|
+
]
|
|
2001
|
+
},
|
|
1880
2002
|
"swarm:curate": {
|
|
1881
2003
|
"aliases": [],
|
|
1882
2004
|
"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.0"
|
|
3084
3084
|
}
|