@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 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.4") {
111229
- return "0.24.4";
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 = "6575fcec5";
185939
- CLI_VERSION = "0.24.4";
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.4";
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: true,
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 = "6575fcec5";
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) || AuthType2.LOGIN_WITH_GOOGLE;
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.4";
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.4";
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.4";
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() && settings.merged.security.auth.selectedType) {
509215
- const err2 = validateAuthMethod(
509216
- settings.merged.security.auth.selectedType
509217
- );
509218
- if (err2) {
509219
- throw new Error(err2);
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 Gemini CLI model thoughts in the terminal window title during the working phase | `false` |
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 Gemini CLI in the home directory. | `true` |
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 (GEMINI.md, MCP servers) above the input. | `false` |
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 | Default |
84
- | ------------------------------------ | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
85
- | Memory Discovery Max Dirs | `context.discoveryMaxDirs` | Maximum number of directories to search for memory. | `200` |
86
- | Load Memory From Include Directories | `context.loadMemoryFromIncludeDirectories` | Controls how /memory refresh loads GEMINI.md files. When true, include directories are scanned; when false, only the current directory is used. | `false` |
87
- | Respect .gitignore | `context.fileFiltering.respectGitIgnore` | Respect .gitignore files when searching. | `true` |
88
- | Respect .codeflyignore | `context.fileFiltering.respectCodeflyIgnore` | Respect .codeflyignore files when searching. | `true` |
89
- | Enable Recursive File Search | `context.fileFiltering.enableRecursiveFileSearch` | Enable recursive file search functionality when completing @ references in the prompt. | `true` |
90
- | Enable Fuzzy Search | `context.fileFiltering.enableFuzzySearch` | Enable fuzzy search when searching for files. | `true` |
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 | Default |
109
- | ------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------- | ----------- |
110
- | Disable YOLO Mode | `security.disableYoloMode` | Disable YOLO mode, even if enabled by a flag. | `false` |
111
- | Allow Permanent Tool Approval | `security.enablePermanentToolApproval` | Enable the "Allow for all future sessions" option in tool confirmation dialogs. | `false` |
112
- | Blocks extensions from Git | `security.blockGitExtensions` | Blocks installing and loading extensions from Git. | `false` |
113
- | Folder Trust | `security.folderTrust.enabled` | Setting to track whether Folder trust is enabled. | `false` |
114
- | Enable Environment Variable Redaction | `security.environmentVariableRedaction.enabled` | Enable redaction of environment variables that may contain secrets. | `false` |
115
- | API Key | `security.auth.openai.apiKey` | OpenAI API key. | `undefined` |
116
- | Model | `security.auth.openai.model` | OpenAI model (e.g., gpt-4o). | `undefined` |
117
- | Base URL | `security.auth.openai.baseUrl` | OpenAI Base URL. | `undefined` |
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 Gemini CLI model thoughts in the terminal window title
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 Gemini CLI in the home
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 (GEMINI.md, MCP servers) above the
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-pro-preview"
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-pro"
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-pro"
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 GEMINI.md files. When
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`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeflyai/codefly",
3
- "version": "0.24.5",
3
+ "version": "0.24.6",
4
4
  "engines": {
5
5
  "node": ">=20.0.0"
6
6
  },