@ainative/cody-cli 0.2.5 → 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 +236 -243
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// useEffectEvent polyfill for Bun 1.3.x
|
|
3
|
-
var __useEffectEvent = function(fn) {
|
|
4
|
-
var React = require("react");
|
|
5
|
-
var ref = React.useRef(fn);
|
|
6
|
-
React.useLayoutEffect(function(){ ref.current = fn; });
|
|
7
|
-
return React.useCallback(function(){ return ref.current.apply(void 0, arguments); }, []);
|
|
8
|
-
};
|
|
9
2
|
var __create = Object.create;
|
|
10
3
|
var __getProtoOf = Object.getPrototypeOf;
|
|
11
4
|
var __defProp = Object.defineProperty;
|
|
@@ -50174,7 +50167,7 @@ var init_windowsPaths = __esm(() => {
|
|
|
50174
50167
|
if (checkPathExists(process.env.CLAUDE_CODE_GIT_BASH_PATH)) {
|
|
50175
50168
|
return process.env.CLAUDE_CODE_GIT_BASH_PATH;
|
|
50176
50169
|
}
|
|
50177
|
-
console.error(`
|
|
50170
|
+
console.error(`Cody was unable to find CLAUDE_CODE_GIT_BASH_PATH path "${process.env.CLAUDE_CODE_GIT_BASH_PATH}"`);
|
|
50178
50171
|
process.exit(1);
|
|
50179
50172
|
}
|
|
50180
50173
|
const gitPath = findExecutable("git");
|
|
@@ -50184,7 +50177,7 @@ var init_windowsPaths = __esm(() => {
|
|
|
50184
50177
|
return bashPath;
|
|
50185
50178
|
}
|
|
50186
50179
|
}
|
|
50187
|
-
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");
|
|
50188
50181
|
process.exit(1);
|
|
50189
50182
|
});
|
|
50190
50183
|
windowsPathToPosixPath = memoizeWithLRU((windowsPath) => {
|
|
@@ -52364,7 +52357,7 @@ var GIT_ROOT_NOT_FOUND, findGitRootImpl, findGitRoot, resolveCanonicalRoot, find
|
|
|
52364
52357
|
return getWorktreeCountFromFs();
|
|
52365
52358
|
}, stashToCleanState = async (message) => {
|
|
52366
52359
|
try {
|
|
52367
|
-
const stashMessage = message || `
|
|
52360
|
+
const stashMessage = message || `Cody auto-stash - ${new Date().toISOString()}`;
|
|
52368
52361
|
const { untracked } = await getFileStatus();
|
|
52369
52362
|
if (untracked.length > 0) {
|
|
52370
52363
|
const { code: addCode } = await execFileNoThrow(gitExe(), ["add", ...untracked], { preserveOutputOnError: false });
|
|
@@ -55245,7 +55238,7 @@ var init_coreSchemas = __esm(() => {
|
|
|
55245
55238
|
subscriptionType: exports_external.string().optional(),
|
|
55246
55239
|
tokenSource: exports_external.string().optional(),
|
|
55247
55240
|
apiKeySource: exports_external.string().optional(),
|
|
55248
|
-
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.).')
|
|
55249
55242
|
}).describe("Information about the logged in user's account."));
|
|
55250
55243
|
AgentMcpServerSpecSchema = lazySchema(() => exports_external.union([
|
|
55251
55244
|
exports_external.string(),
|
|
@@ -55895,7 +55888,7 @@ function validateOfficialNameSource(name, source) {
|
|
|
55895
55888
|
if (source.source === "github") {
|
|
55896
55889
|
const repo = source.repo || "";
|
|
55897
55890
|
if (!repo.toLowerCase().startsWith(`${OFFICIAL_GITHUB_ORG}/`)) {
|
|
55898
|
-
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.`;
|
|
55899
55892
|
}
|
|
55900
55893
|
return null;
|
|
55901
55894
|
}
|
|
@@ -55906,9 +55899,9 @@ function validateOfficialNameSource(name, source) {
|
|
|
55906
55899
|
if (isHttpsAnthropics || isSshAnthropics) {
|
|
55907
55900
|
return null;
|
|
55908
55901
|
}
|
|
55909
|
-
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.`;
|
|
55910
55903
|
}
|
|
55911
|
-
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.`;
|
|
55912
55905
|
}
|
|
55913
55906
|
function isLocalPluginSource(source) {
|
|
55914
55907
|
return typeof source === "string" && source.startsWith("./");
|
|
@@ -56815,7 +56808,7 @@ var init_types3 = __esm(() => {
|
|
|
56815
56808
|
allow: exports_external.array(PermissionRuleSchema()).optional().describe("List of permission rules for allowed operations"),
|
|
56816
56809
|
deny: exports_external.array(PermissionRuleSchema()).optional().describe("List of permission rules for denied operations"),
|
|
56817
56810
|
ask: exports_external.array(PermissionRuleSchema()).optional().describe("List of permission rules that should always prompt for confirmation"),
|
|
56818
|
-
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"),
|
|
56819
56812
|
disableBypassPermissionsMode: exports_external.enum(["disable"]).optional().describe("Disable the ability to bypass permission prompts"),
|
|
56820
56813
|
...{},
|
|
56821
56814
|
additionalDirectories: exports_external.array(exports_external.string()).optional().describe("Additional directories to include in the permission scope")
|
|
@@ -56860,7 +56853,7 @@ var init_types3 = __esm(() => {
|
|
|
56860
56853
|
"mcp"
|
|
56861
56854
|
];
|
|
56862
56855
|
SettingsSchema = lazySchema(() => exports_external.object({
|
|
56863
|
-
$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"),
|
|
56864
56857
|
apiKeyHelper: exports_external.string().optional().describe("Path to a script that outputs authentication values"),
|
|
56865
56858
|
awsCredentialExport: exports_external.string().optional().describe("Path to a script that exports AWS credentials"),
|
|
56866
56859
|
awsAuthRefresh: exports_external.string().optional().describe("Path to a script that refreshes AWS authentication"),
|
|
@@ -56868,7 +56861,7 @@ var init_types3 = __esm(() => {
|
|
|
56868
56861
|
...isEnvTruthy(process.env.CLAUDE_CODE_ENABLE_XAA) ? {
|
|
56869
56862
|
xaaIdp: exports_external.object({
|
|
56870
56863
|
issuer: exports_external.string().url().describe("IdP issuer URL for OIDC discovery"),
|
|
56871
|
-
clientId: exports_external.string().describe("
|
|
56864
|
+
clientId: exports_external.string().describe("Cody's client_id registered at the IdP"),
|
|
56872
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.")
|
|
56873
56866
|
}).optional().describe("XAA (SEP-990) IdP connection. Configure once; all XAA-enabled MCP servers reuse this.")
|
|
56874
56867
|
} : {},
|
|
@@ -56878,15 +56871,15 @@ var init_types3 = __esm(() => {
|
|
|
56878
56871
|
}).optional().describe("Custom file suggestion configuration for @ mentions"),
|
|
56879
56872
|
respectGitignore: exports_external.boolean().optional().describe("Whether file picker should respect .gitignore files (default: true). " + "Note: .ignore files are always respected."),
|
|
56880
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."),
|
|
56881
|
-
env: EnvironmentVariablesSchema().optional().describe("Environment variables to set for
|
|
56874
|
+
env: EnvironmentVariablesSchema().optional().describe("Environment variables to set for Cody sessions"),
|
|
56882
56875
|
attribution: exports_external.object({
|
|
56883
56876
|
commit: exports_external.string().optional().describe("Attribution text for git commits, including any trailers. " + "Empty string hides attribution."),
|
|
56884
56877
|
pr: exports_external.string().optional().describe("Attribution text for pull request descriptions. " + "Empty string hides attribution.")
|
|
56885
|
-
}).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."),
|
|
56886
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)"),
|
|
56887
56880
|
includeGitInstructions: exports_external.boolean().optional().describe("Include built-in commit and PR workflow instructions in Claude's system prompt (default: true)"),
|
|
56888
56881
|
permissions: PermissionsSchema().optional().describe("Tool usage permissions configuration"),
|
|
56889
|
-
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"),
|
|
56890
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."),
|
|
56891
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."),
|
|
56892
56885
|
enableAllProjectMcpServers: exports_external.boolean().optional().describe("Whether to automatically approve all MCP servers in the project"),
|
|
@@ -56984,7 +56977,7 @@ var init_types3 = __esm(() => {
|
|
|
56984
56977
|
allowedChannelPlugins: exports_external.array(exports_external.object({
|
|
56985
56978
|
marketplace: exports_external.string(),
|
|
56986
56979
|
plugin: exports_external.string()
|
|
56987
|
-
})).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."),
|
|
56988
56981
|
...{},
|
|
56989
56982
|
prefersReducedMotion: exports_external.boolean().optional().describe("Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)"),
|
|
56990
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."),
|
|
@@ -103318,7 +103311,7 @@ function getMacOsKeychainStorageServiceName(serviceSuffix = "") {
|
|
|
103318
103311
|
const configDir = getClaudeConfigHomeDir();
|
|
103319
103312
|
const isDefaultDir = !process.env.CLAUDE_CONFIG_DIR;
|
|
103320
103313
|
const dirHash = isDefaultDir ? "" : `-${createHash3("sha256").update(configDir).digest("hex").substring(0, 8)}`;
|
|
103321
|
-
return `
|
|
103314
|
+
return `Cody${getOauthConfig().OAUTH_FILE_SUFFIX}${serviceSuffix}${dirHash}`;
|
|
103322
103315
|
}
|
|
103323
103316
|
function getUsername() {
|
|
103324
103317
|
try {
|
|
@@ -199688,7 +199681,7 @@ var init_prompt5 = __esm(() => {
|
|
|
199688
199681
|
// src/tools/AgentTool/built-in/claudeCodeGuideAgent.ts
|
|
199689
199682
|
function getClaudeCodeGuideBasePrompt() {
|
|
199690
199683
|
const localSearchHint = hasEmbeddedSearchTools() ? `${FILE_READ_TOOL_NAME}, \`find\`, and \`grep\`` : `${FILE_READ_TOOL_NAME}, ${GLOB_TOOL_NAME}, and ${GREP_TOOL_NAME}`;
|
|
199691
|
-
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.
|
|
199692
199685
|
|
|
199693
199686
|
**Your expertise spans three domains:**
|
|
199694
199687
|
|
|
@@ -199696,7 +199689,7 @@ function getClaudeCodeGuideBasePrompt() {
|
|
|
199696
199689
|
|
|
199697
199690
|
2. **Claude Agent SDK**: A framework for building custom AI agents based on Cody CLI technology. Available for Node.js/TypeScript and Python.
|
|
199698
199691
|
|
|
199699
|
-
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.
|
|
199700
199693
|
|
|
199701
199694
|
**Documentation sources:**
|
|
199702
199695
|
|
|
@@ -199720,7 +199713,7 @@ function getClaudeCodeGuideBasePrompt() {
|
|
|
199720
199713
|
- Cost tracking and context management
|
|
199721
199714
|
Note: Agent SDK docs are part of the Claude API documentation at the same URL.
|
|
199722
199715
|
|
|
199723
|
-
- **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:
|
|
199724
199717
|
- Messages API and streaming
|
|
199725
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)
|
|
199726
199719
|
- Vision, PDF support, and citations
|
|
@@ -216410,7 +216403,7 @@ function getWarningUpsellText(rateLimitType) {
|
|
|
216410
216403
|
return null;
|
|
216411
216404
|
}
|
|
216412
216405
|
if (subscriptionType === "pro" || subscriptionType === "max") {
|
|
216413
|
-
return "/upgrade to keep using
|
|
216406
|
+
return "/upgrade to keep using Cody";
|
|
216414
216407
|
}
|
|
216415
216408
|
}
|
|
216416
216409
|
if (rateLimitType === "overage") {
|
|
@@ -217004,7 +216997,7 @@ function logSuggestionSuppressed(reason, suggestion, promptId, source) {
|
|
|
217004
216997
|
...false
|
|
217005
216998
|
});
|
|
217006
216999
|
}
|
|
217007
|
-
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.]
|
|
217008
217001
|
|
|
217009
217002
|
FIRST: Look at the user's recent messages and original request.
|
|
217010
217003
|
|
|
@@ -220208,7 +220201,7 @@ function validateCommandPaths(command12, args, cwd2, toolPermissionContext, comp
|
|
|
220208
220201
|
if (validator && !validator(args)) {
|
|
220209
220202
|
return {
|
|
220210
220203
|
behavior: "ask",
|
|
220211
|
-
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.`,
|
|
220212
220205
|
decisionReason: {
|
|
220213
220206
|
type: "other",
|
|
220214
220207
|
reason: `${command12} command with flags requires manual approval`
|
|
@@ -220218,7 +220211,7 @@ function validateCommandPaths(command12, args, cwd2, toolPermissionContext, comp
|
|
|
220218
220211
|
if (compoundCommandHasCd && operationType !== "read") {
|
|
220219
220212
|
return {
|
|
220220
220213
|
behavior: "ask",
|
|
220221
|
-
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.`,
|
|
220222
220215
|
decisionReason: {
|
|
220223
220216
|
type: "other",
|
|
220224
220217
|
reason: "Compound command contains cd with write operation - manual approval required to prevent path resolution bypass"
|
|
@@ -220230,7 +220223,7 @@ function validateCommandPaths(command12, args, cwd2, toolPermissionContext, comp
|
|
|
220230
220223
|
if (!allowed) {
|
|
220231
220224
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
220232
220225
|
const dirListStr = formatDirectoryList(workingDirs);
|
|
220233
|
-
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}.`;
|
|
220234
220227
|
if (decisionReason?.type === "rule") {
|
|
220235
220228
|
return {
|
|
220236
220229
|
behavior: "deny",
|
|
@@ -220355,7 +220348,7 @@ function validateOutputRedirections(redirections, cwd2, toolPermissionContext, c
|
|
|
220355
220348
|
if (compoundCommandHasCd && redirections.length > 0) {
|
|
220356
220349
|
return {
|
|
220357
220350
|
behavior: "ask",
|
|
220358
|
-
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.`,
|
|
220359
220352
|
decisionReason: {
|
|
220360
220353
|
type: "other",
|
|
220361
220354
|
reason: "Compound command contains cd with output redirection - manual approval required to prevent path resolution bypass"
|
|
@@ -220370,7 +220363,7 @@ function validateOutputRedirections(redirections, cwd2, toolPermissionContext, c
|
|
|
220370
220363
|
if (!allowed) {
|
|
220371
220364
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
220372
220365
|
const dirListStr = formatDirectoryList(workingDirs);
|
|
220373
|
-
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}.`;
|
|
220374
220367
|
if (decisionReason?.type === "rule") {
|
|
220375
220368
|
return {
|
|
220376
220369
|
behavior: "deny",
|
|
@@ -245593,7 +245586,7 @@ async function performMCPOAuthFlow(serverName, serverConfig, onAuthorizationUrl,
|
|
|
245593
245586
|
}
|
|
245594
245587
|
if (code) {
|
|
245595
245588
|
res.writeHead(200, { "Content-Type": "text/html" });
|
|
245596
|
-
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>`);
|
|
245597
245590
|
cleanup();
|
|
245598
245591
|
resolveOnce(code);
|
|
245599
245592
|
}
|
|
@@ -245759,7 +245752,7 @@ class ClaudeAuthProvider {
|
|
|
245759
245752
|
}
|
|
245760
245753
|
get clientMetadata() {
|
|
245761
245754
|
const metadata = {
|
|
245762
|
-
client_name: `
|
|
245755
|
+
client_name: `Cody (${this.serverName})`,
|
|
245763
245756
|
redirect_uris: [this.redirectUri],
|
|
245764
245757
|
grant_types: ["authorization_code", "refresh_token"],
|
|
245765
245758
|
response_types: ["code"],
|
|
@@ -248336,7 +248329,7 @@ function IdeOnboardingDialog(t0) {
|
|
|
248336
248329
|
t5,
|
|
248337
248330
|
/* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
|
|
248338
248331
|
children: [
|
|
248339
|
-
"Welcome to
|
|
248332
|
+
"Welcome to Cody for ",
|
|
248340
248333
|
ideName
|
|
248341
248334
|
]
|
|
248342
248335
|
}, undefined, true, undefined, this)
|
|
@@ -248390,7 +248383,7 @@ function IdeOnboardingDialog(t0) {
|
|
|
248390
248383
|
if ($3[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
248391
248384
|
t11 = /* @__PURE__ */ jsx_dev_runtime37.jsxDEV(ThemedText, {
|
|
248392
248385
|
children: [
|
|
248393
|
-
"\u2022 Review
|
|
248386
|
+
"\u2022 Review Cody's changes",
|
|
248394
248387
|
" ",
|
|
248395
248388
|
t10,
|
|
248396
248389
|
" ",
|
|
@@ -251587,7 +251580,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
251587
251580
|
const transport = new SdkControlClientTransport(name3, sendMcpMessage);
|
|
251588
251581
|
const client15 = new Client5({
|
|
251589
251582
|
name: "claude-code",
|
|
251590
|
-
title: "
|
|
251583
|
+
title: "Cody",
|
|
251591
251584
|
version: "0.1.0",
|
|
251592
251585
|
description: "Anthropic's agentic coding tool",
|
|
251593
251586
|
websiteUrl: PRODUCT_URL
|
|
@@ -251941,7 +251934,7 @@ var init_client19 = __esm(() => {
|
|
|
251941
251934
|
}
|
|
251942
251935
|
const client15 = new Client5({
|
|
251943
251936
|
name: "claude-code",
|
|
251944
|
-
title: "
|
|
251937
|
+
title: "Cody",
|
|
251945
251938
|
version: "0.1.0",
|
|
251946
251939
|
description: "Anthropic's agentic coding tool",
|
|
251947
251940
|
websiteUrl: PRODUCT_URL
|
|
@@ -252732,7 +252725,7 @@ function hookSourceDescriptionDisplayString(source) {
|
|
|
252732
252725
|
case "sessionHook":
|
|
252733
252726
|
return "Session hooks (in-memory, temporary)";
|
|
252734
252727
|
case "builtinHook":
|
|
252735
|
-
return "Built-in hooks (registered internally by
|
|
252728
|
+
return "Built-in hooks (registered internally by Cody)";
|
|
252736
252729
|
default:
|
|
252737
252730
|
return source;
|
|
252738
252731
|
}
|
|
@@ -260293,7 +260286,7 @@ function ManagedSettingsSecurityDialog(t0) {
|
|
|
260293
260286
|
label: "Yes, I trust these settings",
|
|
260294
260287
|
value: "accept"
|
|
260295
260288
|
}, {
|
|
260296
|
-
label: "No, exit
|
|
260289
|
+
label: "No, exit Cody",
|
|
260297
260290
|
value: "exit"
|
|
260298
260291
|
}];
|
|
260299
260292
|
$3[11] = t15;
|
|
@@ -300099,7 +300092,7 @@ async function call() {
|
|
|
300099
300092
|
clearOnboarding: true
|
|
300100
300093
|
});
|
|
300101
300094
|
const message = /* @__PURE__ */ jsx_dev_runtime60.jsxDEV(ThemedText, {
|
|
300102
|
-
children: "Successfully logged out from your
|
|
300095
|
+
children: "Successfully logged out from your AINative account."
|
|
300103
300096
|
}, undefined, false, undefined, this);
|
|
300104
300097
|
setTimeout(() => {
|
|
300105
300098
|
gracefulShutdownSync(0, "logout");
|
|
@@ -300869,7 +300862,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
300869
300862
|
console.error(`
|
|
300870
300863
|
Error: Windows NPM detected in WSL
|
|
300871
300864
|
|
|
300872
|
-
You're running
|
|
300865
|
+
You're running Cody in WSL but using the Windows NPM installation from /mnt/c/.
|
|
300873
300866
|
This configuration is not supported for updates.
|
|
300874
300867
|
|
|
300875
300868
|
To fix this issue:
|
|
@@ -303641,7 +303634,7 @@ async function authLogout() {
|
|
|
303641
303634
|
`);
|
|
303642
303635
|
process.exit(1);
|
|
303643
303636
|
}
|
|
303644
|
-
process.stdout.write(`Successfully logged out from your
|
|
303637
|
+
process.stdout.write(`Successfully logged out from your AINative account.
|
|
303645
303638
|
`);
|
|
303646
303639
|
process.exit(0);
|
|
303647
303640
|
}
|
|
@@ -303769,7 +303762,7 @@ async function isAppleTerminalBellDisabled() {
|
|
|
303769
303762
|
return false;
|
|
303770
303763
|
}
|
|
303771
303764
|
}
|
|
303772
|
-
var DEFAULT_TITLE = "
|
|
303765
|
+
var DEFAULT_TITLE = "Cody";
|
|
303773
303766
|
var init_notifier = __esm(() => {
|
|
303774
303767
|
init_config8();
|
|
303775
303768
|
init_env();
|
|
@@ -311329,7 +311322,7 @@ function ConsoleOAuthFlow({
|
|
|
311329
311322
|
state: "success"
|
|
311330
311323
|
});
|
|
311331
311324
|
sendNotification({
|
|
311332
|
-
message: "
|
|
311325
|
+
message: "Cody login successful",
|
|
311333
311326
|
notificationType: "auth_success"
|
|
311334
311327
|
}, terminal);
|
|
311335
311328
|
}
|
|
@@ -311490,7 +311483,7 @@ function OAuthStatusMessage(t0) {
|
|
|
311490
311483
|
} = t0;
|
|
311491
311484
|
switch (oauthStatus.state) {
|
|
311492
311485
|
case "idle": {
|
|
311493
|
-
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.";
|
|
311494
311487
|
let t22;
|
|
311495
311488
|
if ($3[0] !== t1) {
|
|
311496
311489
|
t22 = /* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
@@ -311642,7 +311635,7 @@ function OAuthStatusMessage(t0) {
|
|
|
311642
311635
|
let t32;
|
|
311643
311636
|
if ($3[13] === Symbol.for("react.memo_cache_sentinel")) {
|
|
311644
311637
|
t22 = /* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
311645
|
-
children: "
|
|
311638
|
+
children: "Cody supports Amazon Bedrock, Microsoft Foundry, and Vertex AI. Set the required environment variables, then restart Cody."
|
|
311646
311639
|
}, undefined, false, undefined, this);
|
|
311647
311640
|
t32 = /* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
311648
311641
|
children: "If you are part of an enterprise organization, contact your administrator for setup instructions."
|
|
@@ -311848,7 +311841,7 @@ function OAuthStatusMessage(t0) {
|
|
|
311848
311841
|
children: [
|
|
311849
311842
|
/* @__PURE__ */ jsx_dev_runtime71.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
311850
311843
|
/* @__PURE__ */ jsx_dev_runtime71.jsxDEV(ThemedText, {
|
|
311851
|
-
children: "Creating API key for
|
|
311844
|
+
children: "Creating API key for Cody\u2026"
|
|
311852
311845
|
}, undefined, false, undefined, this)
|
|
311853
311846
|
]
|
|
311854
311847
|
}, undefined, true, undefined, this)
|
|
@@ -312254,7 +312247,7 @@ async function axiosGetWithRetry(url3, config8) {
|
|
|
312254
312247
|
async function prepareApiRequest() {
|
|
312255
312248
|
const accessToken = getClaudeAIOAuthTokens()?.accessToken;
|
|
312256
312249
|
if (accessToken === undefined) {
|
|
312257
|
-
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.");
|
|
312258
312251
|
}
|
|
312259
312252
|
const orgUUID = await getOrganizationUUID();
|
|
312260
312253
|
if (!orgUUID) {
|
|
@@ -323881,7 +323874,7 @@ NOTE: You just closed out 3+ tasks and none of them was a verification step. Bef
|
|
|
323881
323874
|
async function fetchEnvironments() {
|
|
323882
323875
|
const accessToken = getClaudeAIOAuthTokens()?.accessToken;
|
|
323883
323876
|
if (!accessToken) {
|
|
323884
|
-
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.");
|
|
323885
323878
|
}
|
|
323886
323879
|
const orgUUID = await getOrganizationUUID();
|
|
323887
323880
|
if (!orgUUID) {
|
|
@@ -324349,7 +324342,7 @@ function TeleportError(t0) {
|
|
|
324349
324342
|
}, undefined, false, undefined, this),
|
|
324350
324343
|
/* @__PURE__ */ jsx_dev_runtime117.jsxDEV(ThemedText, {
|
|
324351
324344
|
dimColor: true,
|
|
324352
|
-
children: "Your Claude Pro/Max subscription will be used by
|
|
324345
|
+
children: "Your Claude Pro/Max subscription will be used by Cody."
|
|
324353
324346
|
}, undefined, false, undefined, this)
|
|
324354
324347
|
]
|
|
324355
324348
|
}, undefined, true, undefined, this);
|
|
@@ -327973,7 +327966,7 @@ async function teleportResumeCodeSession(sessionId, onProgress) {
|
|
|
327973
327966
|
logEvent("tengu_teleport_resume_error", {
|
|
327974
327967
|
error_type: "no_access_token"
|
|
327975
327968
|
});
|
|
327976
|
-
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.");
|
|
327977
327970
|
}
|
|
327978
327971
|
const orgUUID = await getOrganizationUUID();
|
|
327979
327972
|
if (!orgUUID) {
|
|
@@ -328102,7 +328095,7 @@ async function teleportFromSessionsAPI(sessionId, orgUUID, accessToken, onProgre
|
|
|
328102
328095
|
sessionId
|
|
328103
328096
|
});
|
|
328104
328097
|
throw new TeleportOperationError(`${sessionId} not found.`, `${sessionId} not found.
|
|
328105
|
-
${source_default.dim("Run /status in
|
|
328098
|
+
${source_default.dim("Run /status in Cody to check your account.")}`);
|
|
328106
328099
|
}
|
|
328107
328100
|
logError2(err2);
|
|
328108
328101
|
throw new Error(`Failed to fetch session from Sessions API: ${err2.message}`);
|
|
@@ -334943,7 +334936,7 @@ Output truncated (${sizeKB}KB total). Full output saved to: ${this.path}`;
|
|
|
334943
334936
|
} catch (err2) {
|
|
334944
334937
|
const code = err2 instanceof Error && "code" in err2 ? String(err2.code) : "unknown";
|
|
334945
334938
|
logForDebugging(`TaskOutput.#readStdoutFromFile: failed to read ${this.path} (${code}): ${err2}`);
|
|
334946
|
-
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.>`;
|
|
334947
334940
|
}
|
|
334948
334941
|
}
|
|
334949
334942
|
getStderr() {
|
|
@@ -335339,7 +335332,7 @@ var LITERAL_BACKSLASH = "\\", SNAPSHOT_CREATION_TIMEOUT = 1e4, VCS_DIRECTORIES_T
|
|
|
335339
335332
|
logForDebugging(`Looking for shell config file: ${configFile}`);
|
|
335340
335333
|
const configFileExists = await pathExists(configFile);
|
|
335341
335334
|
if (!configFileExists) {
|
|
335342
|
-
logForDebugging(`Shell config file not found: ${configFile}, creating snapshot with
|
|
335335
|
+
logForDebugging(`Shell config file not found: ${configFile}, creating snapshot with Cody defaults only`);
|
|
335343
335336
|
}
|
|
335344
335337
|
const timestamp = Date.now();
|
|
335345
335338
|
const randomId = Math.random().toString(36).substring(2, 8);
|
|
@@ -339629,7 +339622,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339629
339622
|
const canonical = resolveToCanonical(cmd.name);
|
|
339630
339623
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339631
339624
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339632
|
-
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}.`;
|
|
339633
339626
|
if (decisionReason?.type === "rule") {
|
|
339634
339627
|
return {
|
|
339635
339628
|
behavior: "deny",
|
|
@@ -339700,7 +339693,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339700
339693
|
const canonical = resolveToCanonical(cmd.name);
|
|
339701
339694
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339702
339695
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339703
|
-
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}.`;
|
|
339704
339697
|
if (decisionReason?.type === "rule") {
|
|
339705
339698
|
return {
|
|
339706
339699
|
behavior: "deny",
|
|
@@ -339761,7 +339754,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339761
339754
|
if (!allowed) {
|
|
339762
339755
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339763
339756
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339764
|
-
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}.`;
|
|
339765
339758
|
if (decisionReason?.type === "rule") {
|
|
339766
339759
|
return {
|
|
339767
339760
|
behavior: "deny",
|
|
@@ -339799,7 +339792,7 @@ function checkPathConstraintsForStatement(statement, toolPermissionContext, comp
|
|
|
339799
339792
|
if (!allowed) {
|
|
339800
339793
|
const workingDirs = Array.from(allWorkingDirectories(toolPermissionContext));
|
|
339801
339794
|
const dirListStr = formatDirectoryList2(workingDirs);
|
|
339802
|
-
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}.`;
|
|
339803
339796
|
if (decisionReason?.type === "rule") {
|
|
339804
339797
|
return {
|
|
339805
339798
|
behavior: "deny",
|
|
@@ -344323,7 +344316,7 @@ function validateInputForSettingsFileEdit(filePath, originalContent, getUpdatedC
|
|
|
344323
344316
|
if (!afterValidation.isValid) {
|
|
344324
344317
|
return {
|
|
344325
344318
|
result: false,
|
|
344326
|
-
message: `
|
|
344319
|
+
message: `Cody settings.json validation failed after edit:
|
|
344327
344320
|
${afterValidation.error}
|
|
344328
344321
|
|
|
344329
344322
|
Full schema:
|
|
@@ -366625,7 +366618,7 @@ var init_utils11 = __esm(() => {
|
|
|
366625
366618
|
init_preapproved();
|
|
366626
366619
|
DomainBlockedError = class DomainBlockedError extends Error {
|
|
366627
366620
|
constructor(domain2) {
|
|
366628
|
-
super(`
|
|
366621
|
+
super(`Cody is unable to fetch from ${domain2}`);
|
|
366629
366622
|
this.name = "DomainBlockedError";
|
|
366630
366623
|
}
|
|
366631
366624
|
};
|
|
@@ -372473,7 +372466,7 @@ var init_ConfigTool = __esm(() => {
|
|
|
372473
372466
|
}));
|
|
372474
372467
|
ConfigTool = buildTool({
|
|
372475
372468
|
name: CONFIG_TOOL_NAME,
|
|
372476
|
-
searchHint: "get or set
|
|
372469
|
+
searchHint: "get or set Cody settings (theme, model)",
|
|
372477
372470
|
maxResultSizeChars: 1e5,
|
|
372478
372471
|
async description() {
|
|
372479
372472
|
return DESCRIPTION13;
|
|
@@ -379409,7 +379402,7 @@ function getAttributionTexts() {
|
|
|
379409
379402
|
const model = getMainLoopModel();
|
|
379410
379403
|
const isKnownPublicModel = getPublicModelDisplayName(model) !== null;
|
|
379411
379404
|
const modelName = isInternalModelRepoCached() || isKnownPublicModel ? getPublicModelName(model) : "Claude Opus 4.6";
|
|
379412
|
-
const defaultAttribution = `\uD83E\uDD16 Generated with [
|
|
379405
|
+
const defaultAttribution = `\uD83E\uDD16 Generated with [Cody](${PRODUCT_URL})`;
|
|
379413
379406
|
const defaultCommit = `Co-Authored-By: ${modelName} <noreply@anthropic.com>`;
|
|
379414
379407
|
const settings = getInitialSettings();
|
|
379415
379408
|
if (settings.attribution) {
|
|
@@ -379536,7 +379529,7 @@ async function getEnhancedPRAttribution(getAppState) {
|
|
|
379536
379529
|
if (settings.includeCoAuthoredBy === false) {
|
|
379537
379530
|
return "";
|
|
379538
379531
|
}
|
|
379539
|
-
const defaultAttribution = `\uD83E\uDD16 Generated with [
|
|
379532
|
+
const defaultAttribution = `\uD83E\uDD16 Generated with [Cody](${PRODUCT_URL})`;
|
|
379540
379533
|
const appState = getAppState();
|
|
379541
379534
|
logForDebugging(`PR Attribution: appState.attribution exists: ${!!appState.attribution}`);
|
|
379542
379535
|
if (appState.attribution) {
|
|
@@ -379559,7 +379552,7 @@ async function getEnhancedPRAttribution(getAppState) {
|
|
|
379559
379552
|
return defaultAttribution;
|
|
379560
379553
|
}
|
|
379561
379554
|
const memSuffix = memoryAccessCount > 0 ? `, ${memoryAccessCount} ${memoryAccessCount === 1 ? "memory" : "memories"} recalled` : "";
|
|
379562
|
-
const summary = `\uD83E\uDD16 Generated with [
|
|
379555
|
+
const summary = `\uD83E\uDD16 Generated with [Cody](${PRODUCT_URL}) (${claudePercent}% ${promptCount}-shotted by ${shortModelName}${memSuffix})`;
|
|
379563
379556
|
if (false) {}
|
|
379564
379557
|
logForDebugging(`PR Attribution: returning summary: ${summary}`);
|
|
379565
379558
|
return summary;
|
|
@@ -389296,7 +389289,7 @@ function isToolSearchEnabledOptimistic() {
|
|
|
389296
389289
|
if (!process.env.ENABLE_TOOL_SEARCH && getAPIProvider() === "firstParty" && !isFirstPartyAnthropicBaseUrl()) {
|
|
389297
389290
|
if (!loggedOptimistic) {
|
|
389298
389291
|
loggedOptimistic = true;
|
|
389299
|
-
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.`);
|
|
389300
389293
|
}
|
|
389301
389294
|
return false;
|
|
389302
389295
|
}
|
|
@@ -391676,12 +391669,12 @@ ${manifest}${toolsSection}`
|
|
|
391676
391669
|
return [];
|
|
391677
391670
|
}
|
|
391678
391671
|
}
|
|
391679
|
-
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.
|
|
391680
391673
|
|
|
391681
|
-
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.
|
|
391682
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.
|
|
391683
391676
|
- If there are no memories in the list that would clearly be useful, feel free to return an empty list.
|
|
391684
|
-
- 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.
|
|
391685
391678
|
`;
|
|
391686
391679
|
var init_findRelevantMemories = __esm(() => {
|
|
391687
391680
|
init_debug();
|
|
@@ -395756,7 +395749,7 @@ var init_marketplaceManager = __esm(() => {
|
|
|
395756
395749
|
throw new Error(`Marketplace '${name3}' not found in configuration. Available marketplaces: ${Object.keys(config8).join(", ")}`);
|
|
395757
395750
|
}
|
|
395758
395751
|
if (isLocalMarketplaceSource(entry.source) && !isAbsolute23(entry.source.path)) {
|
|
395759
|
-
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.`);
|
|
395760
395753
|
}
|
|
395761
395754
|
try {
|
|
395762
395755
|
return await readCachedMarketplace(entry.installLocation);
|
|
@@ -398453,7 +398446,7 @@ function AUTO_REJECT_MESSAGE(toolName) {
|
|
|
398453
398446
|
return `Permission to use ${toolName} has been denied. ${DENIAL_WORKAROUND_GUIDANCE}`;
|
|
398454
398447
|
}
|
|
398455
398448
|
function DONT_ASK_REJECT_MESSAGE(toolName) {
|
|
398456
|
-
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}`;
|
|
398457
398450
|
}
|
|
398458
398451
|
function isSyntheticMessage(message) {
|
|
398459
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);
|
|
@@ -402214,14 +402207,14 @@ function getErrorMessageIfRefusal(stopReason, model) {
|
|
|
402214
402207
|
return;
|
|
402215
402208
|
}
|
|
402216
402209
|
logEvent("tengu_refusal_api_response", {});
|
|
402217
|
-
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.`;
|
|
402218
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." : "";
|
|
402219
402212
|
return createAssistantAPIErrorMessage({
|
|
402220
402213
|
content: baseMessage + modelSuggestion,
|
|
402221
402214
|
error: "invalid_request"
|
|
402222
402215
|
});
|
|
402223
402216
|
}
|
|
402224
|
-
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.";
|
|
402225
402218
|
var init_errors10 = __esm(() => {
|
|
402226
402219
|
init_sdk();
|
|
402227
402220
|
init_betas();
|
|
@@ -403006,9 +402999,9 @@ function reconstructCommand(kept, originalCmd) {
|
|
|
403006
402999
|
return result.trim() || originalCmd;
|
|
403007
403000
|
}
|
|
403008
403001
|
var ALLOWED_FILE_DESCRIPTORS, BASH_POLICY_SPEC = `<policy_spec>
|
|
403009
|
-
#
|
|
403002
|
+
# Cody Code Bash command prefix detection
|
|
403010
403003
|
|
|
403011
|
-
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.
|
|
403012
403005
|
|
|
403013
403006
|
## Definitions
|
|
403014
403007
|
|
|
@@ -404319,7 +404312,7 @@ function AppStateProvider(t0) {
|
|
|
404319
404312
|
} else {
|
|
404320
404313
|
t4 = $3[7];
|
|
404321
404314
|
}
|
|
404322
|
-
const onSettingsChange = (
|
|
404315
|
+
const onSettingsChange = (import_react84.useEffectEvent || function(fn){ var _r=require_react(); var _ref=_r.useRef(fn); _r.useLayoutEffect(function(){_ref.current=fn}); return _r.useCallback(function(){return _ref.current.apply(void 0,arguments)},[]); })(t4);
|
|
404323
404316
|
useSettingsChange(onSettingsChange);
|
|
404324
404317
|
let t5;
|
|
404325
404318
|
if ($3[8] !== children) {
|
|
@@ -408137,7 +408130,7 @@ function PermissionDescription() {
|
|
|
408137
408130
|
if ($3[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
408138
408131
|
t0 = /* @__PURE__ */ jsx_dev_runtime159.jsxDEV(ThemedText, {
|
|
408139
408132
|
dimColor: true,
|
|
408140
|
-
children: "
|
|
408133
|
+
children: "Cody will be able to read files in this directory and make edits when auto-accept edits is on."
|
|
408141
408134
|
}, undefined, false, undefined, this);
|
|
408142
408135
|
$3[0] = t0;
|
|
408143
408136
|
} else {
|
|
@@ -409611,7 +409604,7 @@ function Feedback({
|
|
|
409611
409604
|
children: [
|
|
409612
409605
|
"We will use your feedback to debug related issues or to improve",
|
|
409613
409606
|
" ",
|
|
409614
|
-
"
|
|
409607
|
+
"Cody's functionality (eg. to reduce the risk of bugs occurring in the future)."
|
|
409615
409608
|
]
|
|
409616
409609
|
}, undefined, true, undefined, this)
|
|
409617
409610
|
}, undefined, false, undefined, this),
|
|
@@ -409732,7 +409725,7 @@ ${sanitizedDescription}
|
|
|
409732
409725
|
async function generateTitle(description, abortSignal) {
|
|
409733
409726
|
try {
|
|
409734
409727
|
const response7 = await queryHaiku({
|
|
409735
|
-
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"']),
|
|
409736
409729
|
userPrompt: description,
|
|
409737
409730
|
signal: abortSignal,
|
|
409738
409731
|
options: {
|
|
@@ -409912,7 +409905,7 @@ var init_feedback2 = __esm(() => {
|
|
|
409912
409905
|
aliases: ["bug"],
|
|
409913
409906
|
type: "local-jsx",
|
|
409914
409907
|
name: "feedback",
|
|
409915
|
-
description: `Submit feedback about
|
|
409908
|
+
description: `Submit feedback about Cody`,
|
|
409916
409909
|
argumentHint: "[report]",
|
|
409917
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")),
|
|
409918
409911
|
load: () => Promise.resolve().then(() => (init_feedback(), exports_feedback))
|
|
@@ -413809,7 +413802,7 @@ function ModelPicker(t0) {
|
|
|
413809
413802
|
} else {
|
|
413810
413803
|
t15 = $3[41];
|
|
413811
413804
|
}
|
|
413812
|
-
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.";
|
|
413813
413806
|
let t17;
|
|
413814
413807
|
if ($3[42] !== t16) {
|
|
413815
413808
|
t17 = /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
@@ -414263,7 +414256,7 @@ function ClaudeMdExternalIncludesDialog(t0) {
|
|
|
414263
414256
|
t8 = /* @__PURE__ */ jsx_dev_runtime173.jsxDEV(ThemedText, {
|
|
414264
414257
|
dimColor: true,
|
|
414265
414258
|
children: [
|
|
414266
|
-
"Important: Only use
|
|
414259
|
+
"Important: Only use Cody with files you trust. Accessing untrusted files may pose security risks",
|
|
414267
414260
|
" ",
|
|
414268
414261
|
/* @__PURE__ */ jsx_dev_runtime173.jsxDEV(Link, {
|
|
414269
414262
|
url: "https://code.claude.com/docs/en/security"
|
|
@@ -414549,7 +414542,7 @@ function OutputStylePicker(t0) {
|
|
|
414549
414542
|
marginTop: 1,
|
|
414550
414543
|
children: /* @__PURE__ */ jsx_dev_runtime175.jsxDEV(ThemedText, {
|
|
414551
414544
|
dimColor: true,
|
|
414552
|
-
children: "This changes how
|
|
414545
|
+
children: "This changes how Cody communicates with you"
|
|
414553
414546
|
}, undefined, false, undefined, this)
|
|
414554
414547
|
}, undefined, false, undefined, this);
|
|
414555
414548
|
$3[5] = t7;
|
|
@@ -419162,9 +419155,9 @@ var call17 = async () => {
|
|
|
419162
419155
|
if (isClaudeAISubscriber()) {
|
|
419163
419156
|
let value;
|
|
419164
419157
|
if (currentLimits.isUsingOverage) {
|
|
419165
|
-
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";
|
|
419166
419159
|
} else {
|
|
419167
|
-
value = "You are currently using your subscription to power your
|
|
419160
|
+
value = "You are currently using your subscription to power your Cody usage";
|
|
419168
419161
|
}
|
|
419169
419162
|
if (false) {}
|
|
419170
419163
|
return { type: "text", value };
|
|
@@ -422054,7 +422047,7 @@ function Doctor(t0) {
|
|
|
422054
422047
|
let t7;
|
|
422055
422048
|
if ($3[11] !== onDone) {
|
|
422056
422049
|
t7 = () => {
|
|
422057
|
-
onDone("
|
|
422050
|
+
onDone("Cody diagnostics dismissed", {
|
|
422058
422051
|
display: "system"
|
|
422059
422052
|
});
|
|
422060
422053
|
};
|
|
@@ -422880,7 +422873,7 @@ var init_doctor2 = __esm(() => {
|
|
|
422880
422873
|
init_envUtils();
|
|
422881
422874
|
doctor = {
|
|
422882
422875
|
name: "doctor",
|
|
422883
|
-
description: "Diagnose and verify your
|
|
422876
|
+
description: "Diagnose and verify your Cody installation and settings",
|
|
422884
422877
|
isEnabled: () => !isEnvTruthy(process.env.DISABLE_DOCTOR_COMMAND),
|
|
422885
422878
|
type: "local-jsx",
|
|
422886
422879
|
load: () => Promise.resolve().then(() => (init_doctor(), exports_doctor))
|
|
@@ -424547,7 +424540,7 @@ function HelpV2(t0) {
|
|
|
424547
424540
|
let t6;
|
|
424548
424541
|
if ($3[31] !== tabs) {
|
|
424549
424542
|
t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
|
|
424550
|
-
title: `
|
|
424543
|
+
title: `Cody v${"0.1.0"}`,
|
|
424551
424544
|
color: "professionalBlue",
|
|
424552
424545
|
defaultTab: "general",
|
|
424553
424546
|
children: tabs
|
|
@@ -424980,7 +424973,7 @@ function IDEScreen(t0) {
|
|
|
424980
424973
|
t5 = availableIDEs.length === 0 && /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(ThemedText, {
|
|
424981
424974
|
dimColor: true,
|
|
424982
424975
|
children: isSupportedJetBrainsTerminal() ? `No available IDEs detected. Please install the plugin and restart your IDE:
|
|
424983
|
-
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."
|
|
424984
424977
|
}, undefined, false, undefined, this);
|
|
424985
424978
|
$3[17] = availableIDEs.length;
|
|
424986
424979
|
$3[18] = t5;
|
|
@@ -425012,7 +425005,7 @@ https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected.
|
|
|
425012
425005
|
marginTop: 1,
|
|
425013
425006
|
children: /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(ThemedText, {
|
|
425014
425007
|
color: "warning",
|
|
425015
|
-
children: "Note: Only one
|
|
425008
|
+
children: "Note: Only one Cody instance can be connected to VS Code at a time."
|
|
425016
425009
|
}, undefined, false, undefined, this)
|
|
425017
425010
|
}, undefined, false, undefined, this);
|
|
425018
425011
|
$3[24] = availableIDEs;
|
|
@@ -425356,7 +425349,7 @@ async function call22(onDone, context7, args) {
|
|
|
425356
425349
|
const detectedIDEs2 = await detectIDEs(true);
|
|
425357
425350
|
const availableIDEs2 = detectedIDEs2.filter((ide) => ide.isValid);
|
|
425358
425351
|
if (availableIDEs2.length === 0) {
|
|
425359
|
-
onDone("No IDEs with
|
|
425352
|
+
onDone("No IDEs with Cody extension detected.");
|
|
425360
425353
|
return null;
|
|
425361
425354
|
}
|
|
425362
425355
|
return /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(IDEOpenSelection, {
|
|
@@ -425586,7 +425579,7 @@ var init_ide3 = __esm(() => {
|
|
|
425586
425579
|
});
|
|
425587
425580
|
|
|
425588
425581
|
// src/commands/init.ts
|
|
425589
|
-
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.
|
|
425590
425583
|
|
|
425591
425584
|
What to add:
|
|
425592
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.
|
|
@@ -426185,15 +426178,15 @@ var init_WorkflowMultiselectDialog = __esm(() => {
|
|
|
426185
426178
|
jsx_dev_runtime209 = __toESM(require_jsx_dev_runtime(), 1);
|
|
426186
426179
|
WORKFLOWS = [{
|
|
426187
426180
|
value: "claude",
|
|
426188
|
-
label: "@
|
|
426181
|
+
label: "@Cody - Tag @claude in issues and PR comments"
|
|
426189
426182
|
}, {
|
|
426190
426183
|
value: "claude-review",
|
|
426191
|
-
label: "
|
|
426184
|
+
label: "Cody Review - Automated code review on new PRs"
|
|
426192
426185
|
}];
|
|
426193
426186
|
});
|
|
426194
426187
|
|
|
426195
426188
|
// src/constants/github-app.ts
|
|
426196
|
-
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
|
|
426197
426190
|
|
|
426198
426191
|
on:
|
|
426199
426192
|
issue_comment:
|
|
@@ -426225,7 +426218,7 @@ jobs:
|
|
|
426225
426218
|
with:
|
|
426226
426219
|
fetch-depth: 1
|
|
426227
426220
|
|
|
426228
|
-
- name: Run
|
|
426221
|
+
- name: Run Cody
|
|
426229
426222
|
id: claude
|
|
426230
426223
|
uses: anthropics/claude-code-action@v1
|
|
426231
426224
|
with:
|
|
@@ -426243,13 +426236,13 @@ jobs:
|
|
|
426243
426236
|
# or https://code.claude.com/docs/en/cli-reference for available options
|
|
426244
426237
|
# claude_args: '--allowed-tools Bash(gh pr:*)'
|
|
426245
426238
|
|
|
426246
|
-
`, PR_BODY = `## \uD83E\uDD16 Installing
|
|
426239
|
+
`, PR_BODY = `## \uD83E\uDD16 Installing Cody GitHub App
|
|
426247
426240
|
|
|
426248
|
-
This PR adds a GitHub Actions workflow that enables
|
|
426241
|
+
This PR adds a GitHub Actions workflow that enables Cody integration in our repository.
|
|
426249
426242
|
|
|
426250
|
-
### What is
|
|
426243
|
+
### What is Cody?
|
|
426251
426244
|
|
|
426252
|
-
[
|
|
426245
|
+
[Cody](https://claude.com/claude-code) is an AI coding agent that can help with:
|
|
426253
426246
|
- Bug fixes and improvements
|
|
426254
426247
|
- Documentation updates
|
|
426255
426248
|
- Implementing new features
|
|
@@ -426281,9 +426274,9 @@ Once the workflow is triggered, Claude will analyze the comment and surrounding
|
|
|
426281
426274
|
allowed_tools: Bash(npm install),Bash(npm run build),Bash(npm run lint),Bash(npm run test)
|
|
426282
426275
|
\`\`\`
|
|
426283
426276
|
|
|
426284
|
-
There's more information in the [
|
|
426277
|
+
There's more information in the [Cody action repo](https://github.com/anthropics/claude-code-action).
|
|
426285
426278
|
|
|
426286
|
-
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
|
|
426287
426280
|
|
|
426288
426281
|
on:
|
|
426289
426282
|
pull_request:
|
|
@@ -426316,7 +426309,7 @@ jobs:
|
|
|
426316
426309
|
with:
|
|
426317
426310
|
fetch-depth: 1
|
|
426318
426311
|
|
|
426319
|
-
- name: Run
|
|
426312
|
+
- name: Run Cody Review
|
|
426320
426313
|
id: claude-review
|
|
426321
426314
|
uses: anthropics/claude-code-action@v1
|
|
426322
426315
|
with:
|
|
@@ -426485,7 +426478,7 @@ function ApiKeyStep(t0) {
|
|
|
426485
426478
|
children: /* @__PURE__ */ jsx_dev_runtime210.jsxDEV(ThemedText, {
|
|
426486
426479
|
children: [
|
|
426487
426480
|
selectedOption === "existing" ? color("success", theme)("> ") : " ",
|
|
426488
|
-
"Use your existing
|
|
426481
|
+
"Use your existing Cody API key"
|
|
426489
426482
|
]
|
|
426490
426483
|
}, undefined, true, undefined, this)
|
|
426491
426484
|
}, undefined, false, undefined, this);
|
|
@@ -428462,7 +428455,7 @@ async function setupGitHubActions(repoName, apiKeyOrOAuthToken, secretName, upda
|
|
|
428462
428455
|
workflows.push({
|
|
428463
428456
|
path: ".github/workflows/claude-code-review.yml",
|
|
428464
428457
|
content: CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT,
|
|
428465
|
-
message: "
|
|
428458
|
+
message: "Cody Review workflow"
|
|
428466
428459
|
});
|
|
428467
428460
|
}
|
|
428468
428461
|
for (const workflow of workflows) {
|
|
@@ -431546,9 +431539,9 @@ function MCPRemoteServerMenu({
|
|
|
431546
431539
|
if (success2) {
|
|
431547
431540
|
onComplete?.(`Authentication successful. Connected to ${server.name}.`);
|
|
431548
431541
|
} else if (result.client.type === "needs-auth") {
|
|
431549
|
-
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.");
|
|
431550
431543
|
} else {
|
|
431551
|
-
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.");
|
|
431552
431545
|
}
|
|
431553
431546
|
} catch (err2) {
|
|
431554
431547
|
logEvent("tengu_claudeai_mcp_auth_completed", {
|
|
@@ -431710,10 +431703,10 @@ function MCPRemoteServerMenu({
|
|
|
431710
431703
|
const message = isEffectivelyAuthenticated ? `Authentication successful. Reconnected to ${server.name}.` : `Authentication successful. Connected to ${server.name}.`;
|
|
431711
431704
|
onComplete?.(message);
|
|
431712
431705
|
} else if (result_0.client.type === "needs-auth") {
|
|
431713
|
-
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.");
|
|
431714
431707
|
} else {
|
|
431715
431708
|
logMCPDebug(server.name, `Reconnection failed after authentication`);
|
|
431716
|
-
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.");
|
|
431717
431710
|
}
|
|
431718
431711
|
}
|
|
431719
431712
|
} catch (err_1) {
|
|
@@ -433375,7 +433368,7 @@ function MCPSettings(t0) {
|
|
|
433375
433368
|
t9 = $3[25];
|
|
433376
433369
|
}
|
|
433377
433370
|
const serverTools_0 = t9;
|
|
433378
|
-
const defaultTab = viewState.server.transport === "claudeai-proxy" ? "claude.ai" : "
|
|
433371
|
+
const defaultTab = viewState.server.transport === "claudeai-proxy" ? "claude.ai" : "Cody";
|
|
433379
433372
|
if (viewState.server.transport === "stdio") {
|
|
433380
433373
|
let t10;
|
|
433381
433374
|
if ($3[26] !== viewState.server) {
|
|
@@ -436675,7 +436668,7 @@ function EmptyStateMessage(t0) {
|
|
|
436675
436668
|
}, undefined, false, undefined, this),
|
|
436676
436669
|
/* @__PURE__ */ jsx_dev_runtime238.jsxDEV(ThemedText, {
|
|
436677
436670
|
dimColor: true,
|
|
436678
|
-
children: "Please install git and restart
|
|
436671
|
+
children: "Please install git and restart Cody."
|
|
436679
436672
|
}, undefined, false, undefined, this)
|
|
436680
436673
|
]
|
|
436681
436674
|
}, undefined, true, undefined, this);
|
|
@@ -438181,7 +438174,7 @@ function ManageMarketplaces({
|
|
|
438181
438174
|
marginTop: 1,
|
|
438182
438175
|
children: /* @__PURE__ */ jsx_dev_runtime239.jsxDEV(ThemedText, {
|
|
438183
438176
|
dimColor: true,
|
|
438184
|
-
children: "Auto-update enabled.
|
|
438177
|
+
children: "Auto-update enabled. Cody will automatically update this marketplace and its installed plugins."
|
|
438185
438178
|
}, undefined, false, undefined, this)
|
|
438186
438179
|
}, undefined, false, undefined, this),
|
|
438187
438180
|
/* @__PURE__ */ jsx_dev_runtime239.jsxDEV(ThemedBox_default, {
|
|
@@ -441948,7 +441941,7 @@ async function validatePluginManifest(filePath) {
|
|
|
441948
441941
|
delete stripped[key];
|
|
441949
441942
|
warnings.push({
|
|
441950
441943
|
path: key,
|
|
441951
|
-
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.`
|
|
441952
441945
|
});
|
|
441953
441946
|
}
|
|
441954
441947
|
toValidate = stripped;
|
|
@@ -441963,7 +441956,7 @@ async function validatePluginManifest(filePath) {
|
|
|
441963
441956
|
if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(manifest.name)) {
|
|
441964
441957
|
warnings.push({
|
|
441965
441958
|
path: "name",
|
|
441966
|
-
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").`
|
|
441967
441960
|
});
|
|
441968
441961
|
}
|
|
441969
441962
|
if (!manifest.version) {
|
|
@@ -450689,7 +450682,7 @@ function createWhatsNewFeed(releaseNotes2) {
|
|
|
450689
450682
|
text: note
|
|
450690
450683
|
};
|
|
450691
450684
|
});
|
|
450692
|
-
const emptyMessage = "Check the
|
|
450685
|
+
const emptyMessage = "Check the Cody changelog for updates";
|
|
450693
450686
|
return {
|
|
450694
450687
|
title: "What's new",
|
|
450695
450688
|
lines,
|
|
@@ -450723,7 +450716,7 @@ function createProjectOnboardingFeed(steps) {
|
|
|
450723
450716
|
}
|
|
450724
450717
|
function createGuestPassesFeed() {
|
|
450725
450718
|
const reward = getCachedReferrerReward();
|
|
450726
|
-
const subtitle = reward ? `Share
|
|
450719
|
+
const subtitle = reward ? `Share Cody and earn ${formatCreditAmount(reward)} of extra usage` : "Share Cody with friends";
|
|
450727
450720
|
return {
|
|
450728
450721
|
title: "3 guest passes",
|
|
450729
450722
|
lines: [],
|
|
@@ -450940,7 +450933,7 @@ function GuestPassesUpsell() {
|
|
|
450940
450933
|
}, undefined, false, undefined, this),
|
|
450941
450934
|
" \xB7",
|
|
450942
450935
|
" ",
|
|
450943
|
-
reward ? `Share
|
|
450936
|
+
reward ? `Share Cody and earn ${formatCreditAmount(reward)} of extra usage \xB7 /passes` : "3 guest passes at /passes"
|
|
450944
450937
|
]
|
|
450945
450938
|
}, undefined, true, undefined, this);
|
|
450946
450939
|
$3[0] = t0;
|
|
@@ -451035,7 +451028,7 @@ function CondensedLogo() {
|
|
|
451035
451028
|
if ($3[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
451036
451029
|
t5 = /* @__PURE__ */ jsx_dev_runtime252.jsxDEV(ThemedText, {
|
|
451037
451030
|
bold: true,
|
|
451038
|
-
children: "
|
|
451031
|
+
children: "Cody"
|
|
451039
451032
|
}, undefined, false, undefined, this);
|
|
451040
451033
|
$3[8] = t5;
|
|
451041
451034
|
} else {
|
|
@@ -458765,7 +458758,7 @@ var init_review = __esm(() => {
|
|
|
458765
458758
|
ultrareview = {
|
|
458766
458759
|
type: "local-jsx",
|
|
458767
458760
|
name: "ultrareview",
|
|
458768
|
-
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}`,
|
|
458769
458762
|
isEnabled: () => isUltrareviewEnabled(),
|
|
458770
458763
|
load: () => Promise.resolve().then(() => (init_ultrareviewCommand(), exports_ultrareviewCommand))
|
|
458771
458764
|
};
|
|
@@ -459356,7 +459349,7 @@ var init_status3 = __esm(() => {
|
|
|
459356
459349
|
status = {
|
|
459357
459350
|
type: "local-jsx",
|
|
459358
459351
|
name: "status",
|
|
459359
|
-
description: "Show
|
|
459352
|
+
description: "Show Cody status including version, model, account, API connectivity, and tool statuses",
|
|
459360
459353
|
immediate: true,
|
|
459361
459354
|
load: () => Promise.resolve().then(() => (init_status2(), exports_status))
|
|
459362
459355
|
};
|
|
@@ -459711,7 +459704,7 @@ function startDetachedPoll(taskId, sessionId, url3, getAppState, setAppState) {
|
|
|
459711
459704
|
ultraplanSessionUrl: undefined
|
|
459712
459705
|
} : prev);
|
|
459713
459706
|
enqueuePendingNotification({
|
|
459714
|
-
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(`
|
|
459715
459708
|
`),
|
|
459716
459709
|
mode: "task-notification"
|
|
459717
459710
|
});
|
|
@@ -459765,10 +459758,10 @@ Session: ${url3}`,
|
|
|
459765
459758
|
function buildLaunchMessage(disconnectedBridge) {
|
|
459766
459759
|
const prefix = disconnectedBridge ? `${REMOTE_CONTROL_DISCONNECTED_MSG} ` : "";
|
|
459767
459760
|
return `${DIAMOND_OPEN} ultraplan
|
|
459768
|
-
${prefix}Starting
|
|
459761
|
+
${prefix}Starting Cody on the web\u2026`;
|
|
459769
459762
|
}
|
|
459770
459763
|
function buildSessionReadyMessage(url3) {
|
|
459771
|
-
return `${DIAMOND_OPEN} ultraplan \xB7 Monitor progress in
|
|
459764
|
+
return `${DIAMOND_OPEN} ultraplan \xB7 Monitor progress in Cody on the web ${url3}
|
|
459772
459765
|
You can continue working \u2014 when the ${DIAMOND_OPEN} fills, press \u2193 to view results`;
|
|
459773
459766
|
}
|
|
459774
459767
|
function buildAlreadyActiveMessage(url3) {
|
|
@@ -459821,7 +459814,7 @@ async function launchUltraplan2(opts) {
|
|
|
459821
459814
|
"in your prompt",
|
|
459822
459815
|
"",
|
|
459823
459816
|
"Advanced multi-agent plan mode with our most powerful model",
|
|
459824
|
-
"(Opus). Runs in
|
|
459817
|
+
"(Opus). Runs in Cody on the web. When the plan is ready,",
|
|
459825
459818
|
"you can execute it in the web session or send it back here.",
|
|
459826
459819
|
"Terminal stays free while the remote plans.",
|
|
459827
459820
|
"Requires /login.",
|
|
@@ -460006,7 +459999,7 @@ var init_ultraplan = __esm(() => {
|
|
|
460006
459999
|
ultraplan_default = {
|
|
460007
460000
|
type: "local-jsx",
|
|
460008
460001
|
name: "ultraplan",
|
|
460009
|
-
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}`,
|
|
460010
460003
|
argumentHint: "<prompt>",
|
|
460011
460004
|
isEnabled: () => false,
|
|
460012
460005
|
load: () => Promise.resolve({
|
|
@@ -462290,7 +462283,7 @@ var init_mappers = __esm(() => {
|
|
|
462290
462283
|
// src/components/tasks/RemoteSessionDetailDialog.tsx
|
|
462291
462284
|
function formatToolUseSummary(name3, input) {
|
|
462292
462285
|
if (name3 === EXIT_PLAN_MODE_V2_TOOL_NAME) {
|
|
462293
|
-
return "Review the plan in
|
|
462286
|
+
return "Review the plan in Cody on the web";
|
|
462294
462287
|
}
|
|
462295
462288
|
if (!input || typeof input !== "object")
|
|
462296
462289
|
return name3;
|
|
@@ -462404,7 +462397,7 @@ function UltraplanSessionDetail(t0) {
|
|
|
462404
462397
|
if ($3[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
462405
462398
|
t72 = /* @__PURE__ */ jsx_dev_runtime285.jsxDEV(ThemedText, {
|
|
462406
462399
|
dimColor: true,
|
|
462407
|
-
children: "This will terminate the
|
|
462400
|
+
children: "This will terminate the Cody on the web session."
|
|
462408
462401
|
}, undefined, false, undefined, this);
|
|
462409
462402
|
$3[12] = t72;
|
|
462410
462403
|
} else {
|
|
@@ -462615,7 +462608,7 @@ function UltraplanSessionDetail(t0) {
|
|
|
462615
462608
|
let t19;
|
|
462616
462609
|
if ($3[47] === Symbol.for("react.memo_cache_sentinel")) {
|
|
462617
462610
|
t19 = {
|
|
462618
|
-
label: "Review in
|
|
462611
|
+
label: "Review in Cody on the web",
|
|
462619
462612
|
value: "open"
|
|
462620
462613
|
};
|
|
462621
462614
|
$3[47] = t19;
|
|
@@ -462947,13 +462940,13 @@ function ReviewSessionDetail(t0) {
|
|
|
462947
462940
|
let t32;
|
|
462948
462941
|
if ($3[11] !== completed || $3[12] !== onKill || $3[13] !== running) {
|
|
462949
462942
|
t32 = completed ? [{
|
|
462950
|
-
label: "Open in
|
|
462943
|
+
label: "Open in Cody on the web",
|
|
462951
462944
|
value: "open"
|
|
462952
462945
|
}, {
|
|
462953
462946
|
label: "Dismiss",
|
|
462954
462947
|
value: "dismiss"
|
|
462955
462948
|
}] : [{
|
|
462956
|
-
label: "Open in
|
|
462949
|
+
label: "Open in Cody on the web",
|
|
462957
462950
|
value: "open"
|
|
462958
462951
|
}, ...onKill && running ? [{
|
|
462959
462952
|
label: "Stop ultrareview",
|
|
@@ -464172,7 +464165,7 @@ function BackgroundTasksDialog({
|
|
|
464172
464165
|
async function killRemoteAgentTask(taskId_3) {
|
|
464173
464166
|
await RemoteAgentTask.kill(taskId_3, setAppState);
|
|
464174
464167
|
}
|
|
464175
|
-
const onDoneEvent = (
|
|
464168
|
+
const onDoneEvent = (import_react165.useEffectEvent || function(fn){ var _r=require_react(); var _ref=_r.useRef(fn); _r.useLayoutEffect(function(){_ref.current=fn}); return _r.useCallback(function(){return _ref.current.apply(void 0,arguments)},[]); })(onDone);
|
|
464176
464169
|
import_react165.useEffect(() => {
|
|
464177
464170
|
if (viewState.mode !== "list") {
|
|
464178
464171
|
const task = (typedTasks ?? {})[viewState.itemId];
|
|
@@ -465557,8 +465550,8 @@ function ThinkbackMenu(t0) {
|
|
|
465557
465550
|
let t7;
|
|
465558
465551
|
if ($3[16] !== handleCancel || $3[17] !== t6) {
|
|
465559
465552
|
t7 = /* @__PURE__ */ jsx_dev_runtime291.jsxDEV(Dialog, {
|
|
465560
|
-
title: "Think Back on 2025 with
|
|
465561
|
-
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)",
|
|
465562
465555
|
onCancel: handleCancel,
|
|
465563
465556
|
color: "claude",
|
|
465564
465557
|
children: t6
|
|
@@ -465767,7 +465760,7 @@ async function call40(onDone) {
|
|
|
465767
465760
|
onDone
|
|
465768
465761
|
}, undefined, false, undefined, this);
|
|
465769
465762
|
}
|
|
465770
|
-
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.';
|
|
465771
465764
|
var init_thinkback = __esm(() => {
|
|
465772
465765
|
init_execa();
|
|
465773
465766
|
init_select();
|
|
@@ -465800,7 +465793,7 @@ var init_thinkback2 = __esm(() => {
|
|
|
465800
465793
|
thinkback = {
|
|
465801
465794
|
type: "local-jsx",
|
|
465802
465795
|
name: "think-back",
|
|
465803
|
-
description: "Your 2025
|
|
465796
|
+
description: "Your 2025 Cody Year in Review",
|
|
465804
465797
|
isEnabled: () => checkStatsigFeatureGate_CACHED_MAY_BE_STALE("tengu_thinkback"),
|
|
465805
465798
|
load: () => Promise.resolve().then(() => (init_thinkback(), exports_thinkback))
|
|
465806
465799
|
};
|
|
@@ -466694,7 +466687,7 @@ function RemoveWorkspaceDirectory(t0) {
|
|
|
466694
466687
|
let t4;
|
|
466695
466688
|
if ($3[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
466696
466689
|
t4 = /* @__PURE__ */ jsx_dev_runtime296.jsxDEV(ThemedText, {
|
|
466697
|
-
children: "
|
|
466690
|
+
children: "Cody will no longer have access to files in this directory."
|
|
466698
466691
|
}, undefined, false, undefined, this);
|
|
466699
466692
|
$3[10] = t4;
|
|
466700
466693
|
} else {
|
|
@@ -467375,9 +467368,9 @@ function PermissionRulesTab(t0) {
|
|
|
467375
467368
|
let t8;
|
|
467376
467369
|
if ($3[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
467377
467370
|
t8 = {
|
|
467378
|
-
allow: "
|
|
467379
|
-
ask: "
|
|
467380
|
-
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."
|
|
467381
467374
|
};
|
|
467382
467375
|
$3[10] = t8;
|
|
467383
467376
|
} else {
|
|
@@ -468140,7 +468133,7 @@ function PermissionRuleList(t0) {
|
|
|
468140
468133
|
let t28;
|
|
468141
468134
|
if ($3[89] === Symbol.for("react.memo_cache_sentinel")) {
|
|
468142
468135
|
t28 = /* @__PURE__ */ jsx_dev_runtime298.jsxDEV(ThemedText, {
|
|
468143
|
-
children: "
|
|
468136
|
+
children: "Cody can read files in the workspace, and make edits when auto-accept edits is on."
|
|
468144
468137
|
}, undefined, false, undefined, this);
|
|
468145
468138
|
$3[89] = t28;
|
|
468146
468139
|
} else {
|
|
@@ -469160,7 +469153,7 @@ function Passes({
|
|
|
469160
469153
|
children: /* @__PURE__ */ jsx_dev_runtime303.jsxDEV(ThemedText, {
|
|
469161
469154
|
dimColor: true,
|
|
469162
469155
|
children: [
|
|
469163
|
-
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. ",
|
|
469164
469157
|
/* @__PURE__ */ jsx_dev_runtime303.jsxDEV(Link, {
|
|
469165
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",
|
|
469166
469159
|
children: "Terms apply."
|
|
@@ -469244,9 +469237,9 @@ var init_passes2 = __esm(() => {
|
|
|
469244
469237
|
get description() {
|
|
469245
469238
|
const reward = getCachedReferrerReward();
|
|
469246
469239
|
if (reward) {
|
|
469247
|
-
return "Share a free week of
|
|
469240
|
+
return "Share a free week of Cody with friends and earn extra usage";
|
|
469248
469241
|
}
|
|
469249
|
-
return "Share a free week of
|
|
469242
|
+
return "Share a free week of Cody with friends";
|
|
469250
469243
|
},
|
|
469251
469244
|
get isHidden() {
|
|
469252
469245
|
const { eligible: eligible2, hasCache } = checkCachedPassesEligibility();
|
|
@@ -478083,7 +478076,7 @@ var init_plugin2 = __esm(() => {
|
|
|
478083
478076
|
type: "local-jsx",
|
|
478084
478077
|
name: "plugin",
|
|
478085
478078
|
aliases: ["plugins", "marketplace"],
|
|
478086
|
-
description: "Manage
|
|
478079
|
+
description: "Manage Cody plugins",
|
|
478087
478080
|
immediate: true,
|
|
478088
478081
|
load: () => Promise.resolve().then(() => (init_plugin(), exports_plugin))
|
|
478089
478082
|
};
|
|
@@ -480335,7 +480328,7 @@ function getNativeMessagingHostsDirs() {
|
|
|
480335
480328
|
if (platform6 === "windows") {
|
|
480336
480329
|
const home = homedir30();
|
|
480337
480330
|
const appData = process.env.APPDATA || join121(home, "AppData", "Local");
|
|
480338
|
-
return [join121(appData, "
|
|
480331
|
+
return [join121(appData, "Cody", "ChromeNativeHost")];
|
|
480339
480332
|
}
|
|
480340
480333
|
return getAllNativeMessagingHostsDirs().map(({ path: path23 }) => path23);
|
|
480341
480334
|
}
|
|
@@ -480346,7 +480339,7 @@ async function installChromeNativeHostManifest(manifestBinaryPath) {
|
|
|
480346
480339
|
}
|
|
480347
480340
|
const manifest = {
|
|
480348
480341
|
name: NATIVE_HOST_IDENTIFIER,
|
|
480349
|
-
description: "
|
|
480342
|
+
description: "Cody Browser Extension Native Host",
|
|
480350
480343
|
path: manifestBinaryPath,
|
|
480351
480344
|
type: "stdio",
|
|
480352
480345
|
allowed_origins: [
|
|
@@ -480414,11 +480407,11 @@ async function createWrapperScript(command18) {
|
|
|
480414
480407
|
const wrapperPath = platform6 === "windows" ? join121(chromeDir, "chrome-native-host.bat") : join121(chromeDir, "chrome-native-host");
|
|
480415
480408
|
const scriptContent = platform6 === "windows" ? `@echo off
|
|
480416
480409
|
REM Chrome native host wrapper script
|
|
480417
|
-
REM Generated by
|
|
480410
|
+
REM Generated by Cody - do not edit manually
|
|
480418
480411
|
${command18}
|
|
480419
480412
|
` : `#!/bin/sh
|
|
480420
480413
|
# Chrome native host wrapper script
|
|
480421
|
-
# Generated by
|
|
480414
|
+
# Generated by Cody - do not edit manually
|
|
480422
480415
|
exec ${command18}
|
|
480423
480416
|
`;
|
|
480424
480417
|
const existingContent = await readFile49(wrapperPath, "utf-8").catch(() => null);
|
|
@@ -480671,7 +480664,7 @@ function ClaudeInChromeMenu(t0) {
|
|
|
480671
480664
|
let t6;
|
|
480672
480665
|
if ($3[20] === Symbol.for("react.memo_cache_sentinel")) {
|
|
480673
480666
|
t6 = /* @__PURE__ */ jsx_dev_runtime344.jsxDEV(ThemedText, {
|
|
480674
|
-
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."
|
|
480675
480668
|
}, undefined, false, undefined, this);
|
|
480676
480669
|
$3[20] = t6;
|
|
480677
480670
|
} else {
|
|
@@ -480915,7 +480908,7 @@ var init_stickers2 = __esm(() => {
|
|
|
480915
480908
|
stickers = {
|
|
480916
480909
|
type: "local",
|
|
480917
480910
|
name: "stickers",
|
|
480918
|
-
description: "Order
|
|
480911
|
+
description: "Order Cody stickers",
|
|
480919
480912
|
supportsNonInteractive: false,
|
|
480920
480913
|
load: () => Promise.resolve().then(() => (init_stickers(), exports_stickers))
|
|
480921
480914
|
};
|
|
@@ -482127,7 +482120,7 @@ var init_model3 = __esm(() => {
|
|
|
482127
482120
|
type: "local-jsx",
|
|
482128
482121
|
name: "model",
|
|
482129
482122
|
get description() {
|
|
482130
|
-
return `Set the AI model for
|
|
482123
|
+
return `Set the AI model for Cody (currently ${renderModelName(getMainLoopModel())})`;
|
|
482131
482124
|
},
|
|
482132
482125
|
argumentHint: "[model]",
|
|
482133
482126
|
get immediate() {
|
|
@@ -483273,7 +483266,7 @@ var init_statusline = __esm(() => {
|
|
|
483273
483266
|
init_constants3();
|
|
483274
483267
|
statusline = {
|
|
483275
483268
|
type: "prompt",
|
|
483276
|
-
description: "Set up
|
|
483269
|
+
description: "Set up Cody's status line UI",
|
|
483277
483270
|
contentLength: 0,
|
|
483278
483271
|
aliases: [],
|
|
483279
483272
|
name: "statusline",
|
|
@@ -484985,7 +484978,7 @@ function Stats2(t0) {
|
|
|
484985
484978
|
children: [
|
|
484986
484979
|
/* @__PURE__ */ jsx_dev_runtime358.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
484987
484980
|
/* @__PURE__ */ jsx_dev_runtime358.jsxDEV(ThemedText, {
|
|
484988
|
-
children: " Loading your
|
|
484981
|
+
children: " Loading your Cody stats\u2026"
|
|
484989
484982
|
}, undefined, false, undefined, this)
|
|
484990
484983
|
]
|
|
484991
484984
|
}, undefined, true, undefined, this);
|
|
@@ -485146,7 +485139,7 @@ function StatsContent(t0) {
|
|
|
485146
485139
|
marginTop: 1,
|
|
485147
485140
|
children: /* @__PURE__ */ jsx_dev_runtime358.jsxDEV(ThemedText, {
|
|
485148
485141
|
color: "warning",
|
|
485149
|
-
children: "No stats available yet. Start using
|
|
485142
|
+
children: "No stats available yet. Start using Cody!"
|
|
485150
485143
|
}, undefined, false, undefined, this)
|
|
485151
485144
|
}, undefined, false, undefined, this);
|
|
485152
485145
|
$3[15] = t72;
|
|
@@ -486375,7 +486368,7 @@ var init_stats3 = __esm(() => {
|
|
|
486375
486368
|
stats = {
|
|
486376
486369
|
type: "local-jsx",
|
|
486377
486370
|
name: "stats",
|
|
486378
|
-
description: "Show your
|
|
486371
|
+
description: "Show your Cody usage statistics and activity",
|
|
486379
486372
|
load: () => Promise.resolve().then(() => (init_stats2(), exports_stats))
|
|
486380
486373
|
};
|
|
486381
486374
|
stats_default = stats;
|
|
@@ -487139,7 +487132,7 @@ USER INSTRUCTIONS TO CLAUDE:
|
|
|
487139
487132
|
`) || "";
|
|
487140
487133
|
const horizonText = insights.on_the_horizon?.opportunities?.map((o5) => `- ${o5.title}: ${o5.whats_possible}`).join(`
|
|
487141
487134
|
`) || "";
|
|
487142
|
-
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.
|
|
487143
487136
|
|
|
487144
487137
|
Use this 4-part structure:
|
|
487145
487138
|
|
|
@@ -487147,7 +487140,7 @@ Use this 4-part structure:
|
|
|
487147
487140
|
|
|
487148
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.
|
|
487149
487142
|
|
|
487150
|
-
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.)
|
|
487151
487144
|
|
|
487152
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.
|
|
487153
487146
|
|
|
@@ -487336,7 +487329,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487336
487329
|
` : "";
|
|
487337
487330
|
const interactionStyle = insights.interaction_style;
|
|
487338
487331
|
const interactionHtml = interactionStyle?.narrative ? `
|
|
487339
|
-
<h2 id="section-usage">How You Use
|
|
487332
|
+
<h2 id="section-usage">How You Use Cody</h2>
|
|
487340
487333
|
<div class="narrative">
|
|
487341
487334
|
${markdownToHtml(interactionStyle.narrative)}
|
|
487342
487335
|
${interactionStyle.key_pattern ? `<div class="key-insight"><strong>Key pattern:</strong> ${escapeXmlAttr(interactionStyle.key_pattern)}</div>` : ""}
|
|
@@ -487375,7 +487368,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487375
487368
|
<h2 id="section-features">Existing CC Features to Try</h2>
|
|
487376
487369
|
<div class="claude-md-section">
|
|
487377
487370
|
<h3>Suggested CLAUDE.md Additions</h3>
|
|
487378
|
-
<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>
|
|
487379
487372
|
<div class="claude-md-actions">
|
|
487380
487373
|
<button class="copy-all-btn" onclick="copyAllCheckedClaudeMd()">Copy All Checked</button>
|
|
487381
487374
|
</div>
|
|
@@ -487392,7 +487385,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487392
487385
|
</div>
|
|
487393
487386
|
` : ""}
|
|
487394
487387
|
${suggestions.features_to_try && suggestions.features_to_try.length > 0 ? `
|
|
487395
|
-
<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>
|
|
487396
487389
|
<div class="features-section">
|
|
487397
487390
|
${suggestions.features_to_try.map((feat) => `
|
|
487398
487391
|
<div class="feature-card">
|
|
@@ -487414,8 +487407,8 @@ function generateHtmlReport(data, insights) {
|
|
|
487414
487407
|
</div>
|
|
487415
487408
|
` : ""}
|
|
487416
487409
|
${suggestions.usage_patterns && suggestions.usage_patterns.length > 0 ? `
|
|
487417
|
-
<h2 id="section-patterns">New Ways to Use
|
|
487418
|
-
<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>
|
|
487419
487412
|
<div class="patterns-section">
|
|
487420
487413
|
${suggestions.usage_patterns.map((pat) => `
|
|
487421
487414
|
<div class="pattern-card">
|
|
@@ -487424,7 +487417,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487424
487417
|
${pat.detail ? `<div class="pattern-detail">${escapeXmlAttr(pat.detail)}</div>` : ""}
|
|
487425
487418
|
${pat.copyable_prompt ? `
|
|
487426
487419
|
<div class="copyable-prompt-section">
|
|
487427
|
-
<div class="prompt-label">Paste into
|
|
487420
|
+
<div class="prompt-label">Paste into Cody:</div>
|
|
487428
487421
|
<div class="copyable-prompt-row">
|
|
487429
487422
|
<code class="copyable-prompt">${escapeXmlAttr(pat.copyable_prompt)}</code>
|
|
487430
487423
|
<button class="copy-btn" onclick="copyText(this)">Copy</button>
|
|
@@ -487446,7 +487439,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487446
487439
|
<div class="horizon-title">${escapeXmlAttr(opp.title || "")}</div>
|
|
487447
487440
|
<div class="horizon-possible">${escapeXmlAttr(opp.whats_possible || "")}</div>
|
|
487448
487441
|
${opp.how_to_try ? `<div class="horizon-tip"><strong>Getting started:</strong> ${escapeXmlAttr(opp.how_to_try)}</div>` : ""}
|
|
487449
|
-
${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>` : ""}
|
|
487450
487443
|
</div>
|
|
487451
487444
|
`).join("")}
|
|
487452
487445
|
</div>
|
|
@@ -487715,13 +487708,13 @@ function generateHtmlReport(data, insights) {
|
|
|
487715
487708
|
<html>
|
|
487716
487709
|
<head>
|
|
487717
487710
|
<meta charset="utf-8">
|
|
487718
|
-
<title>
|
|
487711
|
+
<title>Cody Insights</title>
|
|
487719
487712
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
487720
487713
|
<style>${css}</style>
|
|
487721
487714
|
</head>
|
|
487722
487715
|
<body>
|
|
487723
487716
|
<div class="container">
|
|
487724
|
-
<h1>
|
|
487717
|
+
<h1>Cody Insights</h1>
|
|
487725
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>
|
|
487726
487719
|
|
|
487727
487720
|
${atAGlanceHtml}
|
|
@@ -487785,7 +487778,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487785
487778
|
<div class="chart-title">Multi-Clauding (Parallel Sessions)</div>
|
|
487786
487779
|
${data.multi_clauding.overlap_events === 0 ? `
|
|
487787
487780
|
<p style="font-size: 14px; color: #64748b; padding: 8px 0;">
|
|
487788
|
-
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.
|
|
487789
487782
|
</p>
|
|
487790
487783
|
` : `
|
|
487791
487784
|
<div style="display: flex; gap: 24px; margin: 12px 0;">
|
|
@@ -487803,7 +487796,7 @@ function generateHtmlReport(data, insights) {
|
|
|
487803
487796
|
</div>
|
|
487804
487797
|
</div>
|
|
487805
487798
|
<p style="font-size: 13px; color: #475569; margin-top: 12px;">
|
|
487806
|
-
You run multiple
|
|
487799
|
+
You run multiple Cody sessions simultaneously. Multi-clauding is detected when sessions
|
|
487807
487800
|
overlap in time, suggesting parallel workflows.
|
|
487808
487801
|
</p>
|
|
487809
487802
|
`}
|
|
@@ -488104,7 +488097,7 @@ function isValidSessionFacets(obj) {
|
|
|
488104
488097
|
const o5 = obj;
|
|
488105
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";
|
|
488106
488099
|
}
|
|
488107
|
-
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.
|
|
488108
488101
|
|
|
488109
488102
|
CRITICAL GUIDELINES:
|
|
488110
488103
|
|
|
@@ -488130,7 +488123,7 @@ CRITICAL GUIDELINES:
|
|
|
488130
488123
|
4. If very short or just warmup, use warmup_minimal for goal_category
|
|
488131
488124
|
|
|
488132
488125
|
SESSION:
|
|
488133
|
-
`, SUMMARIZE_CHUNK_PROMPT = `Summarize this portion of a
|
|
488126
|
+
`, SUMMARIZE_CHUNK_PROMPT = `Summarize this portion of a Cody session transcript. Focus on:
|
|
488134
488127
|
1. What the user asked for
|
|
488135
488128
|
2. What Claude did (tools used, files modified)
|
|
488136
488129
|
3. Any friction or issues
|
|
@@ -488231,12 +488224,12 @@ var init_insights = __esm(() => {
|
|
|
488231
488224
|
INSIGHT_SECTIONS = [
|
|
488232
488225
|
{
|
|
488233
488226
|
name: "project_areas",
|
|
488234
|
-
prompt: `Analyze this
|
|
488227
|
+
prompt: `Analyze this Cody usage data and identify project areas.
|
|
488235
488228
|
|
|
488236
488229
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488237
488230
|
{
|
|
488238
488231
|
"areas": [
|
|
488239
|
-
{"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."}
|
|
488240
488233
|
]
|
|
488241
488234
|
}
|
|
488242
488235
|
|
|
@@ -488245,18 +488238,18 @@ Include 4-5 areas. Skip internal CC operations.`,
|
|
|
488245
488238
|
},
|
|
488246
488239
|
{
|
|
488247
488240
|
name: "interaction_style",
|
|
488248
|
-
prompt: `Analyze this
|
|
488241
|
+
prompt: `Analyze this Cody usage data and describe the user's interaction style.
|
|
488249
488242
|
|
|
488250
488243
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488251
488244
|
{
|
|
488252
|
-
"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.",
|
|
488253
488246
|
"key_pattern": "One sentence summary of most distinctive interaction style"
|
|
488254
488247
|
}`,
|
|
488255
488248
|
maxTokens: 8192
|
|
488256
488249
|
},
|
|
488257
488250
|
{
|
|
488258
488251
|
name: "what_works",
|
|
488259
|
-
prompt: `Analyze this
|
|
488252
|
+
prompt: `Analyze this Cody usage data and identify what's working well for this user. Use second person ("you").
|
|
488260
488253
|
|
|
488261
488254
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488262
488255
|
{
|
|
@@ -488271,7 +488264,7 @@ Include 3 impressive workflows.`,
|
|
|
488271
488264
|
},
|
|
488272
488265
|
{
|
|
488273
488266
|
name: "friction_analysis",
|
|
488274
|
-
prompt: `Analyze this
|
|
488267
|
+
prompt: `Analyze this Cody usage data and identify friction points for this user. Use second person ("you").
|
|
488275
488268
|
|
|
488276
488269
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488277
488270
|
{
|
|
@@ -488286,7 +488279,7 @@ Include 3 friction categories with 2 examples each.`,
|
|
|
488286
488279
|
},
|
|
488287
488280
|
{
|
|
488288
488281
|
name: "suggestions",
|
|
488289
|
-
prompt: `Analyze this
|
|
488282
|
+
prompt: `Analyze this Cody usage data and suggest improvements.
|
|
488290
488283
|
|
|
488291
488284
|
## CC FEATURES REFERENCE (pick from these for features_to_try):
|
|
488292
488285
|
1. **MCP Servers**: Connect Claude to external tools, databases, and APIs via Model Context Protocol.
|
|
@@ -488329,7 +488322,7 @@ IMPORTANT for features_to_try: Pick 2-3 from the CC FEATURES REFERENCE above. In
|
|
|
488329
488322
|
},
|
|
488330
488323
|
{
|
|
488331
488324
|
name: "on_the_horizon",
|
|
488332
|
-
prompt: `Analyze this
|
|
488325
|
+
prompt: `Analyze this Cody usage data and identify future opportunities.
|
|
488333
488326
|
|
|
488334
488327
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488335
488328
|
{
|
|
@@ -488345,7 +488338,7 @@ Include 3 opportunities. Think BIG - autonomous workflows, parallel agents, iter
|
|
|
488345
488338
|
...[],
|
|
488346
488339
|
{
|
|
488347
488340
|
name: "fun_ending",
|
|
488348
|
-
prompt: `Analyze this
|
|
488341
|
+
prompt: `Analyze this Cody usage data and find a memorable moment.
|
|
488349
488342
|
|
|
488350
488343
|
RESPOND WITH ONLY A VALID JSON OBJECT:
|
|
488351
488344
|
{
|
|
@@ -488375,7 +488368,7 @@ Find something genuinely interesting or amusing from the session summaries.`,
|
|
|
488375
488368
|
usageReport = {
|
|
488376
488369
|
type: "prompt",
|
|
488377
488370
|
name: "insights",
|
|
488378
|
-
description: "Generate a report analyzing your
|
|
488371
|
+
description: "Generate a report analyzing your Cody sessions",
|
|
488379
488372
|
contentLength: 0,
|
|
488380
488373
|
progressMessage: "analyzing your sessions",
|
|
488381
488374
|
source: "builtin",
|
|
@@ -488407,7 +488400,7 @@ ${atAGlance.whats_hindering ? `**What's hindering you:** ${atAGlance.whats_hinde
|
|
|
488407
488400
|
${atAGlance.quick_wins ? `**Quick wins to try:** ${atAGlance.quick_wins} See _Features to Try_.` : ""}
|
|
488408
488401
|
|
|
488409
488402
|
${atAGlance.ambitious_workflows ? `**Ambitious workflows:** ${atAGlance.ambitious_workflows} See _On the Horizon_.` : ""}` : "_No insights generated_";
|
|
488410
|
-
const header = `#
|
|
488403
|
+
const header = `# Cody Insights
|
|
488411
488404
|
|
|
488412
488405
|
${stats2}
|
|
488413
488406
|
${data.date_range.start} to ${data.date_range.end}
|
|
@@ -488419,7 +488412,7 @@ Your full shareable insights report is ready: ${reportUrl}${uploadHint}`;
|
|
|
488419
488412
|
return [
|
|
488420
488413
|
{
|
|
488421
488414
|
type: "text",
|
|
488422
|
-
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.
|
|
488423
488416
|
|
|
488424
488417
|
Here is the full insights data:
|
|
488425
488418
|
${jsonStringify(insights, null, 2)}
|
|
@@ -493783,7 +493776,7 @@ async function execPromptHook(hook, hookName, hookEvent, jsonInput, signal, tool
|
|
|
493783
493776
|
const response7 = await queryModelWithoutStreaming({
|
|
493784
493777
|
messages: messagesToQuery,
|
|
493785
493778
|
systemPrompt: asSystemPrompt([
|
|
493786
|
-
`You are evaluating a hook in
|
|
493779
|
+
`You are evaluating a hook in Cody.
|
|
493787
493780
|
|
|
493788
493781
|
Your response must be a JSON object matching one of the following schemas:
|
|
493789
493782
|
1. If the condition is met, return: {"ok": true}
|
|
@@ -493949,7 +493942,7 @@ async function execAgentHook(hook, hookName, hookEvent, jsonInput, signal, toolU
|
|
|
493949
493942
|
structuredOutputTool
|
|
493950
493943
|
];
|
|
493951
493944
|
const systemPrompt = asSystemPrompt([
|
|
493952
|
-
`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}
|
|
493953
493946
|
You can read this file to analyze the conversation history if needed.
|
|
493954
493947
|
|
|
493955
493948
|
Use the available tools to inspect the codebase and verify the condition.
|
|
@@ -498191,7 +498184,7 @@ function getSimpleDoingTasksSection() {
|
|
|
498191
498184
|
...[]
|
|
498192
498185
|
];
|
|
498193
498186
|
const userHelpSubitems = [
|
|
498194
|
-
`/help: Get help with using
|
|
498187
|
+
`/help: Get help with using Cody`,
|
|
498195
498188
|
`To give feedback, users should ${"report at https://github.com/AINative-Studio/core/issues"}`
|
|
498196
498189
|
];
|
|
498197
498190
|
const items = [
|
|
@@ -498315,7 +498308,7 @@ function getSimpleToneAndStyleSection() {
|
|
|
498315
498308
|
async function getSystemPrompt(tools, model, additionalWorkingDirectories, mcpClients) {
|
|
498316
498309
|
if (isEnvTruthy(process.env.CLAUDE_CODE_SIMPLE)) {
|
|
498317
498310
|
return [
|
|
498318
|
-
`You are
|
|
498311
|
+
`You are Cody, AINative Studio's AI-powered coding assistant.
|
|
498319
498312
|
|
|
498320
498313
|
CWD: ${getCwd()}
|
|
498321
498314
|
Date: ${getSessionStartDate()}`
|
|
@@ -498423,7 +498416,7 @@ async function computeSimpleEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
498423
498416
|
knowledgeCutoffMessage,
|
|
498424
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.`,
|
|
498425
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).`,
|
|
498426
|
-
`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.`
|
|
498427
498420
|
].filter((item) => item !== null);
|
|
498428
498421
|
return [
|
|
498429
498422
|
`# Environment`,
|
|
@@ -498510,7 +498503,7 @@ function getFunctionResultClearingSection(model) {
|
|
|
498510
498503
|
|
|
498511
498504
|
Old tool results will be automatically cleared from context to free up space. The ${config9.keepRecent} most recent results are always kept.`;
|
|
498512
498505
|
}
|
|
498513
|
-
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.`;
|
|
498514
498507
|
var init_prompts4 = __esm(() => {
|
|
498515
498508
|
init_env();
|
|
498516
498509
|
init_git();
|
|
@@ -504718,7 +504711,7 @@ function CostThresholdDialog(t0) {
|
|
|
504718
504711
|
let t4;
|
|
504719
504712
|
if ($3[4] !== onDone || $3[5] !== t32) {
|
|
504720
504713
|
t4 = /* @__PURE__ */ jsx_dev_runtime364.jsxDEV(Dialog, {
|
|
504721
|
-
title: "You've spent $5 on the
|
|
504714
|
+
title: "You've spent $5 on the AINative API this session.",
|
|
504722
504715
|
onCancel: onDone,
|
|
504723
504716
|
children: [
|
|
504724
504717
|
t1,
|
|
@@ -511270,7 +511263,7 @@ function useDiffInIDE({
|
|
|
511270
511263
|
const isUnmounted = import_react210.useRef(false);
|
|
511271
511264
|
const [hasError, setHasError] = import_react210.useState(false);
|
|
511272
511265
|
const sha = import_react210.useMemo(() => randomUUID35().slice(0, 6), []);
|
|
511273
|
-
const tabName = import_react210.useMemo(() => `\u273B [
|
|
511266
|
+
const tabName = import_react210.useMemo(() => `\u273B [Cody] ${basename42(filePath)} (${sha}) \u29C9`, [filePath, sha]);
|
|
511274
511267
|
const shouldShowDiffInIDE = hasAccessToIDEExtensionDiffFeature(toolUseContext.options.mcpClients) && getGlobalConfig().diffTool === "auto" && !filePath.endsWith(".ipynb");
|
|
511275
511268
|
const ideName = getConnectedIdeName(toolUseContext.options.mcpClients) ?? "IDE";
|
|
511276
511269
|
async function showDiff() {
|
|
@@ -514212,7 +514205,7 @@ function buildPlanApprovalOptions({
|
|
|
514212
514205
|
});
|
|
514213
514206
|
if (showUltraplan) {
|
|
514214
514207
|
options.push({
|
|
514215
|
-
label: "No, refine with Ultraplan on
|
|
514208
|
+
label: "No, refine with Ultraplan on Cody on the web",
|
|
514216
514209
|
value: "ultraplan"
|
|
514217
514210
|
});
|
|
514218
514211
|
}
|
|
@@ -517481,14 +517474,14 @@ function permissionComponentForTool(tool) {
|
|
|
517481
517474
|
function getNotificationMessage(toolUseConfirm) {
|
|
517482
517475
|
const toolName = toolUseConfirm.tool.userFacingName(toolUseConfirm.input);
|
|
517483
517476
|
if (toolUseConfirm.tool === ExitPlanModeV2Tool) {
|
|
517484
|
-
return "
|
|
517477
|
+
return "Cody needs your approval for the plan";
|
|
517485
517478
|
}
|
|
517486
517479
|
if (toolUseConfirm.tool === EnterPlanModeTool) {
|
|
517487
|
-
return "
|
|
517480
|
+
return "Cody wants to enter plan mode";
|
|
517488
517481
|
}
|
|
517489
517482
|
if (false) {}
|
|
517490
517483
|
if (!toolName || toolName.trim() === "") {
|
|
517491
|
-
return "
|
|
517484
|
+
return "Cody needs your attention";
|
|
517492
517485
|
}
|
|
517493
517486
|
return `Claude needs your permission to use ${toolName}`;
|
|
517494
517487
|
}
|
|
@@ -518056,7 +518049,7 @@ function ElicitationFormDialog({
|
|
|
518056
518049
|
const currentFieldIsText = currentField !== undefined && isTextField(currentField.schema) && !isEnumSchema(currentField.schema);
|
|
518057
518050
|
const isEditingTextField = currentFieldIsText && !focusedButton;
|
|
518058
518051
|
useRegisterOverlay("elicitation");
|
|
518059
|
-
useNotifyAfterTimeout("
|
|
518052
|
+
useNotifyAfterTimeout("Cody needs your input", "elicitation_dialog");
|
|
518060
518053
|
const syncTextInput = import_react220.useCallback((fieldIndex) => {
|
|
518061
518054
|
if (fieldIndex === undefined) {
|
|
518062
518055
|
setTextInputValue("");
|
|
@@ -518907,7 +518900,7 @@ function ElicitationURLDialog({
|
|
|
518907
518900
|
const phaseRef = import_react220.useRef("prompt");
|
|
518908
518901
|
const [focusedButton, setFocusedButton] = import_react220.useState("accept");
|
|
518909
518902
|
const showCancel = waitingState?.showCancel ?? false;
|
|
518910
|
-
useNotifyAfterTimeout("
|
|
518903
|
+
useNotifyAfterTimeout("Cody needs your input", "elicitation_url_dialog");
|
|
518911
518904
|
useRegisterOverlay("elicitation-url");
|
|
518912
518905
|
phaseRef.current = phase;
|
|
518913
518906
|
const onWaitingDismissRef = import_react220.useRef(onWaitingDismiss);
|
|
@@ -540024,7 +540017,7 @@ function TranscriptSharePrompt(t0) {
|
|
|
540024
540017
|
}, undefined, true, undefined, this),
|
|
540025
540018
|
/* @__PURE__ */ jsx_dev_runtime446.jsxDEV(ThemedText, {
|
|
540026
540019
|
bold: true,
|
|
540027
|
-
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?"
|
|
540028
540021
|
}, undefined, false, undefined, this)
|
|
540029
540022
|
]
|
|
540030
540023
|
}, undefined, true, undefined, this);
|
|
@@ -540967,7 +540960,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
540967
540960
|
let t32;
|
|
540968
540961
|
if ($3[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
540969
540962
|
t32 = {
|
|
540970
|
-
label: "Open in
|
|
540963
|
+
label: "Open in Cody Desktop",
|
|
540971
540964
|
value: "try"
|
|
540972
540965
|
};
|
|
540973
540966
|
$3[5] = t32;
|
|
@@ -541000,7 +540993,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
541000
540993
|
t6 = /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedBox_default, {
|
|
541001
540994
|
marginBottom: 1,
|
|
541002
540995
|
children: /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedText, {
|
|
541003
|
-
children: "Same
|
|
540996
|
+
children: "Same Cody with visual diffs, live app preview, parallel sessions, and more."
|
|
541004
540997
|
}, undefined, false, undefined, this)
|
|
541005
540998
|
}, undefined, false, undefined, this);
|
|
541006
540999
|
$3[8] = t6;
|
|
@@ -541018,7 +541011,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
541018
541011
|
let t8;
|
|
541019
541012
|
if ($3[11] !== handleSelect || $3[12] !== t7) {
|
|
541020
541013
|
t8 = /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(PermissionDialog, {
|
|
541021
|
-
title: "Try
|
|
541014
|
+
title: "Try Cody Desktop",
|
|
541022
541015
|
children: /* @__PURE__ */ jsx_dev_runtime450.jsxDEV(ThemedBox_default, {
|
|
541023
541016
|
flexDirection: "column",
|
|
541024
541017
|
paddingX: 2,
|
|
@@ -541386,7 +541379,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541386
541379
|
},
|
|
541387
541380
|
{
|
|
541388
541381
|
id: "paste-images-mac",
|
|
541389
|
-
content: async () => "Paste images into
|
|
541382
|
+
content: async () => "Paste images into Cody using control+v (not cmd+v!)",
|
|
541390
541383
|
cooldownSessions: 10,
|
|
541391
541384
|
isRelevant: async () => getPlatform() === "macos"
|
|
541392
541385
|
},
|
|
@@ -541455,7 +541448,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541455
541448
|
},
|
|
541456
541449
|
{
|
|
541457
541450
|
id: "desktop-app",
|
|
541458
|
-
content: async () => "Run
|
|
541451
|
+
content: async () => "Run Cody locally or remotely using the Claude desktop app: clau.de/desktop",
|
|
541459
541452
|
cooldownSessions: 15,
|
|
541460
541453
|
isRelevant: async () => getPlatform() !== "linux"
|
|
541461
541454
|
},
|
|
@@ -541463,7 +541456,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541463
541456
|
id: "desktop-shortcut",
|
|
541464
541457
|
content: async (ctx) => {
|
|
541465
541458
|
const blue2 = color("suggestion", ctx.theme);
|
|
541466
|
-
return `Continue your session in
|
|
541459
|
+
return `Continue your session in Cody Desktop with ${blue2("/desktop")}`;
|
|
541467
541460
|
},
|
|
541468
541461
|
cooldownSessions: 15,
|
|
541469
541462
|
isRelevant: async () => {
|
|
@@ -541480,7 +541473,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
541480
541473
|
},
|
|
541481
541474
|
{
|
|
541482
541475
|
id: "mobile-app",
|
|
541483
|
-
content: async () => "/mobile to use
|
|
541476
|
+
content: async () => "/mobile to use Cody from the Claude app on your phone",
|
|
541484
541477
|
cooldownSessions: 15,
|
|
541485
541478
|
isRelevant: async () => true
|
|
541486
541479
|
},
|
|
@@ -541583,7 +541576,7 @@ ${blue2(`/plugin install vercel@${OFFICIAL_MARKETPLACE_NAME}`)}`;
|
|
|
541583
541576
|
content: async (ctx) => {
|
|
541584
541577
|
const claude = color("claude", ctx.theme);
|
|
541585
541578
|
const reward = getCachedReferrerReward();
|
|
541586
|
-
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")}`;
|
|
541587
541580
|
},
|
|
541588
541581
|
cooldownSessions: 3,
|
|
541589
541582
|
isRelevant: async () => {
|
|
@@ -545023,7 +545016,7 @@ async function _temp291() {
|
|
|
545023
545016
|
priority: "high"
|
|
545024
545017
|
};
|
|
545025
545018
|
}
|
|
545026
|
-
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.";
|
|
545027
545020
|
var init_useNpmDeprecationNotification = __esm(() => {
|
|
545028
545021
|
init_doctorDiagnostic();
|
|
545029
545022
|
init_envUtils();
|
|
@@ -545293,7 +545286,7 @@ async function _temp295() {
|
|
|
545293
545286
|
children: [
|
|
545294
545287
|
"Use your existing Claude ",
|
|
545295
545288
|
subscriptionType,
|
|
545296
|
-
" plan with
|
|
545289
|
+
" plan with Cody",
|
|
545297
545290
|
/* @__PURE__ */ jsx_dev_runtime463.jsxDEV(ThemedText, {
|
|
545298
545291
|
color: "text",
|
|
545299
545292
|
dimColor: true,
|
|
@@ -547069,7 +547062,7 @@ function REPL({
|
|
|
547069
547062
|
const [haikuTitle, setHaikuTitle] = import_react318.useState();
|
|
547070
547063
|
const haikuTitleAttemptedRef = import_react318.useRef((initialMessages?.length ?? 0) > 0);
|
|
547071
547064
|
const agentTitle = mainThreadAgentDefinition?.agentType;
|
|
547072
|
-
const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? "
|
|
547065
|
+
const terminalTitle = sessionTitle ?? agentTitle ?? haikuTitle ?? "Cody";
|
|
547073
547066
|
const isWaitingForApproval = toolUseConfirmQueue.length > 0 || promptQueue.length > 0 || pendingWorkerRequest || pendingSandboxRequest;
|
|
547074
547067
|
const isShowingLocalJSXCommand = toolJSX?.isLocalJSXCommand === true && toolJSX?.jsx != null;
|
|
547075
547068
|
const titleIsAnimating = isLoading && !isWaitingForApproval && !isShowingLocalJSXCommand;
|
|
@@ -548951,8 +548944,8 @@ ${fileList}`);
|
|
|
548951
548944
|
import_react318.useEffect(() => {
|
|
548952
548945
|
const handleSuspend = () => {
|
|
548953
548946
|
process.stdout.write(`
|
|
548954
|
-
|
|
548955
|
-
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.
|
|
548956
548949
|
`);
|
|
548957
548950
|
};
|
|
548958
548951
|
const handleResume = () => {
|
|
@@ -550883,7 +550876,7 @@ function PreflightStep(t0) {
|
|
|
550883
550876
|
children: [
|
|
550884
550877
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550885
550878
|
color: "error",
|
|
550886
|
-
children: "Unable to connect to
|
|
550879
|
+
children: "Unable to connect to AINative services"
|
|
550887
550880
|
}, undefined, false, undefined, this),
|
|
550888
550881
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550889
550882
|
color: "error",
|
|
@@ -550910,7 +550903,7 @@ function PreflightStep(t0) {
|
|
|
550910
550903
|
}, undefined, false, undefined, this),
|
|
550911
550904
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550912
550905
|
children: [
|
|
550913
|
-
"Note:
|
|
550906
|
+
"Note: Cody might not be available in your country. Check supported countries at",
|
|
550914
550907
|
" ",
|
|
550915
550908
|
/* @__PURE__ */ jsx_dev_runtime473.jsxDEV(ThemedText, {
|
|
550916
550909
|
color: "suggestion",
|
|
@@ -552411,7 +552404,7 @@ function Onboarding({
|
|
|
552411
552404
|
children: [
|
|
552412
552405
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
552413
552406
|
bold: true,
|
|
552414
|
-
children: "Use
|
|
552407
|
+
children: "Use Cody's terminal setup?"
|
|
552415
552408
|
}, undefined, false, undefined, this),
|
|
552416
552409
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
552417
552410
|
flexDirection: "column",
|
|
@@ -552900,7 +552893,7 @@ function TrustDialog(t0) {
|
|
|
552900
552893
|
}, undefined, true, undefined, this);
|
|
552901
552894
|
t18 = /* @__PURE__ */ jsx_dev_runtime479.jsxDEV(ThemedText, {
|
|
552902
552895
|
children: [
|
|
552903
|
-
"
|
|
552896
|
+
"Cody",
|
|
552904
552897
|
"'",
|
|
552905
552898
|
"ll be able to read, edit, and execute files here."
|
|
552906
552899
|
]
|
|
@@ -553094,7 +553087,7 @@ function BypassPermissionsModeDialog(t0) {
|
|
|
553094
553087
|
children: [
|
|
553095
553088
|
/* @__PURE__ */ jsx_dev_runtime480.jsxDEV(ThemedText, {
|
|
553096
553089
|
children: [
|
|
553097
|
-
"In Bypass Permissions mode,
|
|
553090
|
+
"In Bypass Permissions mode, Cody will not ask for your approval before running potentially dangerous commands.",
|
|
553098
553091
|
/* @__PURE__ */ jsx_dev_runtime480.jsxDEV(Newline, {}, undefined, false, undefined, this),
|
|
553099
553092
|
"This mode should only be used in a sandboxed container/VM that has restricted internet access and can easily be restored if damaged."
|
|
553100
553093
|
]
|
|
@@ -553127,7 +553120,7 @@ function BypassPermissionsModeDialog(t0) {
|
|
|
553127
553120
|
let t5;
|
|
553128
553121
|
if ($3[5] !== onChange) {
|
|
553129
553122
|
t5 = /* @__PURE__ */ jsx_dev_runtime480.jsxDEV(Dialog, {
|
|
553130
|
-
title: "WARNING:
|
|
553123
|
+
title: "WARNING: Cody running in Bypass Permissions mode",
|
|
553131
553124
|
color: "error",
|
|
553132
553125
|
onCancel: handleEscape,
|
|
553133
553126
|
children: [
|
|
@@ -553226,7 +553219,7 @@ function ClaudeInChromeOnboarding(t0) {
|
|
|
553226
553219
|
if ($3[6] !== t4) {
|
|
553227
553220
|
t5 = /* @__PURE__ */ jsx_dev_runtime481.jsxDEV(ThemedText, {
|
|
553228
553221
|
children: [
|
|
553229
|
-
"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.",
|
|
553230
553223
|
t4
|
|
553231
553224
|
]
|
|
553232
553225
|
}, undefined, true, undefined, this);
|
|
@@ -553857,13 +553850,13 @@ function ResumeTask({
|
|
|
553857
553850
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(Spinner, {}, undefined, false, undefined, this),
|
|
553858
553851
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553859
553852
|
bold: true,
|
|
553860
|
-
children: "Loading
|
|
553853
|
+
children: "Loading Cody sessions\u2026"
|
|
553861
553854
|
}, undefined, false, undefined, this)
|
|
553862
553855
|
]
|
|
553863
553856
|
}, undefined, true, undefined, this),
|
|
553864
553857
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553865
553858
|
dimColor: true,
|
|
553866
|
-
children: retrying ? "Retrying\u2026" : "Fetching your
|
|
553859
|
+
children: retrying ? "Retrying\u2026" : "Fetching your Cody sessions\u2026"
|
|
553867
553860
|
}, undefined, false, undefined, this)
|
|
553868
553861
|
]
|
|
553869
553862
|
}, undefined, true, undefined, this);
|
|
@@ -553876,7 +553869,7 @@ function ResumeTask({
|
|
|
553876
553869
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553877
553870
|
bold: true,
|
|
553878
553871
|
color: "error",
|
|
553879
|
-
children: "Error loading
|
|
553872
|
+
children: "Error loading Cody sessions"
|
|
553880
553873
|
}, undefined, false, undefined, this),
|
|
553881
553874
|
renderErrorSpecificGuidance(loadErrorType),
|
|
553882
553875
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
@@ -553907,7 +553900,7 @@ function ResumeTask({
|
|
|
553907
553900
|
/* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553908
553901
|
bold: true,
|
|
553909
553902
|
children: [
|
|
553910
|
-
"No
|
|
553903
|
+
"No Cody sessions found",
|
|
553911
553904
|
currentRepo && /* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
553912
553905
|
children: [
|
|
553913
553906
|
" for ",
|
|
@@ -554106,7 +554099,7 @@ function renderErrorSpecificGuidance(errorType) {
|
|
|
554106
554099
|
flexDirection: "row",
|
|
554107
554100
|
children: /* @__PURE__ */ jsx_dev_runtime484.jsxDEV(ThemedText, {
|
|
554108
554101
|
dimColor: true,
|
|
554109
|
-
children: "Sorry,
|
|
554102
|
+
children: "Sorry, Cody encountered an error"
|
|
554110
554103
|
}, undefined, false, undefined, this)
|
|
554111
554104
|
}, undefined, false, undefined, this);
|
|
554112
554105
|
}
|
|
@@ -554426,7 +554419,7 @@ function TeleportRepoMismatchDialog(t0) {
|
|
|
554426
554419
|
}, undefined, false, undefined, this),
|
|
554427
554420
|
/* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
|
|
554428
554421
|
children: [
|
|
554429
|
-
"Open
|
|
554422
|
+
"Open Cody in ",
|
|
554430
554423
|
/* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
|
|
554431
554424
|
bold: true,
|
|
554432
554425
|
children: targetRepo
|
|
@@ -555339,7 +555332,7 @@ Tell the user that debug logging is now active at \`${debugLogPath}\`, ask them
|
|
|
555339
555332
|
`;
|
|
555340
555333
|
const prompt = `# Debug Skill
|
|
555341
555334
|
|
|
555342
|
-
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.
|
|
555343
555336
|
${justEnabledSection}
|
|
555344
555337
|
## Session Debug Log
|
|
555345
555338
|
|
|
@@ -555364,7 +555357,7 @@ Remember that settings are in:
|
|
|
555364
555357
|
|
|
555365
555358
|
1. Review the user's issue description
|
|
555366
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
|
|
555367
|
-
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
|
|
555368
555361
|
4. Explain what you found in plain language
|
|
555369
555362
|
5. Suggest concrete fixes or next steps
|
|
555370
555363
|
`;
|
|
@@ -556439,7 +556432,7 @@ function registerStuckSkill() {
|
|
|
556439
556432
|
}
|
|
556440
556433
|
registerBundledSkill({
|
|
556441
556434
|
name: "stuck",
|
|
556442
|
-
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.",
|
|
556443
556436
|
userInvocable: true,
|
|
556444
556437
|
async getPromptForCommand(args) {
|
|
556445
556438
|
let prompt = STUCK_PROMPT;
|
|
@@ -556454,13 +556447,13 @@ ${args}
|
|
|
556454
556447
|
}
|
|
556455
556448
|
});
|
|
556456
556449
|
}
|
|
556457
|
-
var STUCK_PROMPT = `# /stuck \u2014 diagnose frozen/slow
|
|
556450
|
+
var STUCK_PROMPT = `# /stuck \u2014 diagnose frozen/slow Cody sessions
|
|
556458
556451
|
|
|
556459
|
-
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.
|
|
556460
556453
|
|
|
556461
556454
|
## What to look for
|
|
556462
556455
|
|
|
556463
|
-
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).
|
|
556464
556457
|
|
|
556465
556458
|
Signs of a stuck session:
|
|
556466
556459
|
- **High CPU (\u226590%) sustained** \u2014 likely an infinite loop. Sample twice, 1-2s apart, to confirm it's not a transient spike.
|
|
@@ -556472,7 +556465,7 @@ Signs of a stuck session:
|
|
|
556472
556465
|
|
|
556473
556466
|
## Investigation steps
|
|
556474
556467
|
|
|
556475
|
-
1. **List all
|
|
556468
|
+
1. **List all Cody processes** (macOS/Linux):
|
|
556476
556469
|
\`\`\`
|
|
556477
556470
|
ps -axo pid=,pcpu=,rss=,etime=,state=,comm=,command= | grep -E '(claude|cli)' | grep -v grep
|
|
556478
556471
|
\`\`\`
|
|
@@ -556496,7 +556489,7 @@ If you did find a stuck/slow session, post to **#claude-code-feedback** (channel
|
|
|
556496
556489
|
|
|
556497
556490
|
**Use a two-message structure** to keep the channel scannable:
|
|
556498
556491
|
|
|
556499
|
-
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.
|
|
556500
556493
|
2. **Thread reply** \u2014 the full diagnostic dump. Pass the top-level message's \`ts\` as \`thread_ts\`. Include:
|
|
556501
556494
|
- PID, CPU%, RSS, state, uptime, command line, child processes
|
|
556502
556495
|
- Your diagnosis of what's likely wrong
|
|
@@ -556520,7 +556513,7 @@ function generateSettingsSchema() {
|
|
|
556520
556513
|
function registerUpdateConfigSkill() {
|
|
556521
556514
|
registerBundledSkill({
|
|
556522
556515
|
name: "update-config",
|
|
556523
|
-
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.',
|
|
556524
556517
|
allowedTools: ["Read"],
|
|
556525
556518
|
userInvocable: true,
|
|
556526
556519
|
async getPromptForCommand(args) {
|
|
@@ -556649,7 +556642,7 @@ Plugin syntax: \`plugin-name@source\` where source is \`claude-code-marketplace\
|
|
|
556649
556642
|
- \`syntaxHighlightingDisabled\`: Disable diff highlighting
|
|
556650
556643
|
`, HOOKS_DOCS = `## Hooks Configuration
|
|
556651
556644
|
|
|
556652
|
-
Hooks run commands at specific points in
|
|
556645
|
+
Hooks run commands at specific points in Cody's lifecycle.
|
|
556653
556646
|
|
|
556654
556647
|
### Hook Structure
|
|
556655
556648
|
\`\`\`json
|
|
@@ -556848,7 +556841,7 @@ var init_updateConfig = __esm(() => {
|
|
|
556848
556841
|
init_bundledSkills();
|
|
556849
556842
|
UPDATE_CONFIG_PROMPT = `# Update Config Skill
|
|
556850
556843
|
|
|
556851
|
-
Modify
|
|
556844
|
+
Modify Cody configuration by updating settings.json files.
|
|
556852
556845
|
|
|
556853
556846
|
## When Hooks Are Required (Not Memory)
|
|
556854
556847
|
|
|
@@ -557148,7 +557141,7 @@ function cliOk(msg) {
|
|
|
557148
557141
|
|
|
557149
557142
|
// src/commands/mcp/addCommand.ts
|
|
557150
557143
|
function registerMcpAddCommand(mcp2) {
|
|
557151
|
-
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.
|
|
557152
557145
|
|
|
557153
557146
|
` + `Examples:
|
|
557154
557147
|
` + ` # Add HTTP server:
|
|
@@ -557296,7 +557289,7 @@ var init_addCommand = __esm(() => {
|
|
|
557296
557289
|
// src/commands/mcp/xaaIdpCommand.ts
|
|
557297
557290
|
function registerMcpXaaIdpCommand(mcp2) {
|
|
557298
557291
|
const xaaIdp = mcp2.command("xaa").description("Manage the XAA (SEP-990) IdP connection");
|
|
557299
|
-
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) => {
|
|
557300
557293
|
let issuerUrl;
|
|
557301
557294
|
try {
|
|
557302
557295
|
issuerUrl = new URL(options.issuer);
|
|
@@ -558180,7 +558173,7 @@ async function setup(cwd2, permissionMode, allowDangerouslySkipPermissions, work
|
|
|
558180
558173
|
logForDiagnosticsNoPII("info", "setup_started");
|
|
558181
558174
|
const nodeVersion = process.version.match(/^v(\d+)\./)?.[1];
|
|
558182
558175
|
if (!nodeVersion || parseInt(nodeVersion) < 18) {
|
|
558183
|
-
console.error(source_default.bold.red("Error:
|
|
558176
|
+
console.error(source_default.bold.red("Error: Cody requires Node.js version 18 or higher."));
|
|
558184
558177
|
process.exit(1);
|
|
558185
558178
|
}
|
|
558186
558179
|
if (customSessionId) {
|
|
@@ -568417,7 +568410,7 @@ async function mcpResetChoicesHandler() {
|
|
|
568417
568410
|
enableAllProjectMcpServers: false
|
|
568418
568411
|
}));
|
|
568419
568412
|
cliOk(`All project-scoped (.mcp.json) server approvals and rejections have been reset.
|
|
568420
|
-
You will be prompted for approval next time you start
|
|
568413
|
+
You will be prompted for approval next time you start Cody.`);
|
|
568421
568414
|
}
|
|
568422
568415
|
var jsx_dev_runtime491;
|
|
568423
568416
|
var init_mcp5 = __esm(() => {
|
|
@@ -569142,11 +569135,11 @@ function Install({
|
|
|
569142
569135
|
}, [force, target]);
|
|
569143
569136
|
import_react334.useEffect(() => {
|
|
569144
569137
|
if (state4.type === "success") {
|
|
569145
|
-
setTimeout(onDone, 2000, "
|
|
569138
|
+
setTimeout(onDone, 2000, "Cody installation completed successfully", {
|
|
569146
569139
|
display: "system"
|
|
569147
569140
|
});
|
|
569148
569141
|
} else if (state4.type === "error") {
|
|
569149
|
-
setTimeout(onDone, 3000, "
|
|
569142
|
+
setTimeout(onDone, 3000, "Cody installation failed", {
|
|
569150
569143
|
display: "system"
|
|
569151
569144
|
});
|
|
569152
569145
|
}
|
|
@@ -569166,7 +569159,7 @@ function Install({
|
|
|
569166
569159
|
state4.type === "installing" && /* @__PURE__ */ jsx_dev_runtime492.jsxDEV(ThemedText, {
|
|
569167
569160
|
color: "claude",
|
|
569168
569161
|
children: [
|
|
569169
|
-
"Installing
|
|
569162
|
+
"Installing Cody native build ",
|
|
569170
569163
|
state4.version,
|
|
569171
569164
|
"..."
|
|
569172
569165
|
]
|
|
@@ -569191,7 +569184,7 @@ function Install({
|
|
|
569191
569184
|
/* @__PURE__ */ jsx_dev_runtime492.jsxDEV(ThemedText, {
|
|
569192
569185
|
color: "success",
|
|
569193
569186
|
bold: true,
|
|
569194
|
-
children: "
|
|
569187
|
+
children: "Cody successfully installed!"
|
|
569195
569188
|
}, undefined, false, undefined, this)
|
|
569196
569189
|
]
|
|
569197
569190
|
}, undefined, true, undefined, this),
|
|
@@ -569302,7 +569295,7 @@ var init_install = __esm(() => {
|
|
|
569302
569295
|
install = {
|
|
569303
569296
|
type: "local-jsx",
|
|
569304
569297
|
name: "install",
|
|
569305
|
-
description: "Install
|
|
569298
|
+
description: "Install Cody native build",
|
|
569306
569299
|
argumentHint: "[options]",
|
|
569307
569300
|
async call(onDone, _context, args) {
|
|
569308
569301
|
const force = args.includes("--force");
|