@codeflyai/codefly 0.24.5 → 0.24.6
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/bundle/codefly.js +80 -40
- package/bundle/docs/cli/settings.md +24 -21
- package/bundle/docs/get-started/configuration.md +26 -12
- package/package.json +1 -1
package/bundle/codefly.js
CHANGED
|
@@ -111225,8 +111225,8 @@ var init_channel = __esm({
|
|
|
111225
111225
|
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
111226
111226
|
import path12 from "node:path";
|
|
111227
111227
|
async function getVersion() {
|
|
111228
|
-
if ("0.24.
|
|
111229
|
-
return "0.24.
|
|
111228
|
+
if ("0.24.5") {
|
|
111229
|
+
return "0.24.5";
|
|
111230
111230
|
}
|
|
111231
111231
|
const pkgJson = await getPackageJson(__dirname3);
|
|
111232
111232
|
return pkgJson?.version || "unknown";
|
|
@@ -185935,8 +185935,8 @@ var GIT_COMMIT_INFO, CLI_VERSION;
|
|
|
185935
185935
|
var init_git_commit = __esm({
|
|
185936
185936
|
"packages/core/dist/src/generated/git-commit.js"() {
|
|
185937
185937
|
"use strict";
|
|
185938
|
-
GIT_COMMIT_INFO = "
|
|
185939
|
-
CLI_VERSION = "0.24.
|
|
185938
|
+
GIT_COMMIT_INFO = "791c46689";
|
|
185939
|
+
CLI_VERSION = "0.24.5";
|
|
185940
185940
|
}
|
|
185941
185941
|
});
|
|
185942
185942
|
|
|
@@ -188545,7 +188545,7 @@ var init_openaiCompatibleContentGenerator = __esm({
|
|
|
188545
188545
|
const data = await response.json();
|
|
188546
188546
|
const choice2 = data.choices[0];
|
|
188547
188547
|
const parts2 = [];
|
|
188548
|
-
if (choice2.message.reasoning_content) {
|
|
188548
|
+
if (this.config.enableThink && choice2.message.reasoning_content) {
|
|
188549
188549
|
parts2.push({
|
|
188550
188550
|
text: choice2.message.reasoning_content,
|
|
188551
188551
|
thought: true
|
|
@@ -188638,6 +188638,7 @@ ${choice2.message.reasoning_content}
|
|
|
188638
188638
|
}
|
|
188639
188639
|
const reader = response.body.getReader();
|
|
188640
188640
|
const decoder = new TextDecoder();
|
|
188641
|
+
const config2 = this.config;
|
|
188641
188642
|
return async function* () {
|
|
188642
188643
|
let buffer = "";
|
|
188643
188644
|
let isThinking = false;
|
|
@@ -188675,7 +188676,7 @@ ${choice2.message.reasoning_content}
|
|
|
188675
188676
|
continue;
|
|
188676
188677
|
const delta = choice2.delta;
|
|
188677
188678
|
const finishReason = choice2.finish_reason;
|
|
188678
|
-
if (delta.reasoning_content) {
|
|
188679
|
+
if (config2.enableThink && delta.reasoning_content) {
|
|
188679
188680
|
const parts2 = [];
|
|
188680
188681
|
if (!isThinking) {
|
|
188681
188682
|
isThinking = true;
|
|
@@ -188811,7 +188812,6 @@ ${choice2.message.reasoning_content}
|
|
|
188811
188812
|
}
|
|
188812
188813
|
}();
|
|
188813
188814
|
}
|
|
188814
|
-
// ... (rest of the file)
|
|
188815
188815
|
async countTokens(_request) {
|
|
188816
188816
|
return {
|
|
188817
188817
|
totalTokens: 0
|
|
@@ -188923,7 +188923,8 @@ async function createContentGenerator(config2, gcConfig, sessionId2) {
|
|
|
188923
188923
|
return new LoggingContentGenerator(new OpenAICompatibleContentGenerator({
|
|
188924
188924
|
apiKey: config2.apiKey,
|
|
188925
188925
|
baseUrl: config2.baseUrl || "",
|
|
188926
|
-
model: config2.model || ""
|
|
188926
|
+
model: config2.model || "",
|
|
188927
|
+
enableThink: gcConfig.getEnableThink()
|
|
188927
188928
|
}), gcConfig);
|
|
188928
188929
|
}
|
|
188929
188930
|
throw new Error(`Error creating contentGenerator: Unsupported authType: ${config2.authType}`);
|
|
@@ -340976,6 +340977,7 @@ var init_config3 = __esm({
|
|
|
340976
340977
|
useRipgrep;
|
|
340977
340978
|
enableInteractiveShell;
|
|
340978
340979
|
skipNextSpeakerCheck;
|
|
340980
|
+
enableThink;
|
|
340979
340981
|
shellExecutionConfig;
|
|
340980
340982
|
extensionManagement = true;
|
|
340981
340983
|
enablePromptCompletion = false;
|
|
@@ -341155,6 +341157,7 @@ var init_config3 = __esm({
|
|
|
341155
341157
|
this.disableYoloMode = params.disableYoloMode ?? false;
|
|
341156
341158
|
this.rawOutput = params.rawOutput ?? false;
|
|
341157
341159
|
this.acceptRawOutputRisk = params.acceptRawOutputRisk ?? false;
|
|
341160
|
+
this.enableThink = params.enableThink ?? false;
|
|
341158
341161
|
this.hooks = params.hooks;
|
|
341159
341162
|
this.projectHooks = params.projectHooks;
|
|
341160
341163
|
this.experiments = params.experiments;
|
|
@@ -341678,6 +341681,9 @@ var init_config3 = __esm({
|
|
|
341678
341681
|
getTelemetryEnabled() {
|
|
341679
341682
|
return this.telemetrySettings.enabled ?? false;
|
|
341680
341683
|
}
|
|
341684
|
+
getEnableThink() {
|
|
341685
|
+
return this.enableThink;
|
|
341686
|
+
}
|
|
341681
341687
|
getTelemetryLogPromptsEnabled() {
|
|
341682
341688
|
return this.telemetrySettings.logPrompts ?? true;
|
|
341683
341689
|
}
|
|
@@ -418652,7 +418658,7 @@ var init_init3 = __esm({
|
|
|
418652
418658
|
init_command_generation();
|
|
418653
418659
|
init_legacy_cleanup();
|
|
418654
418660
|
init_shared2();
|
|
418655
|
-
OPENSPEC_VERSION2 = "0.24.
|
|
418661
|
+
OPENSPEC_VERSION2 = "0.24.5";
|
|
418656
418662
|
DEFAULT_SCHEMA4 = "spec-driven";
|
|
418657
418663
|
PROGRESS_SPINNER = {
|
|
418658
418664
|
interval: 80,
|
|
@@ -449827,6 +449833,15 @@ var SETTINGS_SCHEMA = {
|
|
|
449827
449833
|
default: true,
|
|
449828
449834
|
description: "Skip the next speaker check.",
|
|
449829
449835
|
showInDialog: true
|
|
449836
|
+
},
|
|
449837
|
+
enableThink: {
|
|
449838
|
+
type: "boolean",
|
|
449839
|
+
label: "Enable Think Mode",
|
|
449840
|
+
category: "Model",
|
|
449841
|
+
requiresRestart: false,
|
|
449842
|
+
default: true,
|
|
449843
|
+
description: "Enable think mode for models that support it.",
|
|
449844
|
+
showInDialog: true
|
|
449830
449845
|
}
|
|
449831
449846
|
}
|
|
449832
449847
|
},
|
|
@@ -450446,7 +450461,7 @@ var SETTINGS_SCHEMA = {
|
|
|
450446
450461
|
type: "number",
|
|
450447
450462
|
label: "Context Window Limit",
|
|
450448
450463
|
category: "Security",
|
|
450449
|
-
requiresRestart:
|
|
450464
|
+
requiresRestart: false,
|
|
450450
450465
|
default: void 0,
|
|
450451
450466
|
description: "The maximum number of tokens allowed in the context window for OpenAI-compatible models.",
|
|
450452
450467
|
showInDialog: true
|
|
@@ -453470,7 +453485,7 @@ var WarningMessage = ({ text }) => {
|
|
|
453470
453485
|
};
|
|
453471
453486
|
|
|
453472
453487
|
// packages/cli/src/generated/git-commit.ts
|
|
453473
|
-
var GIT_COMMIT_INFO2 = "
|
|
453488
|
+
var GIT_COMMIT_INFO2 = "791c46689";
|
|
453474
453489
|
|
|
453475
453490
|
// packages/cli/src/ui/components/AboutBox.tsx
|
|
453476
453491
|
var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
|
|
@@ -461474,6 +461489,7 @@ var useAuthCommand = (settings, config2) => {
|
|
|
461474
461489
|
if (authType === AuthType2.OPENAI) {
|
|
461475
461490
|
const key = await reloadApiKey(authType);
|
|
461476
461491
|
if (!key) {
|
|
461492
|
+
setAuthState("awaiting_api_key_input" /* AwaitingApiKeyInput */);
|
|
461477
461493
|
return;
|
|
461478
461494
|
}
|
|
461479
461495
|
}
|
|
@@ -461535,11 +461551,26 @@ function AuthDialog({
|
|
|
461535
461551
|
onAuthError
|
|
461536
461552
|
}) {
|
|
461537
461553
|
let items = [
|
|
461554
|
+
{
|
|
461555
|
+
label: "OpenAI Compatible",
|
|
461556
|
+
value: AuthType2.OPENAI,
|
|
461557
|
+
key: AuthType2.OPENAI
|
|
461558
|
+
},
|
|
461559
|
+
{
|
|
461560
|
+
label: "Use Gemini API Key",
|
|
461561
|
+
value: AuthType2.USE_GEMINI,
|
|
461562
|
+
key: AuthType2.USE_GEMINI
|
|
461563
|
+
},
|
|
461538
461564
|
{
|
|
461539
461565
|
label: "Login with Google",
|
|
461540
461566
|
value: AuthType2.LOGIN_WITH_GOOGLE,
|
|
461541
461567
|
key: AuthType2.LOGIN_WITH_GOOGLE
|
|
461542
461568
|
},
|
|
461569
|
+
{
|
|
461570
|
+
label: "Vertex AI",
|
|
461571
|
+
value: AuthType2.USE_VERTEX_AI,
|
|
461572
|
+
key: AuthType2.USE_VERTEX_AI
|
|
461573
|
+
},
|
|
461543
461574
|
...process.env["CLOUD_SHELL"] === "true" ? [
|
|
461544
461575
|
{
|
|
461545
461576
|
label: "Use Cloud Shell user credentials",
|
|
@@ -461552,22 +461583,7 @@ function AuthDialog({
|
|
|
461552
461583
|
value: AuthType2.COMPUTE_ADC,
|
|
461553
461584
|
key: AuthType2.COMPUTE_ADC
|
|
461554
461585
|
}
|
|
461555
|
-
] : []
|
|
461556
|
-
{
|
|
461557
|
-
label: "Use Gemini API Key",
|
|
461558
|
-
value: AuthType2.USE_GEMINI,
|
|
461559
|
-
key: AuthType2.USE_GEMINI
|
|
461560
|
-
},
|
|
461561
|
-
{
|
|
461562
|
-
label: "Vertex AI",
|
|
461563
|
-
value: AuthType2.USE_VERTEX_AI,
|
|
461564
|
-
key: AuthType2.USE_VERTEX_AI
|
|
461565
|
-
},
|
|
461566
|
-
{
|
|
461567
|
-
label: "OpenAI Compatible",
|
|
461568
|
-
value: AuthType2.OPENAI,
|
|
461569
|
-
key: AuthType2.OPENAI
|
|
461570
|
-
}
|
|
461586
|
+
] : []
|
|
461571
461587
|
];
|
|
461572
461588
|
if (settings.merged.security.auth.enforcedType) {
|
|
461573
461589
|
items = items.filter(
|
|
@@ -461579,7 +461595,7 @@ function AuthDialog({
|
|
|
461579
461595
|
if (defaultAuthTypeEnv && Object.values(AuthType2).includes(defaultAuthTypeEnv)) {
|
|
461580
461596
|
defaultAuthType = defaultAuthTypeEnv;
|
|
461581
461597
|
}
|
|
461582
|
-
const preferredAuthType = settings.merged.security.auth.selectedType || defaultAuthType || (process.env["GEMINI_API_KEY"] ? AuthType2.USE_GEMINI : null) || (process.env["OPENAI_API_KEY"] ? AuthType2.OPENAI : null) || (process.env["GOOGLE_CLOUD_PROJECT"] && process.env["GOOGLE_CLOUD_LOCATION"] ? AuthType2.USE_VERTEX_AI : null)
|
|
461598
|
+
const preferredAuthType = settings.merged.security.auth.selectedType || defaultAuthType || (process.env["GEMINI_API_KEY"] ? AuthType2.USE_GEMINI : null) || (process.env["OPENAI_API_KEY"] ? AuthType2.OPENAI : null) || (process.env["GOOGLE_CLOUD_PROJECT"] && process.env["GOOGLE_CLOUD_LOCATION"] ? AuthType2.USE_VERTEX_AI : null);
|
|
461583
461599
|
let initialAuthIndex = items.findIndex(
|
|
461584
461600
|
(item) => item.value === preferredAuthType
|
|
461585
461601
|
);
|
|
@@ -488164,6 +488180,14 @@ var AppContainer = (props) => {
|
|
|
488164
488180
|
);
|
|
488165
488181
|
};
|
|
488166
488182
|
}, []);
|
|
488183
|
+
(0, import_react146.useEffect)(() => {
|
|
488184
|
+
if (settings.merged.security.auth.openai) {
|
|
488185
|
+
config2.openaiConfig = {
|
|
488186
|
+
...config2.openaiConfig,
|
|
488187
|
+
...settings.merged.security.auth.openai
|
|
488188
|
+
};
|
|
488189
|
+
}
|
|
488190
|
+
}, [settings.merged.security.auth.openai, config2]);
|
|
488167
488191
|
const { consoleMessages, clearConsoleMessages: clearConsoleMessagesState } = useConsoleMessages();
|
|
488168
488192
|
const mainAreaWidth = calculateMainAreaWidth(terminalWidth, settings);
|
|
488169
488193
|
const { inputWidth, suggestionsWidth } = (0, import_react146.useMemo)(() => {
|
|
@@ -496070,7 +496094,7 @@ init_shared2();
|
|
|
496070
496094
|
init_legacy_cleanup();
|
|
496071
496095
|
init_interactive();
|
|
496072
496096
|
import path153 from "node:path";
|
|
496073
|
-
var OPENSPEC_VERSION = "0.24.
|
|
496097
|
+
var OPENSPEC_VERSION = "0.24.5";
|
|
496074
496098
|
var UpdateCommand = class {
|
|
496075
496099
|
force;
|
|
496076
496100
|
constructor(options = {}) {
|
|
@@ -502031,7 +502055,7 @@ function isGhAuthenticated() {
|
|
|
502031
502055
|
}
|
|
502032
502056
|
}
|
|
502033
502057
|
function getVersion2() {
|
|
502034
|
-
return "0.24.
|
|
502058
|
+
return "0.24.5";
|
|
502035
502059
|
}
|
|
502036
502060
|
function getPlatform2() {
|
|
502037
502061
|
return os33.platform();
|
|
@@ -504320,7 +504344,7 @@ ${options.description}
|
|
|
504320
504344
|
|
|
504321
504345
|
// packages/core/dist/src/openspec/cli/index.js
|
|
504322
504346
|
var program2 = new Command2();
|
|
504323
|
-
var version3 = "0.24.
|
|
504347
|
+
var version3 = "0.24.5";
|
|
504324
504348
|
program2.name("openspec").description("AI-native system for spec-driven development").version(version3);
|
|
504325
504349
|
program2.option("--no-color", "Disable color output");
|
|
504326
504350
|
program2.hook("preAction", async (thisCommand) => {
|
|
@@ -505178,6 +505202,7 @@ async function loadCliConfig(settings, sessionId2, argv, options = {}) {
|
|
|
505178
505202
|
fakeResponses: argv.fakeResponses,
|
|
505179
505203
|
recordResponses: argv.recordResponses,
|
|
505180
505204
|
retryFetchErrors: settings.general?.retryFetchErrors,
|
|
505205
|
+
enableThink: settings.model?.enableThink,
|
|
505181
505206
|
ptyInfo: ptyInfo?.name,
|
|
505182
505207
|
disableLLMCorrection: settings.tools?.disableLLMCorrection,
|
|
505183
505208
|
rawOutput: argv.rawOutput,
|
|
@@ -509211,16 +509236,31 @@ async function main2() {
|
|
|
509211
509236
|
let initialAuthFailed = false;
|
|
509212
509237
|
if (!settings.merged.security.auth.useExternal) {
|
|
509213
509238
|
try {
|
|
509214
|
-
if (partialConfig.isInteractive()
|
|
509215
|
-
|
|
509216
|
-
settings.
|
|
509217
|
-
|
|
509218
|
-
|
|
509219
|
-
|
|
509239
|
+
if (partialConfig.isInteractive()) {
|
|
509240
|
+
if (process.env["GEMINI_API_KEY"]) {
|
|
509241
|
+
settings.setValue(
|
|
509242
|
+
"User" /* User */,
|
|
509243
|
+
"security.auth.selectedType",
|
|
509244
|
+
AuthType2.USE_GEMINI
|
|
509245
|
+
);
|
|
509246
|
+
} else if (process.env["OPENAI_API_KEY"]) {
|
|
509247
|
+
settings.setValue(
|
|
509248
|
+
"User" /* User */,
|
|
509249
|
+
"security.auth.selectedType",
|
|
509250
|
+
AuthType2.OPENAI
|
|
509251
|
+
);
|
|
509252
|
+
}
|
|
509253
|
+
if (settings.merged.security.auth.selectedType) {
|
|
509254
|
+
const err2 = validateAuthMethod(
|
|
509255
|
+
settings.merged.security.auth.selectedType
|
|
509256
|
+
);
|
|
509257
|
+
if (err2) {
|
|
509258
|
+
throw new Error(err2);
|
|
509259
|
+
}
|
|
509260
|
+
await partialConfig.refreshAuth(
|
|
509261
|
+
settings.merged.security.auth.selectedType
|
|
509262
|
+
);
|
|
509220
509263
|
}
|
|
509221
|
-
await partialConfig.refreshAuth(
|
|
509222
|
-
settings.merged.security.auth.selectedType
|
|
509223
|
-
);
|
|
509224
509264
|
} else if (!partialConfig.isInteractive()) {
|
|
509225
509265
|
const authType = await validateNonInteractiveAuth(
|
|
509226
509266
|
settings.merged.security.auth.selectedType,
|
|
@@ -43,12 +43,12 @@ they appear in the UI.
|
|
|
43
43
|
| UI Label | Setting | Description | Default |
|
|
44
44
|
| ------------------------------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
|
|
45
45
|
| Hide Window Title | `ui.hideWindowTitle` | Hide the window title bar | `false` |
|
|
46
|
-
| Show Thoughts in Title | `ui.showStatusInTitle` | Show
|
|
46
|
+
| Show Thoughts in Title | `ui.showStatusInTitle` | Show Codefly CLI model thoughts in the terminal window title during the working phase | `false` |
|
|
47
47
|
| Dynamic Window Title | `ui.dynamicWindowTitle` | Update the terminal window title with current status icons (Ready: ◇, Action Required: ✋, Working: ✦) | `true` |
|
|
48
|
-
| Show Home Directory Warning | `ui.showHomeDirectoryWarning` | Show a warning when running
|
|
48
|
+
| Show Home Directory Warning | `ui.showHomeDirectoryWarning` | Show a warning when running Codefly CLI in the home directory. | `true` |
|
|
49
49
|
| Hide Tips | `ui.hideTips` | Hide helpful tips in the UI | `false` |
|
|
50
50
|
| Hide Banner | `ui.hideBanner` | Hide the application banner | `false` |
|
|
51
|
-
| Hide Context Summary | `ui.hideContextSummary` | Hide the context summary (
|
|
51
|
+
| Hide Context Summary | `ui.hideContextSummary` | Hide the context summary (CODEFLY.md, MCP servers) above the input. | `false` |
|
|
52
52
|
| Hide CWD | `ui.footer.hideCWD` | Hide the current working directory path in the footer. | `false` |
|
|
53
53
|
| Hide Sandbox Status | `ui.footer.hideSandboxStatus` | Hide the sandbox status indicator in the footer. | `false` |
|
|
54
54
|
| Hide Model Info | `ui.footer.hideModelInfo` | Hide the model name and context usage in the footer. | `false` |
|
|
@@ -77,17 +77,18 @@ they appear in the UI.
|
|
|
77
77
|
| Max Session Turns | `model.maxSessionTurns` | Maximum number of user/model/tool turns to keep in a session. -1 means unlimited. | `-1` |
|
|
78
78
|
| Compression Threshold | `model.compressionThreshold` | The fraction of context usage at which to trigger context compression (e.g. 0.2, 0.3). | `0.5` |
|
|
79
79
|
| Skip Next Speaker Check | `model.skipNextSpeakerCheck` | Skip the next speaker check. | `true` |
|
|
80
|
+
| Enable Think Mode | `model.enableThink` | Enable think mode for models that support it. | `false` |
|
|
80
81
|
|
|
81
82
|
### Context
|
|
82
83
|
|
|
83
|
-
| UI Label | Setting | Description
|
|
84
|
-
| ------------------------------------ | ------------------------------------------------- |
|
|
85
|
-
| Memory Discovery Max Dirs | `context.discoveryMaxDirs` | Maximum number of directories to search for memory.
|
|
86
|
-
| Load Memory From Include Directories | `context.loadMemoryFromIncludeDirectories` | Controls how /memory refresh loads
|
|
87
|
-
| Respect .gitignore | `context.fileFiltering.respectGitIgnore` | Respect .gitignore files when searching.
|
|
88
|
-
| Respect .codeflyignore | `context.fileFiltering.respectCodeflyIgnore` | Respect .codeflyignore files when searching.
|
|
89
|
-
| Enable Recursive File Search | `context.fileFiltering.enableRecursiveFileSearch` | Enable recursive file search functionality when completing @ references in the prompt.
|
|
90
|
-
| Enable Fuzzy Search | `context.fileFiltering.enableFuzzySearch` | Enable fuzzy search when searching for files.
|
|
84
|
+
| UI Label | Setting | Description | Default |
|
|
85
|
+
| ------------------------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
|
|
86
|
+
| Memory Discovery Max Dirs | `context.discoveryMaxDirs` | Maximum number of directories to search for memory. | `200` |
|
|
87
|
+
| Load Memory From Include Directories | `context.loadMemoryFromIncludeDirectories` | Controls how /memory refresh loads CODEFLY.md files. When true, include directories are scanned; when false, only the current directory is used. | `false` |
|
|
88
|
+
| Respect .gitignore | `context.fileFiltering.respectGitIgnore` | Respect .gitignore files when searching. | `true` |
|
|
89
|
+
| Respect .codeflyignore | `context.fileFiltering.respectCodeflyIgnore` | Respect .codeflyignore files when searching. | `true` |
|
|
90
|
+
| Enable Recursive File Search | `context.fileFiltering.enableRecursiveFileSearch` | Enable recursive file search functionality when completing @ references in the prompt. | `true` |
|
|
91
|
+
| Enable Fuzzy Search | `context.fileFiltering.enableFuzzySearch` | Enable fuzzy search when searching for files. | `true` |
|
|
91
92
|
|
|
92
93
|
### Tools
|
|
93
94
|
|
|
@@ -105,16 +106,18 @@ they appear in the UI.
|
|
|
105
106
|
|
|
106
107
|
### Security
|
|
107
108
|
|
|
108
|
-
| UI Label | Setting | Description
|
|
109
|
-
| ------------------------------------- | ----------------------------------------------- |
|
|
110
|
-
| Disable YOLO Mode | `security.disableYoloMode` | Disable YOLO mode, even if enabled by a flag.
|
|
111
|
-
| Allow Permanent Tool Approval | `security.enablePermanentToolApproval` | Enable the "Allow for all future sessions" option in tool confirmation dialogs.
|
|
112
|
-
| Blocks extensions from Git | `security.blockGitExtensions` | Blocks installing and loading extensions from Git.
|
|
113
|
-
| Folder Trust | `security.folderTrust.enabled` | Setting to track whether Folder trust is enabled.
|
|
114
|
-
| Enable Environment Variable Redaction | `security.environmentVariableRedaction.enabled` | Enable redaction of environment variables that may contain secrets.
|
|
115
|
-
| API Key | `security.auth.openai.apiKey` | OpenAI API key.
|
|
116
|
-
| Model | `security.auth.openai.model` | OpenAI model (e.g., gpt-4o).
|
|
117
|
-
| Base URL | `security.auth.openai.baseUrl` | OpenAI Base URL.
|
|
109
|
+
| UI Label | Setting | Description | Default |
|
|
110
|
+
| ------------------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------- |
|
|
111
|
+
| Disable YOLO Mode | `security.disableYoloMode` | Disable YOLO mode, even if enabled by a flag. | `false` |
|
|
112
|
+
| Allow Permanent Tool Approval | `security.enablePermanentToolApproval` | Enable the "Allow for all future sessions" option in tool confirmation dialogs. | `false` |
|
|
113
|
+
| Blocks extensions from Git | `security.blockGitExtensions` | Blocks installing and loading extensions from Git. | `false` |
|
|
114
|
+
| Folder Trust | `security.folderTrust.enabled` | Setting to track whether Folder trust is enabled. | `false` |
|
|
115
|
+
| Enable Environment Variable Redaction | `security.environmentVariableRedaction.enabled` | Enable redaction of environment variables that may contain secrets. | `false` |
|
|
116
|
+
| API Key | `security.auth.openai.apiKey` | OpenAI Compatible API key. | `undefined` |
|
|
117
|
+
| Model | `security.auth.openai.model` | OpenAI Compatible model (e.g., gpt-4o). | `undefined` |
|
|
118
|
+
| Base URL | `security.auth.openai.baseUrl` | OpenAI Compatible Base URL. | `undefined` |
|
|
119
|
+
| Model Names | `security.auth.openai.models` | OpenAI Compatible model names (comma-separated). | `undefined` |
|
|
120
|
+
| Context Window Limit | `security.auth.openai.contextWindowLimit` | The maximum number of tokens allowed in the context window for OpenAI-compatible models. | `undefined` |
|
|
118
121
|
|
|
119
122
|
### Experimental
|
|
120
123
|
|
|
@@ -185,8 +185,8 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
185
185
|
- **Requires restart:** Yes
|
|
186
186
|
|
|
187
187
|
- **`ui.showStatusInTitle`** (boolean):
|
|
188
|
-
- **Description:** Show
|
|
189
|
-
during the working phase
|
|
188
|
+
- **Description:** Show Codefly CLI model thoughts in the terminal window
|
|
189
|
+
title during the working phase
|
|
190
190
|
- **Default:** `false`
|
|
191
191
|
|
|
192
192
|
- **`ui.dynamicWindowTitle`** (boolean):
|
|
@@ -195,7 +195,7 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
195
195
|
- **Default:** `true`
|
|
196
196
|
|
|
197
197
|
- **`ui.showHomeDirectoryWarning`** (boolean):
|
|
198
|
-
- **Description:** Show a warning when running
|
|
198
|
+
- **Description:** Show a warning when running Codefly CLI in the home
|
|
199
199
|
directory.
|
|
200
200
|
- **Default:** `true`
|
|
201
201
|
- **Requires restart:** Yes
|
|
@@ -209,8 +209,8 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
209
209
|
- **Default:** `false`
|
|
210
210
|
|
|
211
211
|
- **`ui.hideContextSummary`** (boolean):
|
|
212
|
-
- **Description:** Hide the context summary (
|
|
213
|
-
input.
|
|
212
|
+
- **Description:** Hide the context summary (CODEFLY.md, MCP servers) above
|
|
213
|
+
the input.
|
|
214
214
|
- **Default:** `false`
|
|
215
215
|
|
|
216
216
|
- **`ui.footer.hideCWD`** (boolean):
|
|
@@ -327,6 +327,10 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
327
327
|
- **Description:** Skip the next speaker check.
|
|
328
328
|
- **Default:** `true`
|
|
329
329
|
|
|
330
|
+
- **`model.enableThink`** (boolean):
|
|
331
|
+
- **Description:** Enable think mode for models that support it.
|
|
332
|
+
- **Default:** `false`
|
|
333
|
+
|
|
330
334
|
#### `modelConfigs`
|
|
331
335
|
|
|
332
336
|
- **`modelConfigs.aliases`** (object):
|
|
@@ -515,7 +519,7 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
515
519
|
},
|
|
516
520
|
"chat-compression-3-pro": {
|
|
517
521
|
"modelConfig": {
|
|
518
|
-
"model": "gemini-3-
|
|
522
|
+
"model": "gemini-3-flash-preview"
|
|
519
523
|
}
|
|
520
524
|
},
|
|
521
525
|
"chat-compression-3-flash": {
|
|
@@ -525,7 +529,7 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
525
529
|
},
|
|
526
530
|
"chat-compression-2.5-pro": {
|
|
527
531
|
"modelConfig": {
|
|
528
|
-
"model": "gemini-2.5-
|
|
532
|
+
"model": "gemini-2.5-flash"
|
|
529
533
|
}
|
|
530
534
|
},
|
|
531
535
|
"chat-compression-2.5-flash": {
|
|
@@ -540,7 +544,7 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
540
544
|
},
|
|
541
545
|
"chat-compression-default": {
|
|
542
546
|
"modelConfig": {
|
|
543
|
-
"model": "gemini-2.5-
|
|
547
|
+
"model": "gemini-2.5-flash"
|
|
544
548
|
}
|
|
545
549
|
}
|
|
546
550
|
}
|
|
@@ -591,7 +595,7 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
591
595
|
- **Default:** `[]`
|
|
592
596
|
|
|
593
597
|
- **`context.loadMemoryFromIncludeDirectories`** (boolean):
|
|
594
|
-
- **Description:** Controls how /memory refresh loads
|
|
598
|
+
- **Description:** Controls how /memory refresh loads CODEFLY.md files. When
|
|
595
599
|
true, include directories are scanned; when false, only the current
|
|
596
600
|
directory is used.
|
|
597
601
|
- **Default:** `false`
|
|
@@ -790,20 +794,30 @@ their corresponding top-level category object in your `settings.json` file.
|
|
|
790
794
|
- **Requires restart:** Yes
|
|
791
795
|
|
|
792
796
|
- **`security.auth.openai.apiKey`** (string):
|
|
793
|
-
- **Description:** OpenAI API key.
|
|
797
|
+
- **Description:** OpenAI Compatible API key.
|
|
794
798
|
- **Default:** `undefined`
|
|
795
799
|
- **Requires restart:** Yes
|
|
796
800
|
|
|
797
801
|
- **`security.auth.openai.model`** (string):
|
|
798
|
-
- **Description:** OpenAI model (e.g., gpt-4o).
|
|
802
|
+
- **Description:** OpenAI Compatible model (e.g., gpt-4o).
|
|
799
803
|
- **Default:** `undefined`
|
|
800
804
|
- **Requires restart:** Yes
|
|
801
805
|
|
|
802
806
|
- **`security.auth.openai.baseUrl`** (string):
|
|
803
|
-
- **Description:** OpenAI Base URL.
|
|
807
|
+
- **Description:** OpenAI Compatible Base URL.
|
|
808
|
+
- **Default:** `undefined`
|
|
809
|
+
- **Requires restart:** Yes
|
|
810
|
+
|
|
811
|
+
- **`security.auth.openai.models`** (string):
|
|
812
|
+
- **Description:** OpenAI Compatible model names (comma-separated).
|
|
804
813
|
- **Default:** `undefined`
|
|
805
814
|
- **Requires restart:** Yes
|
|
806
815
|
|
|
816
|
+
- **`security.auth.openai.contextWindowLimit`** (number):
|
|
817
|
+
- **Description:** The maximum number of tokens allowed in the context window
|
|
818
|
+
for OpenAI-compatible models.
|
|
819
|
+
- **Default:** `undefined`
|
|
820
|
+
|
|
807
821
|
- **`security.auth.selectedType`** (string):
|
|
808
822
|
- **Description:** The currently selected authentication type.
|
|
809
823
|
- **Default:** `undefined`
|