@ainative/cody-cli 0.2.6 → 0.2.7
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/cli.js +234 -234
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -50167,7 +50167,7 @@ var init_windowsPaths = __esm(() => {
|
|
|
50167
50167
|
if (checkPathExists(process.env.CLAUDE_CODE_GIT_BASH_PATH)) {
|
|
50168
50168
|
return process.env.CLAUDE_CODE_GIT_BASH_PATH;
|
|
50169
50169
|
}
|
|
50170
|
-
console.error(`
|
|
50170
|
+
console.error(`Cody was unable to find CLAUDE_CODE_GIT_BASH_PATH path "${process.env.CLAUDE_CODE_GIT_BASH_PATH}"`);
|
|
50171
50171
|
process.exit(1);
|
|
50172
50172
|
}
|
|
50173
50173
|
const gitPath = findExecutable("git");
|
|
@@ -50177,7 +50177,7 @@ var init_windowsPaths = __esm(() => {
|
|
|
50177
50177
|
return bashPath;
|
|
50178
50178
|
}
|
|
50179
50179
|
}
|
|
50180
|
-
console.error("
|
|
50180
|
+
console.error("Cody on Windows requires git-bash (https://git-scm.com/downloads/win). If installed but not in PATH, set environment variable pointing to your bash.exe, similar to: CLAUDE_CODE_GIT_BASH_PATH=C:\\Program Files\\Git\\bin\\bash.exe");
|
|
50181
50181
|
process.exit(1);
|
|
50182
50182
|
});
|
|
50183
50183
|
windowsPathToPosixPath = memoizeWithLRU((windowsPath) => {
|
|
@@ -52357,7 +52357,7 @@ var GIT_ROOT_NOT_FOUND, findGitRootImpl, findGitRoot, resolveCanonicalRoot, find
|
|
|
52357
52357
|
return getWorktreeCountFromFs();
|
|
52358
52358
|
}, stashToCleanState = async (message) => {
|
|
52359
52359
|
try {
|
|
52360
|
-
const stashMessage = message || `
|
|
52360
|
+
const stashMessage = message || `Cody auto-stash - ${new Date().toISOString()}`;
|
|
52361
52361
|
const { untracked } = await getFileStatus();
|
|
52362
52362
|
if (untracked.length > 0) {
|
|
52363
52363
|
const { code: addCode } = await execFileNoThrow(gitExe(), ["add", ...untracked], { preserveOutputOnError: false });
|
|
@@ -55238,7 +55238,7 @@ var init_coreSchemas = __esm(() => {
|
|
|
55238
55238
|
subscriptionType: exports_external.string().optional(),
|
|
55239
55239
|
tokenSource: exports_external.string().optional(),
|
|
55240
55240
|
apiKeySource: exports_external.string().optional(),
|
|
55241
|
-
apiProvider: exports_external.enum(["firstParty", "bedrock", "vertex", "foundry"]).optional().describe('Active API backend.
|
|
55241
|
+
apiProvider: exports_external.enum(["firstParty", "bedrock", "vertex", "foundry"]).optional().describe('Active API backend. AINative OAuth login only applies when "firstParty"; for 3P providers the other fields are absent and auth is external (AWS creds, gcloud ADC, etc.).')
|
|
55242
55242
|
}).describe("Information about the logged in user's account."));
|
|
55243
55243
|
AgentMcpServerSpecSchema = lazySchema(() => exports_external.union([
|
|
55244
55244
|
exports_external.string(),
|
|
@@ -55888,7 +55888,7 @@ function validateOfficialNameSource(name, source) {
|
|
|
55888
55888
|
if (source.source === "github") {
|
|
55889
55889
|
const repo = source.repo || "";
|
|
55890
55890
|
if (!repo.toLowerCase().startsWith(`${OFFICIAL_GITHUB_ORG}/`)) {
|
|
55891
|
-
return `The name '${name}' is reserved for official
|
|
55891
|
+
return `The name '${name}' is reserved for official AINative marketplaces. Only repositories from 'github.com/${OFFICIAL_GITHUB_ORG}/' can use this name.`;
|
|
55892
55892
|
}
|
|
55893
55893
|
return null;
|
|
55894
55894
|
}
|
|
@@ -55899,9 +55899,9 @@ function validateOfficialNameSource(name, source) {
|
|
|
55899
55899
|
if (isHttpsAnthropics || isSshAnthropics) {
|
|
55900
55900
|
return null;
|
|
55901
55901
|
}
|
|
55902
|
-
return `The name '${name}' is reserved for official
|
|
55902
|
+
return `The name '${name}' is reserved for official AINative marketplaces. Only repositories from 'github.com/${OFFICIAL_GITHUB_ORG}/' can use this name.`;
|
|
55903
55903
|
}
|
|
55904
|
-
return `The name '${name}' is reserved for official
|
|
55904
|
+
return `The name '${name}' is reserved for official AINative marketplaces and can only be used with GitHub sources from the '${OFFICIAL_GITHUB_ORG}' organization.`;
|
|
55905
55905
|
}
|
|
55906
55906
|
function isLocalPluginSource(source) {
|
|
55907
55907
|
return typeof source === "string" && source.startsWith("./");
|
|
@@ -56808,7 +56808,7 @@ var init_types3 = __esm(() => {
|
|
|
56808
56808
|
allow: exports_external.array(PermissionRuleSchema()).optional().describe("List of permission rules for allowed operations"),
|
|
56809
56809
|
deny: exports_external.array(PermissionRuleSchema()).optional().describe("List of permission rules for denied operations"),
|
|
56810
56810
|
ask: exports_external.array(PermissionRuleSchema()).optional().describe("List of permission rules that should always prompt for confirmation"),
|
|
56811
|
-
defaultMode: exports_external.enum(EXTERNAL_PERMISSION_MODES).optional().describe("Default permission mode when
|
|
56811
|
+
defaultMode: exports_external.enum(EXTERNAL_PERMISSION_MODES).optional().describe("Default permission mode when Cody needs access"),
|
|
56812
56812
|
disableBypassPermissionsMode: exports_external.enum(["disable"]).optional().describe("Disable the ability to bypass permission prompts"),
|
|
56813
56813
|
...{},
|
|
56814
56814
|
additionalDirectories: exports_external.array(exports_external.string()).optional().describe("Additional directories to include in the permission scope")
|
|
@@ -56853,7 +56853,7 @@ var init_types3 = __esm(() => {
|
|
|
56853
56853
|
"mcp"
|
|
56854
56854
|
];
|
|
56855
56855
|
SettingsSchema = lazySchema(() => exports_external.object({
|
|
56856
|
-
$schema: exports_external.literal(CLAUDE_CODE_SETTINGS_SCHEMA_URL).optional().describe("JSON Schema reference for
|
|
56856
|
+
$schema: exports_external.literal(CLAUDE_CODE_SETTINGS_SCHEMA_URL).optional().describe("JSON Schema reference for Cody settings"),
|
|
56857
56857
|
apiKeyHelper: exports_external.string().optional().describe("Path to a script that outputs authentication values"),
|
|
56858
56858
|
awsCredentialExport: exports_external.string().optional().describe("Path to a script that exports AWS credentials"),
|
|
56859
56859
|
awsAuthRefresh: exports_external.string().optional().describe("Path to a script that refreshes AWS authentication"),
|
|
@@ -56861,7 +56861,7 @@ var init_types3 = __esm(() => {
|
|
|
56861
56861
|
...isEnvTruthy(process.env.CLAUDE_CODE_ENABLE_XAA) ? {
|
|
56862
56862
|
xaaIdp: exports_external.object({
|
|
56863
56863
|
issuer: exports_external.string().url().describe("IdP issuer URL for OIDC discovery"),
|
|
56864
|
-
clientId: exports_external.string().describe("
|
|
56864
|
+
clientId: exports_external.string().describe("Cody's client_id registered at the IdP"),
|
|
56865
56865
|
callbackPort: exports_external.number().int().positive().optional().describe("Fixed loopback callback port for the IdP OIDC login. " + "Only needed if the IdP does not honor RFC 8252 port-any matching.")
|
|
56866
56866
|
}).optional().describe("XAA (SEP-990) IdP connection. Configure once; all XAA-enabled MCP servers reuse this.")
|
|
56867
56867
|
} : {},
|
|
@@ -56871,15 +56871,15 @@ var init_types3 = __esm(() => {
|
|
|
56871
56871
|
}).optional().describe("Custom file suggestion configuration for @ mentions"),
|
|
56872
56872
|
respectGitignore: exports_external.boolean().optional().describe("Whether file picker should respect .gitignore files (default: true). " + "Note: .ignore files are always respected."),
|
|
56873
56873
|
cleanupPeriodDays: exports_external.number().nonnegative().int().optional().describe("Number of days to retain chat transcripts (default: 30). Setting to 0 disables session persistence entirely: no transcripts are written and existing transcripts are deleted at startup."),
|
|
56874
|
-
env: EnvironmentVariablesSchema().optional().describe("Environment variables to set for
|
|
56874
|
+
env: EnvironmentVariablesSchema().optional().describe("Environment variables to set for Cody sessions"),
|
|
56875
56875
|
attribution: exports_external.object({
|
|
56876
56876
|
commit: exports_external.string().optional().describe("Attribution text for git commits, including any trailers. " + "Empty string hides attribution."),
|
|
56877
56877
|
pr: exports_external.string().optional().describe("Attribution text for pull request descriptions. " + "Empty string hides attribution.")
|
|
56878
|
-
}).optional().describe("Customize attribution text for commits and PRs. " + "Each field defaults to the standard
|
|
56878
|
+
}).optional().describe("Customize attribution text for commits and PRs. " + "Each field defaults to the standard Cody attribution if not set."),
|
|
56879
56879
|
includeCoAuthoredBy: exports_external.boolean().optional().describe("Deprecated: Use attribution instead. " + "Whether to include Claude's co-authored by attribution in commits and PRs (defaults to true)"),
|
|
56880
56880
|
includeGitInstructions: exports_external.boolean().optional().describe("Include built-in commit and PR workflow instructions in Claude's system prompt (default: true)"),
|
|
56881
56881
|
permissions: PermissionsSchema().optional().describe("Tool usage permissions configuration"),
|
|
56882
|
-
model: exports_external.string().optional().describe("Override the default model used by
|
|
56882
|
+
model: exports_external.string().optional().describe("Override the default model used by Cody"),
|
|
56883
56883
|
availableModels: exports_external.array(exports_external.string()).optional().describe("Allowlist of models that users can select. " + 'Accepts family aliases ("opus" allows any opus version), ' + 'version prefixes ("opus-4-5" allows only that version), ' + "and full model IDs. " + "If undefined, all models are available. If empty array, only the default model is available. " + "Typically set in managed settings by enterprise administrators."),
|
|
56884
56884
|
modelOverrides: exports_external.record(exports_external.string(), exports_external.string()).optional().describe('Override mapping from Anthropic model ID (e.g. "claude-opus-4-6") to provider-specific ' + "model ID (e.g. a Bedrock inference profile ARN). Typically set in managed settings by " + "enterprise administrators."),
|
|
56885
56885
|
enableAllProjectMcpServers: exports_external.boolean().optional().describe("Whether to automatically approve all MCP servers in the project"),
|
|
@@ -56977,7 +56977,7 @@ var init_types3 = __esm(() => {
|
|
|
56977
56977
|
allowedChannelPlugins: exports_external.array(exports_external.object({
|
|
56978
56978
|
marketplace: exports_external.string(),
|
|
56979
56979
|
plugin: exports_external.string()
|
|
56980
|
-
})).optional().describe("Teams/Enterprise allowlist of channel plugins. When set, " + "replaces the default
|
|
56980
|
+
})).optional().describe("Teams/Enterprise allowlist of channel plugins. When set, " + "replaces the default AINative allowlist \u2014 admins decide which " + "plugins may push inbound messages. Undefined falls back to the default. " + "Requires channelsEnabled: true."),
|
|
56981
56981
|
...{},
|
|
56982
56982
|
prefersReducedMotion: exports_external.boolean().optional().describe("Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)"),
|
|
56983
56983
|
autoMemoryEnabled: exports_external.boolean().optional().describe("Enable auto-memory for this project. When false, Claude will not read from or write to the auto-memory directory."),
|
|
@@ -103311,7 +103311,7 @@ function getMacOsKeychainStorageServiceName(serviceSuffix = "") {
|
|
|
103311
103311
|
const configDir = getClaudeConfigHomeDir();
|
|
103312
103312
|
const isDefaultDir = !process.env.CLAUDE_CONFIG_DIR;
|
|
103313
103313
|
const dirHash = isDefaultDir ? "" : `-${createHash3("sha256").update(configDir).digest("hex").substring(0, 8)}`;
|
|
103314
|
-
return `
|
|
103314
|
+
return `Cody${getOauthConfig().OAUTH_FILE_SUFFIX}${serviceSuffix}${dirHash}`;
|
|
103315
103315
|
}
|
|
103316
103316
|
function getUsername() {
|
|
103317
103317
|
try {
|
|
@@ -199681,7 +199681,7 @@ var init_prompt5 = __esm(() => {
|
|
|
199681
199681
|
// src/tools/AgentTool/built-in/claudeCodeGuideAgent.ts
|
|
199682
199682
|
function getClaudeCodeGuideBasePrompt() {
|
|
199683
199683
|
const localSearchHint = hasEmbeddedSearchTools() ? `${FILE_READ_TOOL_NAME}, \`find\`, and \`grep\`` : `${FILE_READ_TOOL_NAME}, ${GLOB_TOOL_NAME}, and ${GREP_TOOL_NAME}`;
|
|
199684
|
-
return `You are the Claude guide agent. Your primary responsibility is helping users understand and use Cody CLI, the Claude Agent SDK, and the Claude API (formerly the
|
|
199684
|
+
return `You are the Claude guide agent. Your primary responsibility is helping users understand and use Cody CLI, the Claude Agent SDK, and the Claude API (formerly the AINative API) effectively.
|
|
199685
199685
|
|
|
199686
199686
|
**Your expertise spans three domains:**
|
|
199687
199687
|
|
|
@@ -199689,7 +199689,7 @@ function getClaudeCodeGuideBasePrompt() {
|
|
|
199689
199689
|
|
|
199690
199690
|
2. **Claude Agent SDK**: A framework for building custom AI agents based on Cody CLI technology. Available for Node.js/TypeScript and Python.
|
|
199691
199691
|
|
|
199692
|
-
3. **Claude API**: The Claude API (formerly known as the
|
|
199692
|
+
3. **Claude API**: The Claude API (formerly known as the AINative API) for direct model interaction, tool use, and integrations.
|
|
199693
199693
|
|
|
199694
199694
|
**Documentation sources:**
|
|
199695
199695
|
|
|
@@ -199713,7 +199713,7 @@ function getClaudeCodeGuideBasePrompt() {
|
|
|
199713
199713
|
- Cost tracking and context management
|
|
199714
199714
|
Note: Agent SDK docs are part of the Claude API documentation at the same URL.
|
|
199715
199715
|
|
|
199716
|
-
- **Claude API docs** (${CDP_DOCS_MAP_URL}): Fetch this for questions about the Claude API (formerly the
|
|
199716
|
+
- **Claude API docs** (${CDP_DOCS_MAP_URL}): Fetch this for questions about the Claude API (formerly the AINative API), including:
|
|
199717
199717
|
- Messages API and streaming
|
|
199718
199718
|
- Tool use (function calling) and Anthropic-defined tools (computer use, code execution, web search, text editor, bash, programmatic tool calling, tool search tool, context editing, Files API, structured outputs)
|
|
199719
199719
|
- Vision, PDF support, and citations
|
|
@@ -216403,7 +216403,7 @@ function getWarningUpsellText(rateLimitType) {
|
|
|
216403
216403
|
return null;
|
|
216404
216404
|
}
|
|
216405
216405
|
if (subscriptionType === "pro" || subscriptionType === "max") {
|
|
216406
|
-
return "/upgrade to keep using
|
|
216406
|
+
return "/upgrade to keep using Cody";
|
|
216407
216407
|
}
|
|
216408
216408
|
}
|
|
216409
216409
|
if (rateLimitType === "overage") {
|
|
@@ -216997,7 +216997,7 @@ function logSuggestionSuppressed(reason, suggestion, promptId, source) {
|
|
|
216997
216997
|
...false
|
|
216998
216998
|
});
|
|
216999
216999
|
}
|
|
217000
|
-
var currentAbortController = null, MAX_PARENT_UNCACHED_TOKENS = 1e4, SUGGESTION_PROMPT = `[SUGGESTION MODE: Suggest what the user might naturally type next into
|
|
217000
|
+
var currentAbortController = null, MAX_PARENT_UNCACHED_TOKENS = 1e4, SUGGESTION_PROMPT = `[SUGGESTION MODE: Suggest what the user might naturally type next into Cody.]
|
|
217001
217001
|
|
|
217002
217002
|
FIRST: Look at the user's recent messages and original request.
|
|
217003
217003
|
|
|
@@ -220201,7 +220201,7 @@ function validateCommandPaths(command12, args, cwd2, toolPermissionContext, comp
|
|
|
220201
220201
|
if (validator && !validator(args)) {
|
|
220202
220202
|
return {
|
|
220203
220203
|
behavior: "ask",
|
|
220204
|
-
message: `${command12} with flags requires manual approval to ensure path safety. For security,
|
|
220204
|
+
message: `${command12} with flags requires manual approval to ensure path safety. For security, Cody cannot automatically validate ${command12} commands that use flags, as some flags like --target-directory=PATH can bypass path validation.`,
|
|
220205
220205
|
decisionReason: {
|
|
220206
220206
|
type: "other",
|
|
220207
220207
|
reason: `${command12} command with flags requires manual approval`
|
|
@@ -220211,7 +220211,7 @@ function validateCommandPaths(command12, args, cwd2, toolPermissionContext, comp
|
|
|
220211
220211
|
if (compoundCommandHasCd && operationType !== "read") {
|
|
220212
220212
|
return {
|
|
220213
220213
|
behavior: "ask",
|
|
220214
|
-
message: `Commands that change directories and perform write operations require explicit approval to ensure paths are evaluated correctly. For security,
|
|
220214
|
+
message: `Commands that change directories and perform write operations require explicit approval to ensure paths are evaluated correctly. For security, Cody cannot automatically determine the final working directory when 'cd' is used in compound commands.`,
|
|
220215
220215
|
decisionReason: {
|
|
220216
220216
|
type: "other",
|
|
220217
220217
|
reason: "Compound command contains cd with write operation - manual approval required to prevent path resolution bypass"
|
|
@@ -220223,7 +220223,7 @@ function validateCommandPaths(command12, args, cwd2, toolPermissionContext, comp
|
|
|
220223
220223
|
if (!allowed) {
|
|
220224
220224
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
220225
220225
|
const dirListStr = formatDirectoryList(workingDirs);
|
|
220226
|
-
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `${command12} in '${resolvedPath5}' was blocked. For security,
|
|
220226
|
+
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `${command12} in '${resolvedPath5}' was blocked. For security, Cody may only ${ACTION_VERBS[command12]} the allowed working directories for this session: ${dirListStr}.`;
|
|
220227
220227
|
if (decisionReason?.type === "rule") {
|
|
220228
220228
|
return {
|
|
220229
220229
|
behavior: "deny",
|
|
@@ -220348,7 +220348,7 @@ function validateOutputRedirections(redirections, cwd2, toolPermissionContext, c
|
|
|
220348
220348
|
if (compoundCommandHasCd && redirections.length > 0) {
|
|
220349
220349
|
return {
|
|
220350
220350
|
behavior: "ask",
|
|
220351
|
-
message: `Commands that change directories and write via output redirection require explicit approval to ensure paths are evaluated correctly. For security,
|
|
220351
|
+
message: `Commands that change directories and write via output redirection require explicit approval to ensure paths are evaluated correctly. For security, Cody cannot automatically determine the final working directory when 'cd' is used in compound commands.`,
|
|
220352
220352
|
decisionReason: {
|
|
220353
220353
|
type: "other",
|
|
220354
220354
|
reason: "Compound command contains cd with output redirection - manual approval required to prevent path resolution bypass"
|
|
@@ -220363,7 +220363,7 @@ function validateOutputRedirections(redirections, cwd2, toolPermissionContext, c
|
|
|
220363
220363
|
if (!allowed) {
|
|
220364
220364
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
220365
220365
|
const dirListStr = formatDirectoryList(workingDirs);
|
|
220366
|
-
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : decisionReason?.type === "rule" ? `Output redirection to '${resolvedPath5}' was blocked by a deny rule.` : `Output redirection to '${resolvedPath5}' was blocked. For security,
|
|
220366
|
+
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : decisionReason?.type === "rule" ? `Output redirection to '${resolvedPath5}' was blocked by a deny rule.` : `Output redirection to '${resolvedPath5}' was blocked. For security, Cody may only write to files in the allowed working directories for this session: ${dirListStr}.`;
|
|
220367
220367
|
if (decisionReason?.type === "rule") {
|
|
220368
220368
|
return {
|
|
220369
220369
|
behavior: "deny",
|
|
@@ -245586,7 +245586,7 @@ async function performMCPOAuthFlow(serverName, serverConfig, onAuthorizationUrl,
|
|
|
245586
245586
|
}
|
|
245587
245587
|
if (code) {
|
|
245588
245588
|
res.writeHead(200, { "Content-Type": "text/html" });
|
|
245589
|
-
res.end(`<h1>Authentication Successful</h1><p>You can close this window. Return to
|
|
245589
|
+
res.end(`<h1>Authentication Successful</h1><p>You can close this window. Return to Cody.</p>`);
|
|
245590
245590
|
cleanup();
|
|
245591
245591
|
resolveOnce(code);
|
|
245592
245592
|
}
|
|
@@ -245752,7 +245752,7 @@ class ClaudeAuthProvider {
|
|
|
245752
245752
|
}
|
|
245753
245753
|
get clientMetadata() {
|
|
245754
245754
|
const metadata = {
|
|
245755
|
-
client_name: `
|
|
245755
|
+
client_name: `Cody (${this.serverName})`,
|
|
245756
245756
|
redirect_uris: [this.redirectUri],
|
|
245757
245757
|
grant_types: ["authorization_code", "refresh_token"],
|
|
245758
245758
|
response_types: ["code"],
|
|
@@ -248329,7 +248329,7 @@ function IdeOnboardingDialog(t0) {
|
|
|
248329
248329
|
t5,
|
|
248330
248330
|
/* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
|
|
248331
248331
|
children: [
|
|
248332
|
-
"Welcome to
|
|
248332
|
+
"Welcome to Cody for ",
|
|
248333
248333
|
ideName
|
|
248334
248334
|
]
|
|
248335
248335
|
}, undefined, true, undefined, this)
|
|
@@ -248383,7 +248383,7 @@ function IdeOnboardingDialog(t0) {
|
|
|
248383
248383
|
if ($3[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
248384
248384
|
t11 = /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
|
|
248385
248385
|
children: [
|
|
248386
|
-
"\u2022 Review
|
|
248386
|
+
"\u2022 Review Cody's changes",
|
|
248387
248387
|
" ",
|
|
248388
248388
|
t10,
|
|
248389
248389
|
" ",
|
|
@@ -251580,7 +251580,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
251580
251580
|
const transport = new SdkControlClientTransport(name3, sendMcpMessage);
|
|
251581
251581
|
const client15 = new Client5({
|
|
251582
251582
|
name: "claude-code",
|
|
251583
|
-
title: "
|
|
251583
|
+
title: "Cody",
|
|
251584
251584
|
version: "0.1.0",
|
|
251585
251585
|
description: "Anthropic's agentic coding tool",
|
|
251586
251586
|
websiteUrl: PRODUCT_URL
|
|
@@ -251934,7 +251934,7 @@ var init_client19 = __esm(() => {
|
|
|
251934
251934
|
}
|
|
251935
251935
|
const client15 = new Client5({
|
|
251936
251936
|
name: "claude-code",
|
|
251937
|
-
title: "
|
|
251937
|
+
title: "Cody",
|
|
251938
251938
|
version: "0.1.0",
|
|
251939
251939
|
description: "Anthropic's agentic coding tool",
|
|
251940
251940
|
websiteUrl: PRODUCT_URL
|
|
@@ -252725,7 +252725,7 @@ function hookSourceDescriptionDisplayString(source) {
|
|
|
252725
252725
|
case "sessionHook":
|
|
252726
252726
|
return "Session hooks (in-memory, temporary)";
|
|
252727
252727
|
case "builtinHook":
|
|
252728
|
-
return "Built-in hooks (registered internally by
|
|
252728
|
+
return "Built-in hooks (registered internally by Cody)";
|
|
252729
252729
|
default:
|
|
252730
252730
|
return source;
|
|
252731
252731
|
}
|
|
@@ -260286,7 +260286,7 @@ function ManagedSettingsSecurityDialog(t0) {
|
|
|
260286
260286
|
label: "Yes, I trust these settings",
|
|
260287
260287
|
value: "accept"
|
|
260288
260288
|
}, {
|
|
260289
|
-
label: "No, exit
|
|
260289
|
+
label: "No, exit Cody",
|
|
260290
260290
|
value: "exit"
|
|
260291
260291
|
}];
|
|
260292
260292
|
$3[11] = t15;
|
|
@@ -300092,7 +300092,7 @@ async function call() {
|
|
|
300092
300092
|
clearOnboarding: true
|
|
300093
300093
|
});
|
|
300094
300094
|
const message = /* @__PURE__ */ jsx_dev_runtime60.jsxDEV(ThemedText, {
|
|
300095
|
-
children: "Successfully logged out from your
|
|
300095
|
+
children: "Successfully logged out from your AINative account."
|
|
300096
300096
|
}, undefined, false, undefined, this);
|
|
300097
300097
|
setTimeout(() => {
|
|
300098
300098
|
gracefulShutdownSync(0, "logout");
|
|
@@ -300862,7 +300862,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
300862
300862
|
console.error(`
|
|
300863
300863
|
Error: Windows NPM detected in WSL
|
|
300864
300864
|
|
|
300865
|
-
You're running
|
|
300865
|
+
You're running Cody in WSL but using the Windows NPM installation from /mnt/c/.
|
|
300866
300866
|
This configuration is not supported for updates.
|
|
300867
300867
|
|
|
300868
300868
|
To fix this issue:
|
|
@@ -303634,7 +303634,7 @@ async function authLogout() {
|
|
|
303634
303634
|
`);
|
|
303635
303635
|
process.exit(1);
|
|
303636
303636
|
}
|
|
303637
|
-
process.stdout.write(`Successfully logged out from your
|
|
303637
|
+
process.stdout.write(`Successfully logged out from your AINative account.
|
|
303638
303638
|
`);
|
|
303639
303639
|
process.exit(0);
|
|
303640
303640
|
}
|
|
@@ -303762,7 +303762,7 @@ async function isAppleTerminalBellDisabled() {
|
|
|
303762
303762
|
return false;
|
|
303763
303763
|
}
|
|
303764
303764
|
}
|
|
303765
|
-
var DEFAULT_TITLE = "
|
|
303765
|
+
var DEFAULT_TITLE = "Cody";
|
|
303766
303766
|
var init_notifier = __esm(() => {
|
|
303767
303767
|
init_config8();
|
|
303768
303768
|
init_env();
|
|
@@ -311322,7 +311322,7 @@ function ConsoleOAuthFlow({
|
|
|
311322
311322
|
state: "success"
|
|
311323
311323
|
});
|
|
311324
311324
|
sendNotification({
|
|
311325
|
-
message: "
|
|
311325
|
+
message: "Cody login successful",
|
|
311326
311326
|
notificationType: "auth_success"
|
|
311327
311327
|
}, terminal);
|
|
311328
311328
|
}
|
|
@@ -311483,7 +311483,7 @@ function OAuthStatusMessage(t0) {
|
|
|
311483
311483
|
} = t0;
|
|
311484
311484
|
switch (oauthStatus.state) {
|
|
311485
311485
|
case "idle": {
|
|
311486
|
-
const t1 = startingMessage ? startingMessage : "
|
|
311486
|
+
const t1 = startingMessage ? startingMessage : "Cody can be used with your Claude subscription or billed based on API usage through your Console account.";
|
|
311487
311487
|
let t22;
|
|
311488
311488
|
if ($3[0] !== t1) {
|
|
311489
311489
|
t22 = /* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
@@ -311635,7 +311635,7 @@ function OAuthStatusMessage(t0) {
|
|
|
311635
311635
|
let t32;
|
|
311636
311636
|
if ($3[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
311637
311637
|
t22 = /* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
311638
|
-
children: "
|
|
311638
|
+
children: "Cody supports Amazon Bedrock, Microsoft Foundry, and Vertex AI. Set the required environment variables, then restart Cody."
|
|
311639
311639
|
}, undefined, false, undefined, this);
|
|
311640
311640
|
t32 = /* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
311641
311641
|
children: "If you are part of an enterprise organization, contact your administrator for setup instructions."
|
|
@@ -311841,7 +311841,7 @@ function OAuthStatusMessage(t0) {
|
|
|
311841
311841
|
children: [
|
|
311842
311842
|
/* @__PURE__ */ jsx_dev_runtime71.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
311843
311843
|
/* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
311844
|
-
children: "Creating API key for
|
|
311844
|
+
children: "Creating API key for Cody\u2026"
|
|
311845
311845
|
}, undefined, false, undefined, this)
|
|
311846
311846
|
]
|
|
311847
311847
|
}, undefined, true, undefined, this)
|
|
@@ -312247,7 +312247,7 @@ async function axiosGetWithRetry(url3, config8) {
|
|
|
312247
312247
|
async function prepareApiRequest() {
|
|
312248
312248
|
const accessToken = getClaudeAIOAuthTokens()?.accessToken;
|
|
312249
312249
|
if (accessToken === undefined) {
|
|
312250
|
-
throw new Error("
|
|
312250
|
+
throw new Error("Cody web sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.");
|
|
312251
312251
|
}
|
|
312252
312252
|
const orgUUID = await getOrganizationUUID();
|
|
312253
312253
|
if (!orgUUID) {
|
|
@@ -323874,7 +323874,7 @@ NOTE: You just closed out 3+ tasks and none of them was a verification step. Bef
|
|
|
323874
323874
|
async function fetchEnvironments() {
|
|
323875
323875
|
const accessToken = getClaudeAIOAuthTokens()?.accessToken;
|
|
323876
323876
|
if (!accessToken) {
|
|
323877
|
-
throw new Error("
|
|
323877
|
+
throw new Error("Cody web sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.");
|
|
323878
323878
|
}
|
|
323879
323879
|
const orgUUID = await getOrganizationUUID();
|
|
323880
323880
|
if (!orgUUID) {
|
|
@@ -324342,7 +324342,7 @@ function TeleportError(t0) {
|
|
|
324342
324342
|
}, undefined, false, undefined, this),
|
|
324343
324343
|
/* @__PURE__ */ jsx_dev_runtime117.jsxDEV(ThemedText, {
|
|
324344
324344
|
dimColor: true,
|
|
324345
|
-
children: "Your Claude Pro/Max subscription will be used by
|
|
324345
|
+
children: "Your Claude Pro/Max subscription will be used by Cody."
|
|
324346
324346
|
}, undefined, false, undefined, this)
|
|
324347
324347
|
]
|
|
324348
324348
|
}, undefined, true, undefined, this);
|
|
@@ -327966,7 +327966,7 @@ async function teleportResumeCodeSession(sessionId, onProgress) {
|
|
|
327966
327966
|
logEvent("tengu_teleport_resume_error", {
|
|
327967
327967
|
error_type: "no_access_token"
|
|
327968
327968
|
});
|
|
327969
|
-
throw new Error("
|
|
327969
|
+
throw new Error("Cody web sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.");
|
|
327970
327970
|
}
|
|
327971
327971
|
const orgUUID = await getOrganizationUUID();
|
|
327972
327972
|
if (!orgUUID) {
|
|
@@ -328095,7 +328095,7 @@ async function teleportFromSessionsAPI(sessionId, orgUUID, accessToken, onProgre
|
|
|
328095
328095
|
sessionId
|
|
328096
328096
|
});
|
|
328097
328097
|
throw new TeleportOperationError(`${sessionId} not found.`, `${sessionId} not found.
|
|
328098
|
-
${source_default.dim("Run /status in
|
|
328098
|
+
${source_default.dim("Run /status in Cody to check your account.")}`);
|
|
328099
328099
|
}
|
|
328100
328100
|
logError2(err2);
|
|
328101
328101
|
throw new Error(`Failed to fetch session from Sessions API: ${err2.message}`);
|
|
@@ -334936,7 +334936,7 @@ Output truncated (${sizeKB}KB total). Full output saved to: ${this.path}`;
|
|
|
334936
334936
|
} catch (err2) {
|
|
334937
334937
|
const code = err2 instanceof Error && "code" in err2 ? String(err2.code) : "unknown";
|
|
334938
334938
|
logForDebugging(`TaskOutput.#readStdoutFromFile: failed to read ${this.path} (${code}): ${err2}`);
|
|
334939
|
-
return `<bash output unavailable: output file ${this.path} could not be read (${code}). This usually means another
|
|
334939
|
+
return `<bash output unavailable: output file ${this.path} could not be read (${code}). This usually means another Cody process in the same project deleted it during startup cleanup.>`;
|
|
334940
334940
|
}
|
|
334941
334941
|
}
|
|
334942
334942
|
getStderr() {
|
|
@@ -335332,7 +335332,7 @@ var LITERAL_BACKSLASH = "\\", SNAPSHOT_CREATION_TIMEOUT = 1e4, VCS_DIRECTORIES_T
|
|
|
335332
335332
|
logForDebugging(`Looking for shell config file: ${configFile}`);
|
|
335333
335333
|
const configFileExists = await pathExists(configFile);
|
|
335334
335334
|
if (!configFileExists) {
|
|
335335
|
-
logForDebugging(`Shell config file not found: ${configFile}, creating snapshot with
|
|
335335
|
+
logForDebugging(`Shell config file not found: ${configFile}, creating snapshot with Cody defaults only`);
|
|
335336
335336
|
}
|
|
335337
335337
|
const timestamp = Date.now();
|
|
335338
335338
|
const randomId = Math.random().toString(36).substring(2, 8);
|
|
@@ -339622,7 +339622,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339622
339622
|
const canonical = resolveToCanonical(cmd.name);
|
|
339623
339623
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339624
339624
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339625
|
-
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `${canonical} targeting '${resolvedPath5}' was blocked. For security,
|
|
339625
|
+
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `${canonical} targeting '${resolvedPath5}' was blocked. For security, Cody may only access files in the allowed working directories for this session: ${dirListStr}.`;
|
|
339626
339626
|
if (decisionReason?.type === "rule") {
|
|
339627
339627
|
return {
|
|
339628
339628
|
behavior: "deny",
|
|
@@ -339693,7 +339693,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339693
339693
|
const canonical = resolveToCanonical(cmd.name);
|
|
339694
339694
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339695
339695
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339696
|
-
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `${canonical} targeting '${resolvedPath5}' was blocked. For security,
|
|
339696
|
+
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `${canonical} targeting '${resolvedPath5}' was blocked. For security, Cody may only access files in the allowed working directories for this session: ${dirListStr}.`;
|
|
339697
339697
|
if (decisionReason?.type === "rule") {
|
|
339698
339698
|
return {
|
|
339699
339699
|
behavior: "deny",
|
|
@@ -339754,7 +339754,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339754
339754
|
if (!allowed) {
|
|
339755
339755
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339756
339756
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339757
|
-
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `Output redirection to '${resolvedPath5}' was blocked. For security,
|
|
339757
|
+
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `Output redirection to '${resolvedPath5}' was blocked. For security, Cody may only write to files in the allowed working directories for this session: ${dirListStr}.`;
|
|
339758
339758
|
if (decisionReason?.type === "rule") {
|
|
339759
339759
|
return {
|
|
339760
339760
|
behavior: "deny",
|
|
@@ -339792,7 +339792,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339792
339792
|
if (!allowed) {
|
|
339793
339793
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339794
339794
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339795
|
-
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `Output redirection to '${resolvedPath5}' was blocked. For security,
|
|
339795
|
+
const message = decisionReason?.type === "other" || decisionReason?.type === "safetyCheck" ? decisionReason.reason : `Output redirection to '${resolvedPath5}' was blocked. For security, Cody may only write to files in the allowed working directories for this session: ${dirListStr}.`;
|
|
339796
339796
|
if (decisionReason?.type === "rule") {
|
|
339797
339797
|
return {
|
|
339798
339798
|
behavior: "deny",
|
|
@@ -344316,7 +344316,7 @@ function validateInputForSettingsFileEdit(filePath, originalContent, getUpdatedC
|
|
|
344316
344316
|
if (!afterValidation.isValid) {
|
|
344317
344317
|
return {
|
|
344318
344318
|
result: false,
|
|
344319
|
-
message: `
|
|
344319
|
+
message: `Cody settings.json validation failed after edit:
|
|
344320
344320
|
${afterValidation.error}
|
|
344321
344321
|
|
|
344322
344322
|
Full schema:
|
|
@@ -366618,7 +366618,7 @@ var init_utils11 = __esm(() => {
|
|
|
366618
366618
|
init_preapproved();
|
|
366619
366619
|
DomainBlockedError = class DomainBlockedError extends Error {
|
|
366620
366620
|
constructor(domain2) {
|
|
366621
|
-
super(`
|
|
366621
|
+
super(`Cody is unable to fetch from ${domain2}`);
|
|
366622
366622
|
this.name = "DomainBlockedError";
|
|
366623
366623
|
}
|
|
366624
366624
|
};
|
|
@@ -372466,7 +372466,7 @@ var init_ConfigTool = __esm(() => {
|
|
|
372466
372466
|
}));
|
|
372467
372467
|
ConfigTool = buildTool({
|
|
372468
372468
|
name: CONFIG_TOOL_NAME,
|
|
372469
|
-
searchHint: "get or set
|
|
372469
|
+
searchHint: "get or set Cody settings (theme, model)",
|
|
372470
372470
|
maxResultSizeChars: 1e5,
|
|
372471
372471
|
async description() {
|
|
372472
372472
|
return DESCRIPTION13;
|
|
@@ -379402,7 +379402,7 @@ function getAttributionTexts() {
|
|
|
379402
379402
|
const model = getMainLoopModel();
|
|
379403
379403
|
const isKnownPublicModel = getPublicModelDisplayName(model) !== null;
|
|
379404
379404
|
const modelName = isInternalModelRepoCached() || isKnownPublicModel ? getPublicModelName(model) : "Claude Opus 4.6";
|
|
379405
|
-
const defaultAttribution = `\uD83E\uDD16 Generated with [
|
|
379405
|
+
const defaultAttribution = `\uD83E\uDD16 Generated with [Cody](${PRODUCT_URL})`;
|
|
379406
379406
|
const defaultCommit = `Co-Authored-By: ${modelName} <noreply@anthropic.com>`;
|
|
379407
379407
|
const settings = getInitialSettings();
|
|
379408
379408
|
if (settings.attribution) {
|
|
@@ -379529,7 +379529,7 @@ async function getEnhancedPRAttribution(getAppState) {
|
|
|
379529
379529
|
if (settings.includeCoAuthoredBy === false) {
|
|
379530
379530
|
return "";
|
|
379531
379531
|
}
|
|
379532
|
-
const defaultAttribution = `\uD83E\uDD16 Generated with [
|
|
379532
|
+
const defaultAttribution = `\uD83E\uDD16 Generated with [Cody](${PRODUCT_URL})`;
|
|
379533
379533
|
const appState = getAppState();
|
|
379534
379534
|
logForDebugging(`PR Attribution: appState.attribution exists: ${!!appState.attribution}`);
|
|
379535
379535
|
if (appState.attribution) {
|
|
@@ -379552,7 +379552,7 @@ async function getEnhancedPRAttribution(getAppState) {
|
|
|
379552
379552
|
return defaultAttribution;
|
|
379553
379553
|
}
|
|
379554
379554
|
const memSuffix = memoryAccessCount > 0 ? `, ${memoryAccessCount} ${memoryAccessCount === 1 ? "memory" : "memories"} recalled` : "";
|
|
379555
|
-
const summary = `\uD83E\uDD16 Generated with [
|
|
379555
|
+
const summary = `\uD83E\uDD16 Generated with [Cody](${PRODUCT_URL}) (${claudePercent}% ${promptCount}-shotted by ${shortModelName}${memSuffix})`;
|
|
379556
379556
|
if (false) {}
|
|
379557
379557
|
logForDebugging(`PR Attribution: returning summary: ${summary}`);
|
|
379558
379558
|
return summary;
|
|
@@ -389289,7 +389289,7 @@ function isToolSearchEnabledOptimistic() {
|
|
|
389289
389289
|
if (!process.env.ENABLE_TOOL_SEARCH && getAPIProvider() === "firstParty" && !isFirstPartyAnthropicBaseUrl()) {
|
|
389290
389290
|
if (!loggedOptimistic) {
|
|
389291
389291
|
loggedOptimistic = true;
|
|
389292
|
-
logForDebugging(`[ToolSearch:optimistic] disabled: ANTHROPIC_BASE_URL=${process.env.ANTHROPIC_BASE_URL} is not a first-party
|
|
389292
|
+
logForDebugging(`[ToolSearch:optimistic] disabled: ANTHROPIC_BASE_URL=${process.env.ANTHROPIC_BASE_URL} is not a first-party AINative host. Set ENABLE_TOOL_SEARCH=true (or auto / auto:N) if your proxy forwards tool_reference blocks.`);
|
|
389293
389293
|
}
|
|
389294
389294
|
return false;
|
|
389295
389295
|
}
|
|
@@ -391669,12 +391669,12 @@ ${manifest}${toolsSection}`
|
|
|
391669
391669
|
return [];
|
|
391670
391670
|
}
|
|
391671
391671
|
}
|
|
391672
|
-
var SELECT_MEMORIES_SYSTEM_PROMPT = `You are selecting memories that will be useful to
|
|
391672
|
+
var SELECT_MEMORIES_SYSTEM_PROMPT = `You are selecting memories that will be useful to Cody as it processes a user's query. You will be given the user's query and a list of available memory files with their filenames and descriptions.
|
|
391673
391673
|
|
|
391674
|
-
Return a list of filenames for the memories that will clearly be useful to
|
|
391674
|
+
Return a list of filenames for the memories that will clearly be useful to Cody as it processes the user's query (up to 5). Only include memories that you are certain will be helpful based on their name and description.
|
|
391675
391675
|
- If you are unsure if a memory will be useful in processing the user's query, then do not include it in your list. Be selective and discerning.
|
|
391676
391676
|
- If there are no memories in the list that would clearly be useful, feel free to return an empty list.
|
|
391677
|
-
- If a list of recently-used tools is provided, do not select memories that are usage reference or API documentation for those tools (
|
|
391677
|
+
- If a list of recently-used tools is provided, do not select memories that are usage reference or API documentation for those tools (Cody is already exercising them). DO still select memories containing warnings, gotchas, or known issues about those tools \u2014 active use is exactly when those matter.
|
|
391678
391678
|
`;
|
|
391679
391679
|
var init_findRelevantMemories = __esm(() => {
|
|
391680
391680
|
init_debug();
|
|
@@ -395749,7 +395749,7 @@ var init_marketplaceManager = __esm(() => {
|
|
|
395749
395749
|
throw new Error(`Marketplace '${name3}' not found in configuration. Available marketplaces: ${Object.keys(config8).join(", ")}`);
|
|
395750
395750
|
}
|
|
395751
395751
|
if (isLocalMarketplaceSource(entry.source) && !isAbsolute23(entry.source.path)) {
|
|
395752
|
-
throw new Error(`Marketplace "${name3}" has a relative source path (${entry.source.path}) ` + `in known_marketplaces.json \u2014 this is stale state from an older ` + `
|
|
395752
|
+
throw new Error(`Marketplace "${name3}" has a relative source path (${entry.source.path}) ` + `in known_marketplaces.json \u2014 this is stale state from an older ` + `Cody version. Run 'claude marketplace remove ${name3}' and ` + `re-add it from the original project directory.`);
|
|
395753
395753
|
}
|
|
395754
395754
|
try {
|
|
395755
395755
|
return await readCachedMarketplace(entry.installLocation);
|
|
@@ -398446,7 +398446,7 @@ function AUTO_REJECT_MESSAGE(toolName) {
|
|
|
398446
398446
|
return `Permission to use ${toolName} has been denied. ${DENIAL_WORKAROUND_GUIDANCE}`;
|
|
398447
398447
|
}
|
|
398448
398448
|
function DONT_ASK_REJECT_MESSAGE(toolName) {
|
|
398449
|
-
return `Permission to use ${toolName} has been denied because
|
|
398449
|
+
return `Permission to use ${toolName} has been denied because Cody is running in don't ask mode. ${DENIAL_WORKAROUND_GUIDANCE}`;
|
|
398450
398450
|
}
|
|
398451
398451
|
function isSyntheticMessage(message) {
|
|
398452
398452
|
return message.type !== "progress" && message.type !== "attachment" && message.type !== "system" && Array.isArray(message.message.content) && message.message.content[0]?.type === "text" && SYNTHETIC_MESSAGES.has(message.message.content[0].text);
|
|
@@ -402207,14 +402207,14 @@ function getErrorMessageIfRefusal(stopReason, model) {
|
|
|
402207
402207
|
return;
|
|
402208
402208
|
}
|
|
402209
402209
|
logEvent("tengu_refusal_api_response", {});
|
|
402210
|
-
const baseMessage = getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}:
|
|
402210
|
+
const baseMessage = getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: Cody is unable to respond to this request, which appears to violate our Usage Policy (https://ainative.studio/legal/aup). Try rephrasing the request or attempting a different approach.` : `${API_ERROR_MESSAGE_PREFIX}: Cody is unable to respond to this request, which appears to violate our Usage Policy (https://ainative.studio/legal/aup). Please double press esc to edit your last message or start a new session for Cody to assist with a different task.`;
|
|
402211
402211
|
const modelSuggestion = model !== "claude-sonnet-4-20250514" ? " If you are seeing this refusal repeatedly, try running /model claude-sonnet-4-20250514 to switch models." : "";
|
|
402212
402212
|
return createAssistantAPIErrorMessage({
|
|
402213
402213
|
content: baseMessage + modelSuggestion,
|
|
402214
402214
|
error: "invalid_request"
|
|
402215
402215
|
});
|
|
402216
402216
|
}
|
|
402217
|
-
var API_ERROR_MESSAGE_PREFIX = "API Error", PROMPT_TOO_LONG_ERROR_MESSAGE = "Prompt is too long", CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = "Credit balance is too low", INVALID_API_KEY_ERROR_MESSAGE = "Not logged in \xB7 Please run /login", INVALID_API_KEY_ERROR_MESSAGE_EXTERNAL = "Invalid API key \xB7 Fix external API key", ORG_DISABLED_ERROR_MESSAGE_ENV_KEY_WITH_OAUTH = "Your ANTHROPIC_API_KEY belongs to a disabled organization \xB7 Unset the environment variable to use your subscription instead", ORG_DISABLED_ERROR_MESSAGE_ENV_KEY = "Your ANTHROPIC_API_KEY belongs to a disabled organization \xB7 Update or unset the environment variable", TOKEN_REVOKED_ERROR_MESSAGE = "OAuth token revoked \xB7 Please run /login", CCR_AUTH_ERROR_MESSAGE = "Authentication error \xB7 This may be a temporary network issue, please try again", REPEATED_529_ERROR_MESSAGE = "Repeated 529 Overloaded errors", CUSTOM_OFF_SWITCH_MESSAGE = "Opus is experiencing high load, please use /model to switch to Sonnet", API_TIMEOUT_ERROR_MESSAGE = "Request timed out", OAUTH_ORG_NOT_ALLOWED_ERROR_MESSAGE = "Your account does not have access to
|
|
402217
|
+
var API_ERROR_MESSAGE_PREFIX = "API Error", PROMPT_TOO_LONG_ERROR_MESSAGE = "Prompt is too long", CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = "Credit balance is too low", INVALID_API_KEY_ERROR_MESSAGE = "Not logged in \xB7 Please run /login", INVALID_API_KEY_ERROR_MESSAGE_EXTERNAL = "Invalid API key \xB7 Fix external API key", ORG_DISABLED_ERROR_MESSAGE_ENV_KEY_WITH_OAUTH = "Your ANTHROPIC_API_KEY belongs to a disabled organization \xB7 Unset the environment variable to use your subscription instead", ORG_DISABLED_ERROR_MESSAGE_ENV_KEY = "Your ANTHROPIC_API_KEY belongs to a disabled organization \xB7 Update or unset the environment variable", TOKEN_REVOKED_ERROR_MESSAGE = "OAuth token revoked \xB7 Please run /login", CCR_AUTH_ERROR_MESSAGE = "Authentication error \xB7 This may be a temporary network issue, please try again", REPEATED_529_ERROR_MESSAGE = "Repeated 529 Overloaded errors", CUSTOM_OFF_SWITCH_MESSAGE = "Opus is experiencing high load, please use /model to switch to Sonnet", API_TIMEOUT_ERROR_MESSAGE = "Request timed out", OAUTH_ORG_NOT_ALLOWED_ERROR_MESSAGE = "Your account does not have access to Cody. Please run /login.";
|
|
402218
402218
|
var init_errors10 = __esm(() => {
|
|
402219
402219
|
init_sdk();
|
|
402220
402220
|
init_betas();
|
|
@@ -402999,9 +402999,9 @@ function reconstructCommand(kept, originalCmd) {
|
|
|
402999
402999
|
return result.trim() || originalCmd;
|
|
403000
403000
|
}
|
|
403001
403001
|
var ALLOWED_FILE_DESCRIPTORS, BASH_POLICY_SPEC = `<policy_spec>
|
|
403002
|
-
#
|
|
403002
|
+
# Cody Code Bash command prefix detection
|
|
403003
403003
|
|
|
403004
|
-
This document defines risk levels for actions that the
|
|
403004
|
+
This document defines risk levels for actions that the Cody agent may take. This classification system is part of a broader safety framework and is used to determine when additional user confirmation or oversight may be needed.
|
|
403005
403005
|
|
|
403006
403006
|
## Definitions
|
|
403007
403007
|
|
|
@@ -408130,7 +408130,7 @@ function PermissionDescription() {
|
|
|
408130
408130
|
if ($3[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
408131
408131
|
t0 = /* @__PURE__ */ jsx_dev_runtime159.jsxDEV(ThemedText, {
|
|
408132
408132
|
dimColor: true,
|
|
408133
|
-
children: "
|
|
408133
|
+
children: "Cody will be able to read files in this directory and make edits when auto-accept edits is on."
|
|
408134
408134
|
}, undefined, false, undefined, this);
|
|
408135
408135
|
$3[0] = t0;
|
|
408136
408136
|
} else {
|
|
@@ -409604,7 +409604,7 @@ function Feedback({
|
|
|
409604
409604
|
children: [
|
|
409605
409605
|
"We will use your feedback to debug related issues or to improve",
|
|
409606
409606
|
" ",
|
|
409607
|
-
"
|
|
409607
|
+
"Cody's functionality (eg. to reduce the risk of bugs occurring in the future)."
|
|
409608
409608
|
]
|
|
409609
409609
|
}, undefined, true, undefined, this)
|
|
409610
409610
|
}, undefined, false, undefined, this),
|
|
@@ -409725,7 +409725,7 @@ ${sanitizedDescription}
|
|
|
409725
409725
|
async function generateTitle(description, abortSignal) {
|
|
409726
409726
|
try {
|
|
409727
409727
|
const response7 = await queryHaiku({
|
|
409728
|
-
systemPrompt: asSystemPrompt(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for
|
|
409728
|
+
systemPrompt: asSystemPrompt(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for Cody.", "Cody is an agentic coding CLI powered by AINative Studio.", "The title should:", "- Include the type of issue [Bug] or [Feature Request] as the first thing in the title", "- Be concise, specific and descriptive of the actual problem", "- Use technical terminology appropriate for a software issue", '- For error messages, extract the key error (e.g., "Missing Tool Result Block" rather than the full message)', "- Be direct and clear for developers to understand the problem", '- If you cannot determine a clear issue, use "Bug Report: [brief description]"', "- Any LLM API errors are from the AINative API, not from any other model provider", "Your response will be directly used as the title of the Github issue, and as such should not contain any other commentary or explaination", 'Examples of good titles include: "[Bug] Auto-Compact triggers to soon", "[Bug] Anthropic API Error: Missing Tool Result Block", "[Bug] Error: Invalid Model Name for Opus"']),
|
|
409729
409729
|
userPrompt: description,
|
|
409730
409730
|
signal: abortSignal,
|
|
409731
409731
|
options: {
|
|
@@ -409905,7 +409905,7 @@ var init_feedback2 = __esm(() => {
|
|
|
409905
409905
|
aliases: ["bug"],
|
|
409906
409906
|
type: "local-jsx",
|
|
409907
409907
|
name: "feedback",
|
|
409908
|
-
description: `Submit feedback about
|
|
409908
|
+
description: `Submit feedback about Cody`,
|
|
409909
409909
|
argumentHint: "[report]",
|
|
409910
409910
|
isEnabled: () => !(isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) || isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX) || isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY) || isEnvTruthy(process.env.DISABLE_FEEDBACK_COMMAND) || isEnvTruthy(process.env.DISABLE_BUG_COMMAND) || isEssentialTrafficOnly() || false || !isPolicyAllowed("allow_product_feedback")),
|
|
409911
409911
|
load: () => Promise.resolve().then(() => (init_feedback(), exports_feedback))
|
|
@@ -413802,7 +413802,7 @@ function ModelPicker(t0) {
|
|
|
413802
413802
|
} else {
|
|
413803
413803
|
t15 = $3[41];
|
|
413804
413804
|
}
|
|
413805
|
-
const t16 = headerText ?? "Switch between Claude models. Applies to this session and future
|
|
413805
|
+
const t16 = headerText ?? "Switch between Claude models. Applies to this session and future Cody sessions. For other/previous model names, specify with --model.";
|
|
413806
413806
|
let t17;
|
|
413807
413807
|
if ($3[42] !== t16) {
|
|
413808
413808
|
t17 = /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
@@ -414256,7 +414256,7 @@ function ClaudeMdExternalIncludesDialog(t0) {
|
|
|
414256
414256
|
t8 = /* @__PURE__ */ jsx_dev_runtime173.jsxDEV(ThemedText, {
|
|
414257
414257
|
dimColor: true,
|
|
414258
414258
|
children: [
|
|
414259
|
-
"Important: Only use
|
|
414259
|
+
"Important: Only use Cody with files you trust. Accessing untrusted files may pose security risks",
|
|
414260
414260
|
" ",
|
|
414261
414261
|
/* @__PURE__ */ jsx_dev_runtime173.jsxDEV(Link, {
|
|
414262
414262
|
url: "https://code.claude.com/docs/en/security"
|
|
@@ -414542,7 +414542,7 @@ function OutputStylePicker(t0) {
|
|
|
414542
414542
|
marginTop: 1,
|
|
414543
414543
|
children: /* @__PURE__ */ jsx_dev_runtime175.jsxDEV(ThemedText, {
|
|
414544
414544
|
dimColor: true,
|
|
414545
|
-
children: "This changes how
|
|
414545
|
+
children: "This changes how Cody communicates with you"
|
|
414546
414546
|
}, undefined, false, undefined, this)
|
|
414547
414547
|
}, undefined, false, undefined, this);
|
|
414548
414548
|
$3[5] = t7;
|
|
@@ -419155,9 +419155,9 @@ var call17 = async () => {
|
|
|
419155
419155
|
if (isClaudeAISubscriber()) {
|
|
419156
419156
|
let value;
|
|
419157
419157
|
if (currentLimits.isUsingOverage) {
|
|
419158
|
-
value = "You are currently using your overages to power your
|
|
419158
|
+
value = "You are currently using your overages to power your Cody usage. We will automatically switch you back to your subscription rate limits when they reset";
|
|
419159
419159
|
} else {
|
|
419160
|
-
value = "You are currently using your subscription to power your
|
|
419160
|
+
value = "You are currently using your subscription to power your Cody usage";
|
|
419161
419161
|
}
|
|
419162
419162
|
if (false) {}
|
|
419163
419163
|
return { type: "text", value };
|
|
@@ -422047,7 +422047,7 @@ function Doctor(t0) {
|
|
|
422047
422047
|
let t7;
|
|
422048
422048
|
if ($3[11] !== onDone) {
|
|
422049
422049
|
t7 = () => {
|
|
422050
|
-
onDone("
|
|
422050
|
+
onDone("Cody diagnostics dismissed", {
|
|
422051
422051
|
display: "system"
|
|
422052
422052
|
});
|
|
422053
422053
|
};
|
|
@@ -422873,7 +422873,7 @@ var init_doctor2 = __esm(() => {
|
|
|
422873
422873
|
init_envUtils();
|
|
422874
422874
|
doctor = {
|
|
422875
422875
|
name: "doctor",
|
|
422876
|
-
description: "Diagnose and verify your
|
|
422876
|
+
description: "Diagnose and verify your Cody installation and settings",
|
|
422877
422877
|
isEnabled: () => !isEnvTruthy(process.env.DISABLE_DOCTOR_COMMAND),
|
|
422878
422878
|
type: "local-jsx",
|
|
422879
422879
|
load: () => Promise.resolve().then(() => (init_doctor(), exports_doctor))
|
|
@@ -424540,7 +424540,7 @@ function HelpV2(t0) {
|
|
|
424540
424540
|
let t6;
|
|
424541
424541
|
if ($3[31] !== tabs) {
|
|
424542
424542
|
t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
|
|
424543
|
-
title: `
|
|
424543
|
+
title: `Cody v${"0.1.0"}`,
|
|
424544
424544
|
color: "professionalBlue",
|
|
424545
424545
|
defaultTab: "general",
|
|
424546
424546
|
children: tabs
|
|
@@ -424973,7 +424973,7 @@ function IDEScreen(t0) {
|
|
|
424973
424973
|
t5 = availableIDEs.length === 0 && /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(ThemedText, {
|
|
424974
424974
|
dimColor: true,
|
|
424975
424975
|
children: isSupportedJetBrainsTerminal() ? `No available IDEs detected. Please install the plugin and restart your IDE:
|
|
424976
|
-
https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected. Make sure your IDE has the
|
|
424976
|
+
https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected. Make sure your IDE has the Cody extension or plugin installed and is running."
|
|
424977
424977
|
}, undefined, false, undefined, this);
|
|
424978
424978
|
$3[17] = availableIDEs.length;
|
|
424979
424979
|
$3[18] = t5;
|
|
@@ -425005,7 +425005,7 @@ https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected.
|
|
|
425005
425005
|
marginTop: 1,
|
|
425006
425006
|
children: /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(ThemedText, {
|
|
425007
425007
|
color: "warning",
|
|
425008
|
-
children: "Note: Only one
|
|
425008
|
+
children: "Note: Only one Cody instance can be connected to VS Code at a time."
|
|
425009
425009
|
}, undefined, false, undefined, this)
|
|
425010
425010
|
}, undefined, false, undefined, this);
|
|
425011
425011
|
$3[24] = availableIDEs;
|
|
@@ -425349,7 +425349,7 @@ async function call22(onDone, context7, args) {
|
|
|
425349
425349
|
const detectedIDEs2 = await detectIDEs(true);
|
|
425350
425350
|
const availableIDEs2 = detectedIDEs2.filter((ide) => ide.isValid);
|
|
425351
425351
|
if (availableIDEs2.length === 0) {
|
|
425352
|
-
onDone("No IDEs with
|
|
425352
|
+
onDone("No IDEs with Cody extension detected.");
|
|
425353
425353
|
return null;
|
|
425354
425354
|
}
|
|
425355
425355
|
return /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(IDEOpenSelection, {
|
|
@@ -425579,7 +425579,7 @@ var init_ide3 = __esm(() => {
|
|
|
425579
425579
|
});
|
|
425580
425580
|
|
|
425581
425581
|
// src/commands/init.ts
|
|
425582
|
-
var OLD_INIT_PROMPT = `Please analyze this codebase and create a CLAUDE.md file, which will be given to future instances of
|
|
425582
|
+
var OLD_INIT_PROMPT = `Please analyze this codebase and create a CLAUDE.md file, which will be given to future instances of Cody to operate in this repository.
|
|
425583
425583
|
|
|
425584
425584
|
What to add:
|
|
425585
425585
|
1. Commands that will be commonly used, such as how to build, lint, and run tests. Include the necessary commands to develop in this codebase, such as how to run a single test.
|
|
@@ -426178,15 +426178,15 @@ var init_WorkflowMultiselectDialog = __esm(() => {
|
|
|
426178
426178
|
jsx_dev_runtime209 = __toESM(require_jsx_dev_runtime(), 1);
|
|
426179
426179
|
WORKFLOWS = [{
|
|
426180
426180
|
value: "claude",
|
|
426181
|
-
label: "@
|
|
426181
|
+
label: "@Cody - Tag @claude in issues and PR comments"
|
|
426182
426182
|
}, {
|
|
426183
426183
|
value: "claude-review",
|
|
426184
|
-
label: "
|
|
426184
|
+
label: "Cody Review - Automated code review on new PRs"
|
|
426185
426185
|
}];
|
|
426186
426186
|
});
|
|
426187
426187
|
|
|
426188
426188
|
// src/constants/github-app.ts
|
|
426189
|
-
var PR_TITLE = "Add
|
|
426189
|
+
var PR_TITLE = "Add Cody GitHub Workflow", GITHUB_ACTION_SETUP_DOCS_URL = "https://github.com/anthropics/claude-code-action/blob/main/docs/setup.md", WORKFLOW_CONTENT = `name: Cody
|
|
426190
426190
|
|
|
426191
426191
|
on:
|
|
426192
426192
|
issue_comment:
|
|
@@ -426218,7 +426218,7 @@ jobs:
|
|
|
426218
426218
|
with:
|
|
426219
426219
|
fetch-depth: 1
|
|
426220
426220
|
|
|
426221
|
-
- name: Run
|
|
426221
|
+
- name: Run Cody
|
|
426222
426222
|
id: claude
|
|
426223
426223
|
uses: anthropics/claude-code-action@v1
|
|
426224
426224
|
with:
|
|
@@ -426236,13 +426236,13 @@ jobs:
|
|
|
426236
426236
|
# or https://code.claude.com/docs/en/cli-reference for available options
|
|
426237
426237
|
# claude_args: '--allowed-tools Bash(gh pr:*)'
|
|
426238
426238
|
|
|
426239
|
-
`, PR_BODY = `## \uD83E\uDD16 Installing
|
|
426239
|
+
`, PR_BODY = `## \uD83E\uDD16 Installing Cody GitHub App
|
|
426240
426240
|
|
|
426241
|
-
This PR adds a GitHub Actions workflow that enables
|
|
426241
|
+
This PR adds a GitHub Actions workflow that enables Cody integration in our repository.
|
|
426242
426242
|
|
|
426243
|
-
### What is
|
|
426243
|
+
### What is Cody?
|
|
426244
426244
|
|
|
426245
|
-
[
|
|
426245
|
+
[Cody](https://claude.com/claude-code) is an AI coding agent that can help with:
|
|
426246
426246
|
- Bug fixes and improvements
|
|
426247
426247
|
- Documentation updates
|
|
426248
426248
|
- Implementing new features
|
|
@@ -426274,9 +426274,9 @@ Once the workflow is triggered, Claude will analyze the comment and surrounding
|
|
|
426274
426274
|
allowed_tools: Bash(npm install),Bash(npm run build),Bash(npm run lint),Bash(npm run test)
|
|
426275
426275
|
\`\`\`
|
|
426276
426276
|
|
|
426277
|
-
There's more information in the [
|
|
426277
|
+
There's more information in the [Cody action repo](https://github.com/anthropics/claude-code-action).
|
|
426278
426278
|
|
|
426279
|
-
After merging this PR, let's try mentioning @claude in a comment on any PR to get started!`, CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT = `name:
|
|
426279
|
+
After merging this PR, let's try mentioning @claude in a comment on any PR to get started!`, CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT = `name: Cody Review
|
|
426280
426280
|
|
|
426281
426281
|
on:
|
|
426282
426282
|
pull_request:
|
|
@@ -426309,7 +426309,7 @@ jobs:
|
|
|
426309
426309
|
with:
|
|
426310
426310
|
fetch-depth: 1
|
|
426311
426311
|
|
|
426312
|
-
- name: Run
|
|
426312
|
+
- name: Run Cody Review
|
|
426313
426313
|
id: claude-review
|
|
426314
426314
|
uses: anthropics/claude-code-action@v1
|
|
426315
426315
|
with:
|
|
@@ -426478,7 +426478,7 @@ function ApiKeyStep(t0) {
|
|
|
426478
426478
|
children: /* @__PURE__ */ jsx_dev_runtime210.jsxDEV(ThemedText, {
|
|
426479
426479
|
children: [
|
|
426480
426480
|
selectedOption === "existing" ? color("success", theme)("> ") : " ",
|
|
426481
|
-
"Use your existing
|
|
426481
|
+
"Use your existing Cody API key"
|
|
426482
426482
|
]
|
|
426483
426483
|
}, undefined, true, undefined, this)
|
|
426484
426484
|
}, undefined, false, undefined, this);
|
|
@@ -428455,7 +428455,7 @@ async function setupGitHubActions(repoName, apiKeyOrOAuthToken, secretName, upda
|
|
|
428455
428455
|
workflows.push({
|
|
428456
428456
|
path: ".github/workflows/claude-code-review.yml",
|
|
428457
428457
|
content: CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT,
|
|
428458
|
-
message: "
|
|
428458
|
+
message: "Cody Review workflow"
|
|
428459
428459
|
});
|
|
428460
428460
|
}
|
|
428461
428461
|
for (const workflow of workflows) {
|
|
@@ -431539,9 +431539,9 @@ function MCPRemoteServerMenu({
|
|
|
431539
431539
|
if (success2) {
|
|
431540
431540
|
onComplete?.(`Authentication successful. Connected to ${server.name}.`);
|
|
431541
431541
|
} else if (result.client.type === "needs-auth") {
|
|
431542
|
-
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart
|
|
431542
|
+
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart Cody.");
|
|
431543
431543
|
} else {
|
|
431544
|
-
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart
|
|
431544
|
+
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart Cody for the changes to take effect.");
|
|
431545
431545
|
}
|
|
431546
431546
|
} catch (err2) {
|
|
431547
431547
|
logEvent("tengu_claudeai_mcp_auth_completed", {
|
|
@@ -431703,10 +431703,10 @@ function MCPRemoteServerMenu({
|
|
|
431703
431703
|
const message = isEffectivelyAuthenticated ? `Authentication successful. Reconnected to ${server.name}.` : `Authentication successful. Connected to ${server.name}.`;
|
|
431704
431704
|
onComplete?.(message);
|
|
431705
431705
|
} else if (result_0.client.type === "needs-auth") {
|
|
431706
|
-
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart
|
|
431706
|
+
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart Cody.");
|
|
431707
431707
|
} else {
|
|
431708
431708
|
logMCPDebug(server.name, `Reconnection failed after authentication`);
|
|
431709
|
-
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart
|
|
431709
|
+
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart Cody for the changes to take effect.");
|
|
431710
431710
|
}
|
|
431711
431711
|
}
|
|
431712
431712
|
} catch (err_1) {
|
|
@@ -433368,7 +433368,7 @@ function MCPSettings(t0) {
|
|
|
433368
433368
|
t9 = $3[25];
|
|
433369
433369
|
}
|
|
433370
433370
|
const serverTools_0 = t9;
|
|
433371
|
-
const defaultTab = viewState.server.transport === "claudeai-proxy" ? "claude.ai" : "
|
|
433371
|
+
const defaultTab = viewState.server.transport === "claudeai-proxy" ? "claude.ai" : "Cody";
|
|
433372
433372
|
if (viewState.server.transport === "stdio") {
|
|
433373
433373
|
let t10;
|
|
433374
433374
|
if ($3[26] !== viewState.server) {
|
|
@@ -436668,7 +436668,7 @@ function EmptyStateMessage(t0) {
|
|
|
436668
436668
|
}, undefined, false, undefined, this),
|
|
436669
436669
|
/* @__PURE__ */ jsx_dev_runtime238.jsxDEV(ThemedText, {
|
|
436670
436670
|
dimColor: true,
|
|
436671
|
-
children: "Please install git and restart
|
|
436671
|
+
children: "Please install git and restart Cody."
|
|
436672
436672
|
}, undefined, false, undefined, this)
|
|
436673
436673
|
]
|
|
436674
436674
|
}, undefined, true, undefined, this);
|
|
@@ -438174,7 +438174,7 @@ function ManageMarketplaces({
|
|
|
438174
438174
|
marginTop: 1,
|
|
438175
438175
|
children: /* @__PURE__ */ jsx_dev_runtime239.jsxDEV(ThemedText, {
|
|
438176
438176
|
dimColor: true,
|
|
438177
|
-
children: "Auto-update enabled.
|
|
438177
|
+
children: "Auto-update enabled. Cody will automatically update this marketplace and its installed plugins."
|
|
438178
438178
|
}, undefined, false, undefined, this)
|
|
438179
438179
|
}, undefined, false, undefined, this),
|
|
438180
438180
|
/* @__PURE__ */ jsx_dev_runtime239.jsxDEV(ThemedBox_default, {
|
|
@@ -441941,7 +441941,7 @@ async function validatePluginManifest(filePath) {
|
|
|
441941
441941
|
delete stripped[key];
|
|
441942
441942
|
warnings.push({
|
|
441943
441943
|
path: key,
|
|
441944
|
-
message: `Field '${key}' belongs in the marketplace entry (marketplace.json), ` + `not plugin.json. It's harmless here but unused \u2014
|
|
441944
|
+
message: `Field '${key}' belongs in the marketplace entry (marketplace.json), ` + `not plugin.json. It's harmless here but unused \u2014 Cody ` + `ignores it at load time.`
|
|
441945
441945
|
});
|
|
441946
441946
|
}
|
|
441947
441947
|
toValidate = stripped;
|
|
@@ -441956,7 +441956,7 @@ async function validatePluginManifest(filePath) {
|
|
|
441956
441956
|
if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(manifest.name)) {
|
|
441957
441957
|
warnings.push({
|
|
441958
441958
|
path: "name",
|
|
441959
|
-
message: `Plugin name "${manifest.name}" is not kebab-case.
|
|
441959
|
+
message: `Plugin name "${manifest.name}" is not kebab-case. Cody accepts ` + `it, but the Claude.ai marketplace sync requires kebab-case ` + `(lowercase letters, digits, and hyphens only, e.g., "my-plugin").`
|
|
441960
441960
|
});
|
|
441961
441961
|
}
|
|
441962
441962
|
if (!manifest.version) {
|
|
@@ -450682,7 +450682,7 @@ function createWhatsNewFeed(releaseNotes2) {
|
|
|
450682
450682
|
text: note
|
|
450683
450683
|
};
|
|
450684
450684
|
});
|
|
450685
|
-
const emptyMessage = "Check the
|
|
450685
|
+
const emptyMessage = "Check the Cody changelog for updates";
|
|
450686
450686
|
return {
|
|
450687
450687
|
title: "What's new",
|
|
450688
450688
|
lines,
|
|
@@ -450716,7 +450716,7 @@ function createProjectOnboardingFeed(steps) {
|
|
|
450716
450716
|
}
|
|
450717
450717
|
function createGuestPassesFeed() {
|
|
450718
450718
|
const reward = getCachedReferrerReward();
|
|
450719
|
-
const subtitle = reward ? `Share
|
|
450719
|
+
const subtitle = reward ? `Share Cody and earn ${formatCreditAmount(reward)} of extra usage` : "Share Cody with friends";
|
|
450720
450720
|
return {
|
|
450721
450721
|
title: "3 guest passes",
|
|
450722
450722
|
lines: [],
|
|
@@ -450933,7 +450933,7 @@ function GuestPassesUpsell() {
|
|
|
450933
450933
|
}, undefined, false, undefined, this),
|
|
450934
450934
|
" \xB7",
|
|
450935
450935
|
" ",
|
|
450936
|
-
reward ? `Share
|
|
450936
|
+
reward ? `Share Cody and earn ${formatCreditAmount(reward)} of extra usage \xB7 /passes` : "3 guest passes at /passes"
|
|
450937
450937
|
]
|
|
450938
450938
|
}, undefined, true, undefined, this);
|
|
450939
450939
|
$3[0] = t0;
|
|
@@ -451028,7 +451028,7 @@ function CondensedLogo() {
|
|
|
451028
451028
|
if ($3[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
451029
451029
|
t5 = /* @__PURE__ */ jsx_dev_runtime252.jsxDEV(ThemedText, {
|
|
451030
451030
|
bold: true,
|
|
451031
|
-
children: "
|
|
451031
|
+
children: "Cody"
|
|
451032
451032
|
}, undefined, false, undefined, this);
|
|
451033
451033
|
$3[8] = t5;
|
|
451034
451034
|
} else {
|
|
@@ -458758,7 +458758,7 @@ var init_review = __esm(() => {
|
|
|
458758
458758
|
ultrareview = {
|
|
458759
458759
|
type: "local-jsx",
|
|
458760
458760
|
name: "ultrareview",
|
|
458761
|
-
description: `~10\u201320 min \xB7 Finds and verifies bugs in your branch. Runs in
|
|
458761
|
+
description: `~10\u201320 min \xB7 Finds and verifies bugs in your branch. Runs in Cody on the web. See ${CCR_TERMS_URL}`,
|
|
458762
458762
|
isEnabled: () => isUltrareviewEnabled(),
|
|
458763
458763
|
load: () => Promise.resolve().then(() => (init_ultrareviewCommand(), exports_ultrareviewCommand))
|
|
458764
458764
|
};
|
|
@@ -459349,7 +459349,7 @@ var init_status3 = __esm(() => {
|
|
|
459349
459349
|
status = {
|
|
459350
459350
|
type: "local-jsx",
|
|
459351
459351
|
name: "status",
|
|
459352
|
-
description: "Show
|
|
459352
|
+
description: "Show Cody status including version, model, account, API connectivity, and tool statuses",
|
|
459353
459353
|
immediate: true,
|
|
459354
459354
|
load: () => Promise.resolve().then(() => (init_status2(), exports_status))
|
|
459355
459355
|
};
|
|
@@ -459704,7 +459704,7 @@ function startDetachedPoll(taskId, sessionId, url3, getAppState, setAppState) {
|
|
|
459704
459704
|
ultraplanSessionUrl: undefined
|
|
459705
459705
|
} : prev);
|
|
459706
459706
|
enqueuePendingNotification({
|
|
459707
|
-
value: [`Ultraplan approved \u2014 executing in
|
|
459707
|
+
value: [`Ultraplan approved \u2014 executing in Cody on the web. Follow along at: ${url3}`, "", "Results will land as a pull request when the remote session finishes. There is nothing to do here."].join(`
|
|
459708
459708
|
`),
|
|
459709
459709
|
mode: "task-notification"
|
|
459710
459710
|
});
|
|
@@ -459758,10 +459758,10 @@ Session: ${url3}`,
|
|
|
459758
459758
|
function buildLaunchMessage(disconnectedBridge) {
|
|
459759
459759
|
const prefix = disconnectedBridge ? `${REMOTE_CONTROL_DISCONNECTED_MSG} ` : "";
|
|
459760
459760
|
return `${DIAMOND_OPEN} ultraplan
|
|
459761
|
-
${prefix}Starting
|
|
459761
|
+
${prefix}Starting Cody on the web\u2026`;
|
|
459762
459762
|
}
|
|
459763
459763
|
function buildSessionReadyMessage(url3) {
|
|
459764
|
-
return `${DIAMOND_OPEN} ultraplan \xB7 Monitor progress in
|
|
459764
|
+
return `${DIAMOND_OPEN} ultraplan \xB7 Monitor progress in Cody on the web ${url3}
|
|
459765
459765
|
You can continue working \u2014 when the ${DIAMOND_OPEN} fills, press \u2193 to view results`;
|
|
459766
459766
|
}
|
|
459767
459767
|
function buildAlreadyActiveMessage(url3) {
|
|
@@ -459814,7 +459814,7 @@ async function launchUltraplan2(opts) {
|
|
|
459814
459814
|
"in your prompt",
|
|
459815
459815
|
"",
|
|
459816
459816
|
"Advanced multi-agent plan mode with our most powerful model",
|
|
459817
|
-
"(Opus). Runs in
|
|
459817
|
+
"(Opus). Runs in Cody on the web. When the plan is ready,",
|
|
459818
459818
|
"you can execute it in the web session or send it back here.",
|
|
459819
459819
|
"Terminal stays free while the remote plans.",
|
|
459820
459820
|
"Requires /login.",
|
|
@@ -459999,7 +459999,7 @@ var init_ultraplan = __esm(() => {
|
|
|
459999
459999
|
ultraplan_default = {
|
|
460000
460000
|
type: "local-jsx",
|
|
460001
460001
|
name: "ultraplan",
|
|
460002
|
-
description: `~10\u201330 min \xB7
|
|
460002
|
+
description: `~10\u201330 min \xB7 Cody on the web drafts an advanced plan you can edit and approve. See ${CCR_TERMS_URL2}`,
|
|
460003
460003
|
argumentHint: "<prompt>",
|
|
460004
460004
|
isEnabled: () => false,
|
|
460005
460005
|
load: () => Promise.resolve({
|
|
@@ -462283,7 +462283,7 @@ var init_mappers = __esm(() => {
|
|
|
462283
462283
|
// src/components/tasks/RemoteSessionDetailDialog.tsx
|
|
462284
462284
|
function formatToolUseSummary(name3, input) {
|
|
462285
462285
|
if (name3 === EXIT_PLAN_MODE_V2_TOOL_NAME) {
|
|
462286
|
-
return "Review the plan in
|
|
462286
|
+
return "Review the plan in Cody on the web";
|
|
462287
462287
|
}
|
|
462288
462288
|
if (!input || typeof input !== "object")
|
|
462289
462289
|
return name3;
|
|
@@ -462397,7 +462397,7 @@ function UltraplanSessionDetail(t0) {
|
|
|
462397
462397
|
if ($3[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
462398
462398
|
t72 = /* @__PURE__ */ jsx_dev_runtime285.jsxDEV(ThemedText, {
|
|
462399
462399
|
dimColor: true,
|
|
462400
|
-
children: "This will terminate the
|
|
462400
|
+
children: "This will terminate the Cody on the web session."
|
|
462401
462401
|
}, undefined, false, undefined, this);
|
|
462402
462402
|
$3[12] = t72;
|
|
462403
462403
|
} else {
|
|
@@ -462608,7 +462608,7 @@ function UltraplanSessionDetail(t0) {
|
|
|
462608
462608
|
let t19;
|
|
462609
462609
|
if ($3[47] === Symbol.for("react.memo_cache_sentinel")) {
|
|
462610
462610
|
t19 = {
|
|
462611
|
-
label: "Review in
|
|
462611
|
+
label: "Review in Cody on the web",
|
|
462612
462612
|
value: "open"
|
|
462613
462613
|
};
|
|
462614
462614
|
$3[47] = t19;
|
|
@@ -462940,13 +462940,13 @@ function ReviewSessionDetail(t0) {
|
|
|
462940
462940
|
let t32;
|
|
462941
462941
|
if ($3[11] !== completed || $3[12] !== onKill || $3[13] !== running) {
|
|
462942
462942
|
t32 = completed ? [{
|
|
462943
|
-
label: "Open in
|
|
462943
|
+
label: "Open in Cody on the web",
|
|
462944
462944
|
value: "open"
|
|
462945
462945
|
}, {
|
|
462946
462946
|
label: "Dismiss",
|
|
462947
462947
|
value: "dismiss"
|
|
462948
462948
|
}] : [{
|
|
462949
|
-
label: "Open in
|
|
462949
|
+
label: "Open in Cody on the web",
|
|
462950
462950
|
value: "open"
|
|
462951
462951
|
}, ...onKill && running ? [{
|
|
462952
462952
|
label: "Stop ultrareview",
|
|
@@ -465550,8 +465550,8 @@ function ThinkbackMenu(t0) {
|
|
|
465550
465550
|
let t7;
|
|
465551
465551
|
if ($3[16] !== handleCancel || $3[17] !== t6) {
|
|
465552
465552
|
t7 = /* @__PURE__ */ jsx_dev_runtime291.jsxDEV(Dialog, {
|
|
465553
|
-
title: "Think Back on 2025 with
|
|
465554
|
-
subtitle: "Generate your 2025
|
|
465553
|
+
title: "Think Back on 2025 with Cody",
|
|
465554
|
+
subtitle: "Generate your 2025 Cody Think Back (takes a few minutes to run)",
|
|
465555
465555
|
onCancel: handleCancel,
|
|
465556
465556
|
color: "claude",
|
|
465557
465557
|
children: t6
|
|
@@ -465760,7 +465760,7 @@ async function call40(onDone) {
|
|
|
465760
465760
|
onDone
|
|
465761
465761
|
}, undefined, false, undefined, this);
|
|
465762
465762
|
}
|
|
465763
|
-
var import_compiler_runtime229, import_react166, jsx_dev_runtime291, OFFICIAL_MARKETPLACE_REPO = "anthropics/claude-plugins-official", SKILL_NAME = "thinkback", EDIT_PROMPT = 'Use the Skill tool to invoke the "thinkback" skill with mode=edit to modify my existing
|
|
465763
|
+
var import_compiler_runtime229, import_react166, jsx_dev_runtime291, OFFICIAL_MARKETPLACE_REPO = "anthropics/claude-plugins-official", SKILL_NAME = "thinkback", EDIT_PROMPT = 'Use the Skill tool to invoke the "thinkback" skill with mode=edit to modify my existing Cody year in review animation. Ask me what I want to change. When the animation is ready, tell the user to run /think-back again to play it.', FIX_PROMPT = 'Use the Skill tool to invoke the "thinkback" skill with mode=fix to fix validation or rendering errors in my existing Cody year in review animation. Run the validator, identify errors, and fix them. When the animation is ready, tell the user to run /think-back again to play it.', REGENERATE_PROMPT = 'Use the Skill tool to invoke the "thinkback" skill with mode=regenerate to create a completely new Cody year in review animation from scratch. Delete the existing animation and start fresh. When the animation is ready, tell the user to run /think-back again to play it.';
|
|
465764
465764
|
var init_thinkback = __esm(() => {
|
|
465765
465765
|
init_execa();
|
|
465766
465766
|
init_select();
|
|
@@ -465793,7 +465793,7 @@ var init_thinkback2 = __esm(() => {
|
|
|
465793
465793
|
thinkback = {
|
|
465794
465794
|
type: "local-jsx",
|
|
465795
465795
|
name: "think-back",
|
|
465796
|
-
description: "Your 2025
|
|
465796
|
+
description: "Your 2025 Cody Year in Review",
|
|
465797
465797
|
isEnabled: () => checkStatsigFeatureGate_CACHED_MAY_BE_STALE("tengu_thinkback"),
|
|
465798
465798
|
load: () => Promise.resolve().then(() => (init_thinkback(), exports_thinkback))
|
|
465799
465799
|
};
|
|
@@ -466687,7 +466687,7 @@ function RemoveWorkspaceDirectory(t0) {
|
|
|
466687
466687
|
let t4;
|
|
466688
466688
|
if ($3[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
466689
466689
|
t4 = /* @__PURE__ */ jsx_dev_runtime296.jsxDEV(ThemedText, {
|
|
466690
|
-
children: "
|
|
466690
|
+
children: "Cody will no longer have access to files in this directory."
|
|
466691
466691
|
}, undefined, false, undefined, this);
|
|
466692
466692
|
$3[10] = t4;
|
|
466693
466693
|
} else {
|
|
@@ -467368,9 +467368,9 @@ function PermissionRulesTab(t0) {
|
|
|
467368
467368
|
let t8;
|
|
467369
467369
|
if ($3[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
467370
467370
|
t8 = {
|
|
467371
|
-
allow: "
|
|
467372
|
-
ask: "
|
|
467373
|
-
deny: "
|
|
467371
|
+
allow: "Cody won't ask before using allowed tools.",
|
|
467372
|
+
ask: "Cody will always ask for confirmation before using these tools.",
|
|
467373
|
+
deny: "Cody will always reject requests to use denied tools."
|
|
467374
467374
|
};
|
|
467375
467375
|
$3[10] = t8;
|
|
467376
467376
|
} else {
|
|
@@ -468133,7 +468133,7 @@ function PermissionRuleList(t0) {
|
|
|
468133
468133
|
let t28;
|
|
468134
468134
|
if ($3[89] === Symbol.for("react.memo_cache_sentinel")) {
|
|
468135
468135
|
t28 = /* @__PURE__ */ jsx_dev_runtime298.jsxDEV(ThemedText, {
|
|
468136
|
-
children: "
|
|
468136
|
+
children: "Cody can read files in the workspace, and make edits when auto-accept edits is on."
|
|
468137
468137
|
}, undefined, false, undefined, this);
|
|
468138
468138
|
$3[89] = t28;
|
|
468139
468139
|
} else {
|
|
@@ -469153,7 +469153,7 @@ function Passes({
|
|
|
469153
469153
|
children: /* @__PURE__ */ jsx_dev_runtime303.jsxDEV(ThemedText, {
|
|
469154
469154
|
dimColor: true,
|
|
469155
469155
|
children: [
|
|
469156
|
-
referrerReward ? `Share a free week of
|
|
469156
|
+
referrerReward ? `Share a free week of Cody with friends. If they love it and subscribe, you'll get ${formatCreditAmount(referrerReward)} of extra usage to keep building. ` : "Share a free week of Cody with friends. ",
|
|
469157
469157
|
/* @__PURE__ */ jsx_dev_runtime303.jsxDEV(Link, {
|
|
469158
469158
|
url: referrerReward ? "https://support.claude.com/en/articles/13456702-claude-code-guest-passes" : "https://support.claude.com/en/articles/12875061-claude-code-guest-passes",
|
|
469159
469159
|
children: "Terms apply."
|
|
@@ -469237,9 +469237,9 @@ var init_passes2 = __esm(() => {
|
|
|
469237
469237
|
get description() {
|
|
469238
469238
|
const reward = getCachedReferrerReward();
|
|
469239
469239
|
if (reward) {
|
|
469240
|
-
return "Share a free week of
|
|
469240
|
+
return "Share a free week of Cody with friends and earn extra usage";
|
|
469241
469241
|
}
|
|
469242
|
-
return "Share a free week of
|
|
469242
|
+
return "Share a free week of Cody with friends";
|
|
469243
469243
|
},
|
|
469244
469244
|
get isHidden() {
|
|
469245
469245
|
const { eligible: eligible2, hasCache } = checkCachedPassesEligibility();
|
|
@@ -478076,7 +478076,7 @@ var init_plugin2 = __esm(() => {
|
|
|
478076
478076
|
type: "local-jsx",
|
|
478077
478077
|
name: "plugin",
|
|
478078
478078
|
aliases: ["plugins", "marketplace"],
|
|
478079
|
-
description: "Manage
|
|
478079
|
+
description: "Manage Cody plugins",
|
|
478080
478080
|
immediate: true,
|
|
478081
478081
|
load: () => Promise.resolve().then(() => (init_plugin(), exports_plugin))
|
|
478082
478082
|
};
|
|
@@ -480328,7 +480328,7 @@ function getNativeMessagingHostsDirs() {
|
|
|
480328
480328
|
if (platform6 === "windows") {
|
|
480329
480329
|
const home = homedir30();
|
|
480330
480330
|
const appData = process.env.APPDATA || join121(home, "AppData", "Local");
|
|
480331
|
-
return [join121(appData, "
|
|
480331
|
+
return [join121(appData, "Cody", "ChromeNativeHost")];
|
|
480332
480332
|
}
|
|
480333
480333
|
return getAllNativeMessagingHostsDirs().map(({ path: path23 }) => path23);
|
|
480334
480334
|
}
|
|
@@ -480339,7 +480339,7 @@ async function installChromeNativeHostManifest(manifestBinaryPath) {
|
|
|
480339
480339
|
}
|
|
480340
480340
|
const manifest = {
|
|
480341
480341
|
name: NATIVE_HOST_IDENTIFIER,
|
|
480342
|
-
description: "
|
|
480342
|
+
description: "Cody Browser Extension Native Host",
|
|
480343
480343
|
path: manifestBinaryPath,
|
|
480344
480344
|
type: "stdio",
|
|
480345
480345
|
allowed_origins: [
|
|
@@ -480407,11 +480407,11 @@ async function createWrapperScript(command18) {
|
|
|
480407
480407
|
const wrapperPath = platform6 === "windows" ? join121(chromeDir, "chrome-native-host.bat") : join121(chromeDir, "chrome-native-host");
|
|
480408
480408
|
const scriptContent = platform6 === "windows" ? `@echo off
|
|
480409
480409
|
REM Chrome native host wrapper script
|
|
480410
|
-
REM Generated by
|
|
480410
|
+
REM Generated by Cody - do not edit manually
|
|
480411
480411
|
${command18}
|
|
480412
480412
|
` : `#!/bin/sh
|
|
480413
480413
|
# Chrome native host wrapper script
|
|
480414
|
-
# Generated by
|
|
480414
|
+
# Generated by Cody - do not edit manually
|
|
480415
480415
|
exec ${command18}
|
|
480416
480416
|
`;
|
|
480417
480417
|
const existingContent = await readFile49(wrapperPath, "utf-8").catch(() => null);
|
|
@@ -480664,7 +480664,7 @@ function ClaudeInChromeMenu(t0) {
|
|
|
480664
480664
|
let t6;
|
|
480665
480665
|
if ($3[20] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480666
480666
|
t6 = /* @__PURE__ */ jsx_dev_runtime344.jsxDEV(ThemedText, {
|
|
480667
|
-
children: "Claude in Chrome works with the Chrome extension to let you control your browser directly from
|
|
480667
|
+
children: "Claude in Chrome works with the Chrome extension to let you control your browser directly from Cody. Navigate websites, fill forms, capture screenshots, record GIFs, and debug with console logs and network requests."
|
|
480668
480668
|
}, undefined, false, undefined, this);
|
|
480669
480669
|
$3[20] = t6;
|
|
480670
480670
|
} else {
|
|
@@ -480908,7 +480908,7 @@ var init_stickers2 = __esm(() => {
|
|
|
480908
480908
|
stickers = {
|
|
480909
480909
|
type: "local",
|
|
480910
480910
|
name: "stickers",
|
|
480911
|
-
description: "Order
|
|
480911
|
+
description: "Order Cody stickers",
|
|
480912
480912
|
supportsNonInteractive: false,
|
|
480913
480913
|
load: () => Promise.resolve().then(() => (init_stickers(), exports_stickers))
|
|
480914
480914
|
};
|
|
@@ -482120,7 +482120,7 @@ var init_model3 = __esm(() => {
|
|
|
482120
482120
|
type: "local-jsx",
|
|
482121
482121
|
name: "model",
|
|
482122
482122
|
get description() {
|
|
482123
|
-
return `Set the AI model for
|
|
482123
|
+
return `Set the AI model for Cody (currently ${renderModelName(getMainLoopModel())})`;
|
|
482124
482124
|
},
|
|
482125
482125
|
argumentHint: "[model]",
|
|
482126
482126
|
get immediate() {
|
|
@@ -483266,7 +483266,7 @@ var init_statusline = __esm(() => {
|
|
|
483266
483266
|
init_constants3();
|
|
483267
483267
|
statusline = {
|
|
483268
483268
|
type: "prompt",
|
|
483269
|
-
description: "Set up
|
|
483269
|
+
description: "Set up Cody's status line UI",
|
|
483270
483270
|
contentLength: 0,
|
|
483271
483271
|
aliases: [],
|
|
483272
483272
|
name: "statusline",
|
|
@@ -484978,7 +484978,7 @@ function Stats2(t0) {
|
|
|
484978
484978
|
children: [
|
|
484979
484979
|
/* @__PURE__ */ jsx_dev_runtime358.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
484980
484980
|
/* @__PURE__ */ jsx_dev_runtime358.jsxDEV(ThemedText, {
|
|
484981
|
-
children: " Loading your
|
|
484981
|
+
children: " Loading your Cody stats\u2026"
|
|
484982
484982
|
}, undefined, false, undefined, this)
|
|
484983
484983
|
]
|
|
484984
484984
|
}, undefined, true, undefined, this);
|
|
@@ -485139,7 +485139,7 @@ function StatsContent(t0) {
|
|
|
485139
485139
|
marginTop: 1,
|
|
485140
485140
|
children: /* @__PURE__ */ jsx_dev_runtime358.jsxDEV(ThemedText, {
|
|
485141
485141
|
color: "warning",
|
|
485142
|
-
children: "No stats available yet. Start using
|
|
485142
|
+
children: "No stats available yet. Start using Cody!"
|
|
485143
485143
|
}, undefined, false, undefined, this)
|
|
485144
485144
|
}, undefined, false, undefined, this);
|
|
485145
485145
|
$3[15] = t72;
|
|
@@ -486368,7 +486368,7 @@ var init_stats3 = __esm(() => {
|
|
|
486368
486368
|
stats = {
|
|
486369
486369
|
type: "local-jsx",
|
|
486370
486370
|
name: "stats",
|
|
486371
|
-
description: "Show your
|
|
486371
|
+
description: "Show your Cody usage statistics and activity",
|
|
486372
486372
|
load: () => Promise.resolve().then(() => (init_stats2(), exports_stats))
|
|
486373
486373
|
};
|
|
486374
486374
|
stats_default = stats;
|
|
@@ -487132,7 +487132,7 @@ USER INSTRUCTIONS TO CLAUDE:
|
|
|
487132
487132
|
`) || "";
|
|
487133
487133
|
const horizonText = insights.on_the_horizon?.opportunities?.map((o5) => `- ${o5.title}: ${o5.whats_possible}`).join(`
|
|
487134
487134
|
`) || "";
|
|
487135
|
-
const atAGlancePrompt = `You're writing an "At a Glance" summary for a
|
|
487135
|
+
const atAGlancePrompt = `You're writing an "At a Glance" summary for a Cody usage insights report for Cody users. The goal is to help them understand their usage and improve how they can use Claude better, especially as models improve.
|
|
487136
487136
|
|
|
487137
487137
|
Use this 4-part structure:
|
|
487138
487138
|
|
|
@@ -487140,7 +487140,7 @@ Use this 4-part structure:
|
|
|
487140
487140
|
|
|
487141
487141
|
2. **What's hindering you** - Split into (a) Claude's fault (misunderstandings, wrong approaches, bugs) and (b) user-side friction (not providing enough context, environment issues -- ideally more general than just one project). Be honest but constructive.
|
|
487142
487142
|
|
|
487143
|
-
3. **Quick wins to try** - Specific
|
|
487143
|
+
3. **Quick wins to try** - Specific Cody features they could try from the examples below, or a workflow technique if you think it's really compelling. (Avoid stuff like "Ask Claude to confirm before taking actions" or "Type out more context up front" which are less compelling.)
|
|
487144
487144
|
|
|
487145
487145
|
4. **Ambitious workflows for better models** - As we move to much more capable models over the next 3-6 months, what should they prepare for? What workflows that seem impossible now will become possible? Draw from the appropriate section below.
|
|
487146
487146
|
|
|
@@ -487329,7 +487329,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487329
487329
|
` : "";
|
|
487330
487330
|
const interactionStyle = insights.interaction_style;
|
|
487331
487331
|
const interactionHtml = interactionStyle?.narrative ? `
|
|
487332
|
-
<h2 id="section-usage">How You Use
|
|
487332
|
+
<h2 id="section-usage">How You Use Cody</h2>
|
|
487333
487333
|
<div class="narrative">
|
|
487334
487334
|
${markdownToHtml(interactionStyle.narrative)}
|
|
487335
487335
|
${interactionStyle.key_pattern ? `<div class="key-insight"><strong>Key pattern:</strong> ${escapeXmlAttr(interactionStyle.key_pattern)}</div>` : ""}
|
|
@@ -487368,7 +487368,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487368
487368
|
<h2 id="section-features">Existing CC Features to Try</h2>
|
|
487369
487369
|
<div class="claude-md-section">
|
|
487370
487370
|
<h3>Suggested CLAUDE.md Additions</h3>
|
|
487371
|
-
<p style="font-size: 12px; color: #64748b; margin-bottom: 12px;">Just copy this into
|
|
487371
|
+
<p style="font-size: 12px; color: #64748b; margin-bottom: 12px;">Just copy this into Cody to add it to your CLAUDE.md.</p>
|
|
487372
487372
|
<div class="claude-md-actions">
|
|
487373
487373
|
<button class="copy-all-btn" onclick="copyAllCheckedClaudeMd()">Copy All Checked</button>
|
|
487374
487374
|
</div>
|
|
@@ -487385,7 +487385,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487385
487385
|
</div>
|
|
487386
487386
|
` : ""}
|
|
487387
487387
|
${suggestions.features_to_try && suggestions.features_to_try.length > 0 ? `
|
|
487388
|
-
<p style="font-size: 13px; color: #64748b; margin-bottom: 12px;">Just copy this into
|
|
487388
|
+
<p style="font-size: 13px; color: #64748b; margin-bottom: 12px;">Just copy this into Cody and it'll set it up for you.</p>
|
|
487389
487389
|
<div class="features-section">
|
|
487390
487390
|
${suggestions.features_to_try.map((feat) => `
|
|
487391
487391
|
<div class="feature-card">
|
|
@@ -487407,8 +487407,8 @@ function generateHtmlReport(data, insights) {
|
|
|
487407
487407
|
</div>
|
|
487408
487408
|
` : ""}
|
|
487409
487409
|
${suggestions.usage_patterns && suggestions.usage_patterns.length > 0 ? `
|
|
487410
|
-
<h2 id="section-patterns">New Ways to Use
|
|
487411
|
-
<p style="font-size: 13px; color: #64748b; margin-bottom: 12px;">Just copy this into
|
|
487410
|
+
<h2 id="section-patterns">New Ways to Use Cody</h2>
|
|
487411
|
+
<p style="font-size: 13px; color: #64748b; margin-bottom: 12px;">Just copy this into Cody and it'll walk you through it.</p>
|
|
487412
487412
|
<div class="patterns-section">
|
|
487413
487413
|
${suggestions.usage_patterns.map((pat) => `
|
|
487414
487414
|
<div class="pattern-card">
|
|
@@ -487417,7 +487417,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487417
487417
|
${pat.detail ? `<div class="pattern-detail">${escapeXmlAttr(pat.detail)}</div>` : ""}
|
|
487418
487418
|
${pat.copyable_prompt ? `
|
|
487419
487419
|
<div class="copyable-prompt-section">
|
|
487420
|
-
<div class="prompt-label">Paste into
|
|
487420
|
+
<div class="prompt-label">Paste into Cody:</div>
|
|
487421
487421
|
<div class="copyable-prompt-row">
|
|
487422
487422
|
<code class="copyable-prompt">${escapeXmlAttr(pat.copyable_prompt)}</code>
|
|
487423
487423
|
<button class="copy-btn" onclick="copyText(this)">Copy</button>
|
|
@@ -487439,7 +487439,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487439
487439
|
<div class="horizon-title">${escapeXmlAttr(opp.title || "")}</div>
|
|
487440
487440
|
<div class="horizon-possible">${escapeXmlAttr(opp.whats_possible || "")}</div>
|
|
487441
487441
|
${opp.how_to_try ? `<div class="horizon-tip"><strong>Getting started:</strong> ${escapeXmlAttr(opp.how_to_try)}</div>` : ""}
|
|
487442
|
-
${opp.copyable_prompt ? `<div class="pattern-prompt"><div class="prompt-label">Paste into
|
|
487442
|
+
${opp.copyable_prompt ? `<div class="pattern-prompt"><div class="prompt-label">Paste into Cody:</div><code>${escapeXmlAttr(opp.copyable_prompt)}</code><button class="copy-btn" onclick="copyText(this)">Copy</button></div>` : ""}
|
|
487443
487443
|
</div>
|
|
487444
487444
|
`).join("")}
|
|
487445
487445
|
</div>
|
|
@@ -487708,13 +487708,13 @@ function generateHtmlReport(data, insights) {
|
|
|
487708
487708
|
<html>
|
|
487709
487709
|
<head>
|
|
487710
487710
|
<meta charset="utf-8">
|
|
487711
|
-
<title>
|
|
487711
|
+
<title>Cody Insights</title>
|
|
487712
487712
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
487713
487713
|
<style>${css}</style>
|
|
487714
487714
|
</head>
|
|
487715
487715
|
<body>
|
|
487716
487716
|
<div class="container">
|
|
487717
|
-
<h1>
|
|
487717
|
+
<h1>Cody Insights</h1>
|
|
487718
487718
|
<p class="subtitle">${data.total_messages.toLocaleString()} messages across ${data.total_sessions} sessions${data.total_sessions_scanned && data.total_sessions_scanned > data.total_sessions ? ` (${data.total_sessions_scanned.toLocaleString()} total)` : ""} | ${data.date_range.start} to ${data.date_range.end}</p>
|
|
487719
487719
|
|
|
487720
487720
|
${atAGlanceHtml}
|
|
@@ -487778,7 +487778,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487778
487778
|
<div class="chart-title">Multi-Clauding (Parallel Sessions)</div>
|
|
487779
487779
|
${data.multi_clauding.overlap_events === 0 ? `
|
|
487780
487780
|
<p style="font-size: 14px; color: #64748b; padding: 8px 0;">
|
|
487781
|
-
No parallel session usage detected. You typically work with one
|
|
487781
|
+
No parallel session usage detected. You typically work with one Cody session at a time.
|
|
487782
487782
|
</p>
|
|
487783
487783
|
` : `
|
|
487784
487784
|
<div style="display: flex; gap: 24px; margin: 12px 0;">
|
|
@@ -487796,7 +487796,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487796
487796
|
</div>
|
|
487797
487797
|
</div>
|
|
487798
487798
|
<p style="font-size: 13px; color: #475569; margin-top: 12px;">
|
|
487799
|
-
You run multiple
|
|
487799
|
+
You run multiple Cody sessions simultaneously. Multi-clauding is detected when sessions
|
|
487800
487800
|
overlap in time, suggesting parallel workflows.
|
|
487801
487801
|
</p>
|
|
487802
487802
|
`}
|
|
@@ -488097,7 +488097,7 @@ function isValidSessionFacets(obj) {
|
|
|
488097
488097
|
const o5 = obj;
|
|
488098
488098
|
return typeof o5.underlying_goal === "string" && typeof o5.outcome === "string" && typeof o5.brief_summary === "string" && o5.goal_categories !== null && typeof o5.goal_categories === "object" && o5.user_satisfaction_counts !== null && typeof o5.user_satisfaction_counts === "object" && o5.friction_counts !== null && typeof o5.friction_counts === "object";
|
|
488099
488099
|
}
|
|
488100
|
-
var EXTENSION_TO_LANGUAGE, LABEL_MAP, FACET_EXTRACTION_PROMPT = `Analyze this
|
|
488100
|
+
var EXTENSION_TO_LANGUAGE, LABEL_MAP, FACET_EXTRACTION_PROMPT = `Analyze this Cody session and extract structured facets.
|
|
488101
488101
|
|
|
488102
488102
|
CRITICAL GUIDELINES:
|
|
488103
488103
|
|
|
@@ -488123,7 +488123,7 @@ CRITICAL GUIDELINES:
|
|
|
488123
488123
|
4. If very short or just warmup, use warmup_minimal for goal_category
|
|
488124
488124
|
|
|
488125
488125
|
SESSION:
|
|
488126
|
-
`, SUMMARIZE_CHUNK_PROMPT = `Summarize this portion of a
|
|
488126
|
+
`, SUMMARIZE_CHUNK_PROMPT = `Summarize this portion of a Cody session transcript. Focus on:
|
|
488127
488127
|
1. What the user asked for
|
|
488128
488128
|
2. What Claude did (tools used, files modified)
|
|
488129
488129
|
3. Any friction or issues
|
|
@@ -488224,12 +488224,12 @@ var init_insights = __esm(() => {
|
|
|
488224
488224
|
INSIGHT_SECTIONS = [
|
|
488225
488225
|
{
|
|
488226
488226
|
name: "project_areas",
|
|
488227
|
-
prompt: `Analyze this
|
|
488227
|
+
prompt: `Analyze this Cody usage data and identify project areas.
|
|
488228
488228
|
|
|
488229
488229
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488230
488230
|
{
|
|
488231
488231
|
"areas": [
|
|
488232
|
-
{"name": "Area name", "session_count": N, "description": "2-3 sentences about what was worked on and how
|
|
488232
|
+
{"name": "Area name", "session_count": N, "description": "2-3 sentences about what was worked on and how Cody was used."}
|
|
488233
488233
|
]
|
|
488234
488234
|
}
|
|
488235
488235
|
|
|
@@ -488238,18 +488238,18 @@ Include 4-5 areas. Skip internal CC operations.`,
|
|
|
488238
488238
|
},
|
|
488239
488239
|
{
|
|
488240
488240
|
name: "interaction_style",
|
|
488241
|
-
prompt: `Analyze this
|
|
488241
|
+
prompt: `Analyze this Cody usage data and describe the user's interaction style.
|
|
488242
488242
|
|
|
488243
488243
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488244
488244
|
{
|
|
488245
|
-
"narrative": "2-3 paragraphs analyzing HOW the user interacts with
|
|
488245
|
+
"narrative": "2-3 paragraphs analyzing HOW the user interacts with Cody. Use second person 'you'. Describe patterns: iterate quickly vs detailed upfront specs? Interrupt often or let Claude run? Include specific examples. Use **bold** for key insights.",
|
|
488246
488246
|
"key_pattern": "One sentence summary of most distinctive interaction style"
|
|
488247
488247
|
}`,
|
|
488248
488248
|
maxTokens: 8192
|
|
488249
488249
|
},
|
|
488250
488250
|
{
|
|
488251
488251
|
name: "what_works",
|
|
488252
|
-
prompt: `Analyze this
|
|
488252
|
+
prompt: `Analyze this Cody usage data and identify what's working well for this user. Use second person ("you").
|
|
488253
488253
|
|
|
488254
488254
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488255
488255
|
{
|
|
@@ -488264,7 +488264,7 @@ Include 3 impressive workflows.`,
|
|
|
488264
488264
|
},
|
|
488265
488265
|
{
|
|
488266
488266
|
name: "friction_analysis",
|
|
488267
|
-
prompt: `Analyze this
|
|
488267
|
+
prompt: `Analyze this Cody usage data and identify friction points for this user. Use second person ("you").
|
|
488268
488268
|
|
|
488269
488269
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488270
488270
|
{
|
|
@@ -488279,7 +488279,7 @@ Include 3 friction categories with 2 examples each.`,
|
|
|
488279
488279
|
},
|
|
488280
488280
|
{
|
|
488281
488281
|
name: "suggestions",
|
|
488282
|
-
prompt: `Analyze this
|
|
488282
|
+
prompt: `Analyze this Cody usage data and suggest improvements.
|
|
488283
488283
|
|
|
488284
488284
|
## CC FEATURES REFERENCE (pick from these for features_to_try):
|
|
488285
488285
|
1. **MCP Servers**: Connect Claude to external tools, databases, and APIs via Model Context Protocol.
|
|
@@ -488322,7 +488322,7 @@ IMPORTANT for features_to_try: Pick 2-3 from the CC FEATURES REFERENCE above. In
|
|
|
488322
488322
|
},
|
|
488323
488323
|
{
|
|
488324
488324
|
name: "on_the_horizon",
|
|
488325
|
-
prompt: `Analyze this
|
|
488325
|
+
prompt: `Analyze this Cody usage data and identify future opportunities.
|
|
488326
488326
|
|
|
488327
488327
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488328
488328
|
{
|
|
@@ -488338,7 +488338,7 @@ Include 3 opportunities. Think BIG - autonomous workflows, parallel agents, iter
|
|
|
488338
488338
|
...[],
|
|
488339
488339
|
{
|
|
488340
488340
|
name: "fun_ending",
|
|
488341
|
-
prompt: `Analyze this
|
|
488341
|
+
prompt: `Analyze this Cody usage data and find a memorable moment.
|
|
488342
488342
|
|
|
488343
488343
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488344
488344
|
{
|
|
@@ -488368,7 +488368,7 @@ Find something genuinely interesting or amusing from the session summaries.`,
|
|
|
488368
488368
|
usageReport = {
|
|
488369
488369
|
type: "prompt",
|
|
488370
488370
|
name: "insights",
|
|
488371
|
-
description: "Generate a report analyzing your
|
|
488371
|
+
description: "Generate a report analyzing your Cody sessions",
|
|
488372
488372
|
contentLength: 0,
|
|
488373
488373
|
progressMessage: "analyzing your sessions",
|
|
488374
488374
|
source: "builtin",
|
|
@@ -488400,7 +488400,7 @@ ${atAGlance.whats_hindering ? `**What's hindering you:** ${atAGlance.whats_hinde
|
|
|
488400
488400
|
${atAGlance.quick_wins ? `**Quick wins to try:** ${atAGlance.quick_wins} See _Features to Try_.` : ""}
|
|
488401
488401
|
|
|
488402
488402
|
${atAGlance.ambitious_workflows ? `**Ambitious workflows:** ${atAGlance.ambitious_workflows} See _On the Horizon_.` : ""}` : "_No insights generated_";
|
|
488403
|
-
const header = `#
|
|
488403
|
+
const header = `# Cody Insights
|
|
488404
488404
|
|
|
488405
488405
|
${stats2}
|
|
488406
488406
|
${data.date_range.start} to ${data.date_range.end}
|
|
@@ -488412,7 +488412,7 @@ Your full shareable insights report is ready: ${reportUrl}${uploadHint}`;
|
|
|
488412
488412
|
return [
|
|
488413
488413
|
{
|
|
488414
488414
|
type: "text",
|
|
488415
|
-
text: `The user just ran /insights to generate a usage report analyzing their
|
|
488415
|
+
text: `The user just ran /insights to generate a usage report analyzing their Cody sessions.
|
|
488416
488416
|
|
|
488417
488417
|
Here is the full insights data:
|
|
488418
488418
|
${jsonStringify(insights, null, 2)}
|
|
@@ -493776,7 +493776,7 @@ async function execPromptHook(hook, hookName, hookEvent, jsonInput, signal, tool
|
|
|
493776
493776
|
const response7 = await queryModelWithoutStreaming({
|
|
493777
493777
|
messages: messagesToQuery,
|
|
493778
493778
|
systemPrompt: asSystemPrompt([
|
|
493779
|
-
`You are evaluating a hook in
|
|
493779
|
+
`You are evaluating a hook in Cody.
|
|
493780
493780
|
|
|
493781
493781
|
Your response must be a JSON object matching one of the following schemas:
|
|
493782
493782
|
1. If the condition is met, return: {"ok": true}
|
|
@@ -493942,7 +493942,7 @@ async function execAgentHook(hook, hookName, hookEvent, jsonInput, signal, toolU
|
|
|
493942
493942
|
structuredOutputTool
|
|
493943
493943
|
];
|
|
493944
493944
|
const systemPrompt = asSystemPrompt([
|
|
493945
|
-
`You are verifying a stop condition in
|
|
493945
|
+
`You are verifying a stop condition in Cody. Your task is to verify that the agent completed the given plan. The conversation transcript is available at: ${transcriptPath}
|
|
493946
493946
|
You can read this file to analyze the conversation history if needed.
|
|
493947
493947
|
|
|
493948
493948
|
Use the available tools to inspect the codebase and verify the condition.
|
|
@@ -498184,7 +498184,7 @@ function getSimpleDoingTasksSection() {
|
|
|
498184
498184
|
...[]
|
|
498185
498185
|
];
|
|
498186
498186
|
const userHelpSubitems = [
|
|
498187
|
-
`/help: Get help with using
|
|
498187
|
+
`/help: Get help with using Cody`,
|
|
498188
498188
|
`To give feedback, users should ${"report at https://github.com/AINative-Studio/core/issues"}`
|
|
498189
498189
|
];
|
|
498190
498190
|
const items = [
|
|
@@ -498308,7 +498308,7 @@ function getSimpleToneAndStyleSection() {
|
|
|
498308
498308
|
async function getSystemPrompt(tools, model, additionalWorkingDirectories, mcpClients) {
|
|
498309
498309
|
if (isEnvTruthy(process.env.CLAUDE_CODE_SIMPLE)) {
|
|
498310
498310
|
return [
|
|
498311
|
-
`You are
|
|
498311
|
+
`You are Cody, AINative Studio's AI-powered coding assistant.
|
|
498312
498312
|
|
|
498313
498313
|
CWD: ${getCwd()}
|
|
498314
498314
|
Date: ${getSessionStartDate()}`
|
|
@@ -498416,7 +498416,7 @@ async function computeSimpleEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
498416
498416
|
knowledgeCutoffMessage,
|
|
498417
498417
|
`The most recent Claude model family is Claude 4.5/4.6. Model IDs \u2014 Opus 4.6: '${CLAUDE_4_5_OR_4_6_MODEL_IDS.opus}', Sonnet 4.6: '${CLAUDE_4_5_OR_4_6_MODEL_IDS.sonnet}', Haiku 4.5: '${CLAUDE_4_5_OR_4_6_MODEL_IDS.haiku}'. When building AI applications, default to the latest and most capable Claude models.`,
|
|
498418
498418
|
`Cody CLI is available as a CLI in the terminal, desktop app (Mac/Windows), web app (ainative.studio/code), and IDE extensions (VS Code, JetBrains).`,
|
|
498419
|
-
`Fast mode for
|
|
498419
|
+
`Fast mode for Cody uses the same ${FRONTIER_MODEL_NAME} model with faster output. It does NOT switch to a different model. It can be toggled with /fast.`
|
|
498420
498420
|
].filter((item) => item !== null);
|
|
498421
498421
|
return [
|
|
498422
498422
|
`# Environment`,
|
|
@@ -498503,7 +498503,7 @@ function getFunctionResultClearingSection(model) {
|
|
|
498503
498503
|
|
|
498504
498504
|
Old tool results will be automatically cleared from context to free up space. The ${config9.keepRecent} most recent results are always kept.`;
|
|
498505
498505
|
}
|
|
498506
|
-
var getCachedMCConfigForFRC = null, DISCOVER_SKILLS_TOOL_NAME = null, SYSTEM_PROMPT_DYNAMIC_BOUNDARY = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__", FRONTIER_MODEL_NAME = "Claude Opus 4.6", CLAUDE_4_5_OR_4_6_MODEL_IDS, DEFAULT_AGENT_PROMPT = `You are an agent for
|
|
498506
|
+
var getCachedMCConfigForFRC = null, DISCOVER_SKILLS_TOOL_NAME = null, SYSTEM_PROMPT_DYNAMIC_BOUNDARY = "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__", FRONTIER_MODEL_NAME = "Claude Opus 4.6", CLAUDE_4_5_OR_4_6_MODEL_IDS, DEFAULT_AGENT_PROMPT = `You are an agent for Cody, Anthropic's official CLI for Claude. Given the user's message, you should use the tools available to complete the task. Complete the task fully\u2014don't gold-plate, but don't leave it half-done. When you complete the task, respond with a concise report covering what was done and any key findings \u2014 the caller will relay this to the user, so it only needs the essentials.`, SUMMARIZE_TOOL_RESULTS_SECTION = `When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later.`;
|
|
498507
498507
|
var init_prompts4 = __esm(() => {
|
|
498508
498508
|
init_env();
|
|
498509
498509
|
init_git();
|
|
@@ -504711,7 +504711,7 @@ function CostThresholdDialog(t0) {
|
|
|
504711
504711
|
let t4;
|
|
504712
504712
|
if ($3[4] !== onDone || $3[5] !== t32) {
|
|
504713
504713
|
t4 = /* @__PURE__ */ jsx_dev_runtime364.jsxDEV(Dialog, {
|
|
504714
|
-
title: "You've spent $5 on the
|
|
504714
|
+
title: "You've spent $5 on the AINative API this session.",
|
|
504715
504715
|
onCancel: onDone,
|
|
504716
504716
|
children: [
|
|
504717
504717
|
t1,
|
|
@@ -511263,7 +511263,7 @@ function useDiffInIDE({
|
|
|
511263
511263
|
const isUnmounted = import_react210.useRef(false);
|
|
511264
511264
|
const [hasError, setHasError] = import_react210.useState(false);
|
|
511265
511265
|
const sha = import_react210.useMemo(() => randomUUID35().slice(0, 6), []);
|
|
511266
|
-
const tabName = import_react210.useMemo(() => `\u273B [
|
|
511266
|
+
const tabName = import_react210.useMemo(() => `\u273B [Cody] ${basename42(filePath)} (${sha}) \u29C9`, [filePath, sha]);
|
|
511267
511267
|
const shouldShowDiffInIDE = hasAccessToIDEExtensionDiffFeature(toolUseContext.options.mcpClients) && getGlobalConfig().diffTool === "auto" && !filePath.endsWith(".ipynb");
|
|
511268
511268
|
const ideName = getConnectedIdeName(toolUseContext.options.mcpClients) ?? "IDE";
|
|
511269
511269
|
async function showDiff() {
|
|
@@ -514205,7 +514205,7 @@ function buildPlanApprovalOptions({
|
|
|
514205
514205
|
});
|
|
514206
514206
|
if (showUltraplan) {
|
|
514207
514207
|
options.push({
|
|
514208
|
-
label: "No, refine with Ultraplan on
|
|
514208
|
+
label: "No, refine with Ultraplan on Cody on the web",
|
|
514209
514209
|
value: "ultraplan"
|
|
514210
514210
|
});
|
|
514211
514211
|
}
|
|
@@ -517474,14 +517474,14 @@ function permissionComponentForTool(tool) {
|
|
|
517474
517474
|
function getNotificationMessage(toolUseConfirm) {
|
|
517475
517475
|
const toolName = toolUseConfirm.tool.userFacingName(toolUseConfirm.input);
|
|
517476
517476
|
if (toolUseConfirm.tool === ExitPlanModeV2Tool) {
|
|
517477
|
-
return "
|
|
517477
|
+
return "Cody needs your approval for the plan";
|
|
517478
517478
|
}
|
|
517479
517479
|
if (toolUseConfirm.tool === EnterPlanModeTool) {
|
|
517480
|
-
return "
|
|
517480
|
+
return "Cody wants to enter plan mode";
|
|
517481
517481
|
}
|
|
517482
517482
|
if (false) {}
|
|
517483
517483
|
if (!toolName || toolName.trim() === "") {
|
|
517484
|
-
return "
|
|
517484
|
+
return "Cody needs your attention";
|
|
517485
517485
|
}
|
|
517486
517486
|
return `Claude needs your permission to use ${toolName}`;
|
|
517487
517487
|
}
|
|
@@ -518049,7 +518049,7 @@ function ElicitationFormDialog({
|
|
|
518049
518049
|
const currentFieldIsText = currentField !== undefined && isTextField(currentField.schema) && !isEnumSchema(currentField.schema);
|
|
518050
518050
|
const isEditingTextField = currentFieldIsText && !focusedButton;
|
|
518051
518051
|
useRegisterOverlay("elicitation");
|
|
518052
|
-
useNotifyAfterTimeout("
|
|
518052
|
+
useNotifyAfterTimeout("Cody needs your input", "elicitation_dialog");
|
|
518053
518053
|
const syncTextInput = import_react220.useCallback((fieldIndex) => {
|
|
518054
518054
|
if (fieldIndex === undefined) {
|
|
518055
518055
|
setTextInputValue("");
|
|
@@ -518900,7 +518900,7 @@ function ElicitationURLDialog({
|
|
|
518900
518900
|
const phaseRef = import_react220.useRef("prompt");
|
|
518901
518901
|
const [focusedButton, setFocusedButton] = import_react220.useState("accept");
|
|
518902
518902
|
const showCancel = waitingState?.showCancel ?? false;
|
|
518903
|
-
useNotifyAfterTimeout("
|
|
518903
|
+
useNotifyAfterTimeout("Cody needs your input", "elicitation_url_dialog");
|
|
518904
518904
|
useRegisterOverlay("elicitation-url");
|
|
518905
518905
|
phaseRef.current = phase;
|
|
518906
518906
|
const onWaitingDismissRef = import_react220.useRef(onWaitingDismiss);
|
|
@@ -540017,7 +540017,7 @@ function TranscriptSharePrompt(t0) {
|
|
|
540017
540017
|
}, undefined, true, undefined, this),
|
|
540018
540018
|
/* @__PURE__ */ jsx_dev_runtime446.jsxDEV(ThemedText, {
|
|
540019
540019
|
bold: true,
|
|
540020
|
-
children: "Can Anthropic look at your session transcript to help us improve
|
|
540020
|
+
children: "Can Anthropic look at your session transcript to help us improve Cody?"
|
|
540021
540021
|
}, undefined, false, undefined, this)
|
|
540022
540022
|
]
|
|
540023
540023
|
}, undefined, true, undefined, this);
|
|
@@ -540960,7 +540960,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
540960
540960
|
let t32;
|
|
540961
540961
|
if ($3[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
540962
540962
|
t32 = {
|
|
540963
|
-
label: "Open in
|
|
540963
|
+
label: "Open in Cody Desktop",
|
|
540964
540964
|
value: "try"
|
|
540965
540965
|
};
|
|
540966
540966
|
$3[5] = t32;
|
|
@@ -540993,7 +540993,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
540993
540993
|
t6 = /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedBox_default, {
|
|
540994
540994
|
marginBottom: 1,
|
|
540995
540995
|
children: /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedText, {
|
|
540996
|
-
children: "Same
|
|
540996
|
+
children: "Same Cody with visual diffs, live app preview, parallel sessions, and more."
|
|
540997
540997
|
}, undefined, false, undefined, this)
|
|
540998
540998
|
}, undefined, false, undefined, this);
|
|
540999
540999
|
$3[8] = t6;
|
|
@@ -541011,7 +541011,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
541011
541011
|
let t8;
|
|
541012
541012
|
if ($3[11] !== handleSelect || $3[12] !== t7) {
|
|
541013
541013
|
t8 = /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(PermissionDialog, {
|
|
541014
|
-
title: "Try
|
|
541014
|
+
title: "Try Cody Desktop",
|
|
541015
541015
|
children: /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedBox_default, {
|
|
541016
541016
|
flexDirection: "column",
|
|
541017
541017
|
paddingX: 2,
|
|
@@ -541379,7 +541379,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541379
541379
|
},
|
|
541380
541380
|
{
|
|
541381
541381
|
id: "paste-images-mac",
|
|
541382
|
-
content: async () => "Paste images into
|
|
541382
|
+
content: async () => "Paste images into Cody using control+v (not cmd+v!)",
|
|
541383
541383
|
cooldownSessions: 10,
|
|
541384
541384
|
isRelevant: async () => getPlatform() === "macos"
|
|
541385
541385
|
},
|
|
@@ -541448,7 +541448,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541448
541448
|
},
|
|
541449
541449
|
{
|
|
541450
541450
|
id: "desktop-app",
|
|
541451
|
-
content: async () => "Run
|
|
541451
|
+
content: async () => "Run Cody locally or remotely using the Claude desktop app: clau.de/desktop",
|
|
541452
541452
|
cooldownSessions: 15,
|
|
541453
541453
|
isRelevant: async () => getPlatform() !== "linux"
|
|
541454
541454
|
},
|
|
@@ -541456,7 +541456,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541456
541456
|
id: "desktop-shortcut",
|
|
541457
541457
|
content: async (ctx) => {
|
|
541458
541458
|
const blue2 = color("suggestion", ctx.theme);
|
|
541459
|
-
return `Continue your session in
|
|
541459
|
+
return `Continue your session in Cody Desktop with ${blue2("/desktop")}`;
|
|
541460
541460
|
},
|
|
541461
541461
|
cooldownSessions: 15,
|
|
541462
541462
|
isRelevant: async () => {
|
|
@@ -541473,7 +541473,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541473
541473
|
},
|
|
541474
541474
|
{
|
|
541475
541475
|
id: "mobile-app",
|
|
541476
|
-
content: async () => "/mobile to use
|
|
541476
|
+
content: async () => "/mobile to use Cody from the Claude app on your phone",
|
|
541477
541477
|
cooldownSessions: 15,
|
|
541478
541478
|
isRelevant: async () => true
|
|
541479
541479
|
},
|
|
@@ -541576,7 +541576,7 @@ ${blue2(`/plugin install vercel@${OFFICIAL_MARKETPLACE_NAME}`)}`;
|
|
|
541576
541576
|
content: async (ctx) => {
|
|
541577
541577
|
const claude = color("claude", ctx.theme);
|
|
541578
541578
|
const reward = getCachedReferrerReward();
|
|
541579
|
-
return reward ? `Share
|
|
541579
|
+
return reward ? `Share Cody and earn ${claude(formatCreditAmount(reward))} of extra usage \xB7 ${claude("/passes")}` : `You have free guest passes to share \xB7 ${claude("/passes")}`;
|
|
541580
541580
|
},
|
|
541581
541581
|
cooldownSessions: 3,
|
|
541582
541582
|
isRelevant: async () => {
|
|
@@ -545016,7 +545016,7 @@ async function _temp291() {
|
|
|
545016
545016
|
priority: "high"
|
|
545017
545017
|
};
|
|
545018
545018
|
}
|
|
545019
|
-
var NPM_DEPRECATION_MESSAGE = "
|
|
545019
|
+
var NPM_DEPRECATION_MESSAGE = "Cody has switched from npm to native installer. Run `claude install` or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.";
|
|
545020
545020
|
var init_useNpmDeprecationNotification = __esm(() => {
|
|
545021
545021
|
init_doctorDiagnostic();
|
|
545022
545022
|
init_envUtils();
|
|
@@ -545286,7 +545286,7 @@ async function _temp295() {
|
|
|
545286
545286
|
children: [
|
|
545287
545287
|
"Use your existing Claude ",
|
|
545288
545288
|
subscriptionType,
|
|
545289
|
-
" plan with
|
|
545289
|
+
" plan with Cody",
|
|
545290
545290
|
/* @__PURE__ */ jsx_dev_runtime463.jsxDEV(ThemedText, {
|
|
545291
545291
|
color: "text",
|
|
545292
545292
|
dimColor: true,
|
|
@@ -547062,7 +547062,7 @@ function REPL({
|
|
|
547062
547062
|
const [haikuTitle, setHaikuTitle] = import_react318.useState();
|
|
547063
547063
|
const haikuTitleAttemptedRef = import_react318.useRef((initialMessages?.length ?? 0) > 0);
|
|
547064
547064
|
const agentTitle = mainThreadAgentDefinition?.agentType;
|
|
547065
|
-
const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? "
|
|
547065
|
+
const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? "Cody";
|
|
547066
547066
|
const isWaitingForApproval = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || pendingWorkerRequest || pendingSandboxRequest;
|
|
547067
547067
|
const isShowingLocalJSXCommand = toolJSX?.isLocalJSXCommand === true && toolJSX?.jsx != null;
|
|
547068
547068
|
const titleIsAnimating = isLoading && !isWaitingForApproval && !isShowingLocalJSXCommand;
|
|
@@ -548944,8 +548944,8 @@ ${fileList}`);
|
|
|
548944
548944
|
import_react318.useEffect(() => {
|
|
548945
548945
|
const handleSuspend = () => {
|
|
548946
548946
|
process.stdout.write(`
|
|
548947
|
-
|
|
548948
|
-
Note: ctrl + z now suspends
|
|
548947
|
+
Cody has been suspended. Run \`fg\` to bring Cody back.
|
|
548948
|
+
Note: ctrl + z now suspends Cody, ctrl + _ undoes input.
|
|
548949
548949
|
`);
|
|
548950
548950
|
};
|
|
548951
548951
|
const handleResume = () => {
|
|
@@ -550876,7 +550876,7 @@ function PreflightStep(t0) {
|
|
|
550876
550876
|
children: [
|
|
550877
550877
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550878
550878
|
color: "error",
|
|
550879
|
-
children: "Unable to connect to
|
|
550879
|
+
children: "Unable to connect to AINative services"
|
|
550880
550880
|
}, undefined, false, undefined, this),
|
|
550881
550881
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550882
550882
|
color: "error",
|
|
@@ -550903,7 +550903,7 @@ function PreflightStep(t0) {
|
|
|
550903
550903
|
}, undefined, false, undefined, this),
|
|
550904
550904
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550905
550905
|
children: [
|
|
550906
|
-
"Note:
|
|
550906
|
+
"Note: Cody might not be available in your country. Check supported countries at",
|
|
550907
550907
|
" ",
|
|
550908
550908
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550909
550909
|
color: "suggestion",
|
|
@@ -552404,7 +552404,7 @@ function Onboarding({
|
|
|
552404
552404
|
children: [
|
|
552405
552405
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
552406
552406
|
bold: true,
|
|
552407
|
-
children: "Use
|
|
552407
|
+
children: "Use Cody's terminal setup?"
|
|
552408
552408
|
}, undefined, false, undefined, this),
|
|
552409
552409
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
552410
552410
|
flexDirection: "column",
|
|
@@ -552893,7 +552893,7 @@ function TrustDialog(t0) {
|
|
|
552893
552893
|
}, undefined, true, undefined, this);
|
|
552894
552894
|
t18 = /* @__PURE__ */ jsx_dev_runtime479.jsxDEV(ThemedText, {
|
|
552895
552895
|
children: [
|
|
552896
|
-
"
|
|
552896
|
+
"Cody",
|
|
552897
552897
|
"'",
|
|
552898
552898
|
"ll be able to read, edit, and execute files here."
|
|
552899
552899
|
]
|
|
@@ -553087,7 +553087,7 @@ function BypassPermissionsModeDialog(t0) {
|
|
|
553087
553087
|
children: [
|
|
553088
553088
|
/* @__PURE__ */ jsx_dev_runtime480.jsxDEV(ThemedText, {
|
|
553089
553089
|
children: [
|
|
553090
|
-
"In Bypass Permissions mode,
|
|
553090
|
+
"In Bypass Permissions mode, Cody will not ask for your approval before running potentially dangerous commands.",
|
|
553091
553091
|
/* @__PURE__ */ jsx_dev_runtime480.jsxDEV(Newline, {}, undefined, false, undefined, this),
|
|
553092
553092
|
"This mode should only be used in a sandboxed container/VM that has restricted internet access and can easily be restored if damaged."
|
|
553093
553093
|
]
|
|
@@ -553120,7 +553120,7 @@ function BypassPermissionsModeDialog(t0) {
|
|
|
553120
553120
|
let t5;
|
|
553121
553121
|
if ($3[5] !== onChange) {
|
|
553122
553122
|
t5 = /* @__PURE__ */ jsx_dev_runtime480.jsxDEV(Dialog, {
|
|
553123
|
-
title: "WARNING:
|
|
553123
|
+
title: "WARNING: Cody running in Bypass Permissions mode",
|
|
553124
553124
|
color: "error",
|
|
553125
553125
|
onCancel: handleEscape,
|
|
553126
553126
|
children: [
|
|
@@ -553219,7 +553219,7 @@ function ClaudeInChromeOnboarding(t0) {
|
|
|
553219
553219
|
if ($3[6] !== t4) {
|
|
553220
553220
|
t5 = /* @__PURE__ */ jsx_dev_runtime481.jsxDEV(ThemedText, {
|
|
553221
553221
|
children: [
|
|
553222
|
-
"Claude in Chrome works with the Chrome extension to let you control your browser directly from
|
|
553222
|
+
"Claude in Chrome works with the Chrome extension to let you control your browser directly from Cody. You can navigate websites, fill forms, capture screenshots, record GIFs, and debug with console logs and network requests.",
|
|
553223
553223
|
t4
|
|
553224
553224
|
]
|
|
553225
553225
|
}, undefined, true, undefined, this);
|
|
@@ -553850,13 +553850,13 @@ function ResumeTask({
|
|
|
553850
553850
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
553851
553851
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553852
553852
|
bold: true,
|
|
553853
|
-
children: "Loading
|
|
553853
|
+
children: "Loading Cody sessions\u2026"
|
|
553854
553854
|
}, undefined, false, undefined, this)
|
|
553855
553855
|
]
|
|
553856
553856
|
}, undefined, true, undefined, this),
|
|
553857
553857
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553858
553858
|
dimColor: true,
|
|
553859
|
-
children: retrying ? "Retrying\u2026" : "Fetching your
|
|
553859
|
+
children: retrying ? "Retrying\u2026" : "Fetching your Cody sessions\u2026"
|
|
553860
553860
|
}, undefined, false, undefined, this)
|
|
553861
553861
|
]
|
|
553862
553862
|
}, undefined, true, undefined, this);
|
|
@@ -553869,7 +553869,7 @@ function ResumeTask({
|
|
|
553869
553869
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553870
553870
|
bold: true,
|
|
553871
553871
|
color: "error",
|
|
553872
|
-
children: "Error loading
|
|
553872
|
+
children: "Error loading Cody sessions"
|
|
553873
553873
|
}, undefined, false, undefined, this),
|
|
553874
553874
|
renderErrorSpecificGuidance(loadErrorType),
|
|
553875
553875
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
@@ -553900,7 +553900,7 @@ function ResumeTask({
|
|
|
553900
553900
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553901
553901
|
bold: true,
|
|
553902
553902
|
children: [
|
|
553903
|
-
"No
|
|
553903
|
+
"No Cody sessions found",
|
|
553904
553904
|
currentRepo && /* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553905
553905
|
children: [
|
|
553906
553906
|
" for ",
|
|
@@ -554099,7 +554099,7 @@ function renderErrorSpecificGuidance(errorType) {
|
|
|
554099
554099
|
flexDirection: "row",
|
|
554100
554100
|
children: /* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
554101
554101
|
dimColor: true,
|
|
554102
|
-
children: "Sorry,
|
|
554102
|
+
children: "Sorry, Cody encountered an error"
|
|
554103
554103
|
}, undefined, false, undefined, this)
|
|
554104
554104
|
}, undefined, false, undefined, this);
|
|
554105
554105
|
}
|
|
@@ -554419,7 +554419,7 @@ function TeleportRepoMismatchDialog(t0) {
|
|
|
554419
554419
|
}, undefined, false, undefined, this),
|
|
554420
554420
|
/* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
|
|
554421
554421
|
children: [
|
|
554422
|
-
"Open
|
|
554422
|
+
"Open Cody in ",
|
|
554423
554423
|
/* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
|
|
554424
554424
|
bold: true,
|
|
554425
554425
|
children: targetRepo
|
|
@@ -555332,7 +555332,7 @@ Tell the user that debug logging is now active at \`${debugLogPath}\`, ask them
|
|
|
555332
555332
|
`;
|
|
555333
555333
|
const prompt = `# Debug Skill
|
|
555334
555334
|
|
|
555335
|
-
Help the user debug an issue they're encountering in this current
|
|
555335
|
+
Help the user debug an issue they're encountering in this current Cody session.
|
|
555336
555336
|
${justEnabledSection}
|
|
555337
555337
|
## Session Debug Log
|
|
555338
555338
|
|
|
@@ -555357,7 +555357,7 @@ Remember that settings are in:
|
|
|
555357
555357
|
|
|
555358
555358
|
1. Review the user's issue description
|
|
555359
555359
|
2. The last ${DEFAULT_DEBUG_LINES_READ} lines show the debug file format. Look for [ERROR] and [WARN] entries, stack traces, and failure patterns across the file
|
|
555360
|
-
3. Consider launching the ${CLAUDE_CODE_GUIDE_AGENT_TYPE} subagent to understand the relevant
|
|
555360
|
+
3. Consider launching the ${CLAUDE_CODE_GUIDE_AGENT_TYPE} subagent to understand the relevant Cody features
|
|
555361
555361
|
4. Explain what you found in plain language
|
|
555362
555362
|
5. Suggest concrete fixes or next steps
|
|
555363
555363
|
`;
|
|
@@ -556432,7 +556432,7 @@ function registerStuckSkill() {
|
|
|
556432
556432
|
}
|
|
556433
556433
|
registerBundledSkill({
|
|
556434
556434
|
name: "stuck",
|
|
556435
|
-
description: "[ANT-ONLY] Investigate frozen/stuck/slow
|
|
556435
|
+
description: "[ANT-ONLY] Investigate frozen/stuck/slow Cody sessions on this machine and post a diagnostic report to #claude-code-feedback.",
|
|
556436
556436
|
userInvocable: true,
|
|
556437
556437
|
async getPromptForCommand(args) {
|
|
556438
556438
|
let prompt = STUCK_PROMPT;
|
|
@@ -556447,13 +556447,13 @@ ${args}
|
|
|
556447
556447
|
}
|
|
556448
556448
|
});
|
|
556449
556449
|
}
|
|
556450
|
-
var STUCK_PROMPT = `# /stuck \u2014 diagnose frozen/slow
|
|
556450
|
+
var STUCK_PROMPT = `# /stuck \u2014 diagnose frozen/slow Cody sessions
|
|
556451
556451
|
|
|
556452
|
-
The user thinks another
|
|
556452
|
+
The user thinks another Cody session on this machine is frozen, stuck, or very slow. Investigate and post a report to #claude-code-feedback.
|
|
556453
556453
|
|
|
556454
556454
|
## What to look for
|
|
556455
556455
|
|
|
556456
|
-
Scan for other
|
|
556456
|
+
Scan for other Cody processes (excluding the current one \u2014 PID is in \`process.pid\` but for shell commands just exclude the PID you see running this prompt). Process names are typically \`claude\` (installed) or \`cli\` (native dev build).
|
|
556457
556457
|
|
|
556458
556458
|
Signs of a stuck session:
|
|
556459
556459
|
- **High CPU (\u226590%) sustained** \u2014 likely an infinite loop. Sample twice, 1-2s apart, to confirm it's not a transient spike.
|
|
@@ -556465,7 +556465,7 @@ Signs of a stuck session:
|
|
|
556465
556465
|
|
|
556466
556466
|
## Investigation steps
|
|
556467
556467
|
|
|
556468
|
-
1. **List all
|
|
556468
|
+
1. **List all Cody processes** (macOS/Linux):
|
|
556469
556469
|
\`\`\`
|
|
556470
556470
|
ps -axo pid=,pcpu=,rss=,etime=,state=,comm=,command= | grep -E '(claude|cli)' | grep -v grep
|
|
556471
556471
|
\`\`\`
|
|
@@ -556489,7 +556489,7 @@ If you did find a stuck/slow session, post to **#claude-code-feedback** (channel
|
|
|
556489
556489
|
|
|
556490
556490
|
**Use a two-message structure** to keep the channel scannable:
|
|
556491
556491
|
|
|
556492
|
-
1. **Top-level message** \u2014 one short line: hostname,
|
|
556492
|
+
1. **Top-level message** \u2014 one short line: hostname, Cody version, and a terse symptom (e.g. "session PID 12345 pegged at 100% CPU for 10min" or "git subprocess hung in D state"). No code blocks, no details.
|
|
556493
556493
|
2. **Thread reply** \u2014 the full diagnostic dump. Pass the top-level message's \`ts\` as \`thread_ts\`. Include:
|
|
556494
556494
|
- PID, CPU%, RSS, state, uptime, command line, child processes
|
|
556495
556495
|
- Your diagnosis of what's likely wrong
|
|
@@ -556513,7 +556513,7 @@ function generateSettingsSchema() {
|
|
|
556513
556513
|
function registerUpdateConfigSkill() {
|
|
556514
556514
|
registerBundledSkill({
|
|
556515
556515
|
name: "update-config",
|
|
556516
|
-
description: 'Use this skill to configure the
|
|
556516
|
+
description: 'Use this skill to configure the Cody harness via settings.json. Automated behaviors ("from now on when X", "each time X", "whenever X", "before/after X") require hooks configured in settings.json - the harness executes these, not Claude, so memory/preferences cannot fulfill them. Also use for: permissions ("allow X", "add permission", "move permission to"), env vars ("set X=Y"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: "allow npm commands", "add bq permission to global settings", "move permission to user settings", "set DEBUG=true", "when claude stops show X". For simple settings like theme/model, use Config tool.',
|
|
556517
556517
|
allowedTools: ["Read"],
|
|
556518
556518
|
userInvocable: true,
|
|
556519
556519
|
async getPromptForCommand(args) {
|
|
@@ -556642,7 +556642,7 @@ Plugin syntax: \`plugin-name@source\` where source is \`claude-code-marketplace\
|
|
|
556642
556642
|
- \`syntaxHighlightingDisabled\`: Disable diff highlighting
|
|
556643
556643
|
`, HOOKS_DOCS = `## Hooks Configuration
|
|
556644
556644
|
|
|
556645
|
-
Hooks run commands at specific points in
|
|
556645
|
+
Hooks run commands at specific points in Cody's lifecycle.
|
|
556646
556646
|
|
|
556647
556647
|
### Hook Structure
|
|
556648
556648
|
\`\`\`json
|
|
@@ -556841,7 +556841,7 @@ var init_updateConfig = __esm(() => {
|
|
|
556841
556841
|
init_bundledSkills();
|
|
556842
556842
|
UPDATE_CONFIG_PROMPT = `# Update Config Skill
|
|
556843
556843
|
|
|
556844
|
-
Modify
|
|
556844
|
+
Modify Cody configuration by updating settings.json files.
|
|
556845
556845
|
|
|
556846
556846
|
## When Hooks Are Required (Not Memory)
|
|
556847
556847
|
|
|
@@ -557141,7 +557141,7 @@ function cliOk(msg) {
|
|
|
557141
557141
|
|
|
557142
557142
|
// src/commands/mcp/addCommand.ts
|
|
557143
557143
|
function registerMcpAddCommand(mcp2) {
|
|
557144
|
-
mcp2.command("add <name> <commandOrUrl> [args...]").description(`Add an MCP server to
|
|
557144
|
+
mcp2.command("add <name> <commandOrUrl> [args...]").description(`Add an MCP server to Cody.
|
|
557145
557145
|
|
|
557146
557146
|
` + `Examples:
|
|
557147
557147
|
` + ` # Add HTTP server:
|
|
@@ -557289,7 +557289,7 @@ var init_addCommand = __esm(() => {
|
|
|
557289
557289
|
// src/commands/mcp/xaaIdpCommand.ts
|
|
557290
557290
|
function registerMcpXaaIdpCommand(mcp2) {
|
|
557291
557291
|
const xaaIdp = mcp2.command("xaa").description("Manage the XAA (SEP-990) IdP connection");
|
|
557292
|
-
xaaIdp.command("setup").description("Configure the IdP connection (one-time setup for all XAA-enabled servers)").requiredOption("--issuer <url>", "IdP issuer URL (OIDC discovery)").requiredOption("--client-id <id>", "
|
|
557292
|
+
xaaIdp.command("setup").description("Configure the IdP connection (one-time setup for all XAA-enabled servers)").requiredOption("--issuer <url>", "IdP issuer URL (OIDC discovery)").requiredOption("--client-id <id>", "Cody's client_id at the IdP").option("--client-secret", "Read IdP client secret from MCP_XAA_IDP_CLIENT_SECRET env var").option("--callback-port <port>", "Fixed loopback callback port (only if IdP does not honor RFC 8252 port-any matching)").action((options) => {
|
|
557293
557293
|
let issuerUrl;
|
|
557294
557294
|
try {
|
|
557295
557295
|
issuerUrl = new URL(options.issuer);
|
|
@@ -558173,7 +558173,7 @@ async function setup(cwd2, permissionMode, allowDangerouslySkipPermissions, work
|
|
|
558173
558173
|
logForDiagnosticsNoPII("info", "setup_started");
|
|
558174
558174
|
const nodeVersion = process.version.match(/^v(\d+)\./)?.[1];
|
|
558175
558175
|
if (!nodeVersion || parseInt(nodeVersion) < 18) {
|
|
558176
|
-
console.error(source_default.bold.red("Error:
|
|
558176
|
+
console.error(source_default.bold.red("Error: Cody requires Node.js version 18 or higher."));
|
|
558177
558177
|
process.exit(1);
|
|
558178
558178
|
}
|
|
558179
558179
|
if (customSessionId) {
|
|
@@ -568410,7 +568410,7 @@ async function mcpResetChoicesHandler() {
|
|
|
568410
568410
|
enableAllProjectMcpServers: false
|
|
568411
568411
|
}));
|
|
568412
568412
|
cliOk(`All project-scoped (.mcp.json) server approvals and rejections have been reset.
|
|
568413
|
-
You will be prompted for approval next time you start
|
|
568413
|
+
You will be prompted for approval next time you start Cody.`);
|
|
568414
568414
|
}
|
|
568415
568415
|
var jsx_dev_runtime491;
|
|
568416
568416
|
var init_mcp5 = __esm(() => {
|
|
@@ -569135,11 +569135,11 @@ function Install({
|
|
|
569135
569135
|
}, [force, target]);
|
|
569136
569136
|
import_react334.useEffect(() => {
|
|
569137
569137
|
if (state4.type === "success") {
|
|
569138
|
-
setTimeout(onDone, 2000, "
|
|
569138
|
+
setTimeout(onDone, 2000, "Cody installation completed successfully", {
|
|
569139
569139
|
display: "system"
|
|
569140
569140
|
});
|
|
569141
569141
|
} else if (state4.type === "error") {
|
|
569142
|
-
setTimeout(onDone, 3000, "
|
|
569142
|
+
setTimeout(onDone, 3000, "Cody installation failed", {
|
|
569143
569143
|
display: "system"
|
|
569144
569144
|
});
|
|
569145
569145
|
}
|
|
@@ -569159,7 +569159,7 @@ function Install({
|
|
|
569159
569159
|
state4.type === "installing" && /* @__PURE__ */ jsx_dev_runtime492.jsxDEV(ThemedText, {
|
|
569160
569160
|
color: "claude",
|
|
569161
569161
|
children: [
|
|
569162
|
-
"Installing
|
|
569162
|
+
"Installing Cody native build ",
|
|
569163
569163
|
state4.version,
|
|
569164
569164
|
"..."
|
|
569165
569165
|
]
|
|
@@ -569184,7 +569184,7 @@ function Install({
|
|
|
569184
569184
|
/* @__PURE__ */ jsx_dev_runtime492.jsxDEV(ThemedText, {
|
|
569185
569185
|
color: "success",
|
|
569186
569186
|
bold: true,
|
|
569187
|
-
children: "
|
|
569187
|
+
children: "Cody successfully installed!"
|
|
569188
569188
|
}, undefined, false, undefined, this)
|
|
569189
569189
|
]
|
|
569190
569190
|
}, undefined, true, undefined, this),
|
|
@@ -569295,7 +569295,7 @@ var init_install = __esm(() => {
|
|
|
569295
569295
|
install = {
|
|
569296
569296
|
type: "local-jsx",
|
|
569297
569297
|
name: "install",
|
|
569298
|
-
description: "Install
|
|
569298
|
+
description: "Install Cody native build",
|
|
569299
569299
|
argumentHint: "[options]",
|
|
569300
569300
|
async call(onDone, _context, args) {
|
|
569301
569301
|
const force = args.includes("--force");
|