@protolabsai/proto 0.26.3 → 0.26.4

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.
Files changed (3) hide show
  1. package/cli.js +151 -124
  2. package/locales/en.js +66 -65
  3. package/package.json +2 -2
package/cli.js CHANGED
@@ -35181,6 +35181,9 @@ var init_retry = __esm({
35181
35181
  });
35182
35182
 
35183
35183
  // packages/core/dist/src/utils/partUtils.js
35184
+ function isInternalPart(part) {
35185
+ return typeof part === "object" && part !== null && part.protoInternal === true;
35186
+ }
35184
35187
  function partToString(value, options2) {
35185
35188
  if (!value) {
35186
35189
  return "";
@@ -35224,7 +35227,7 @@ function getResponseText(response) {
35224
35227
  if (response.candidates && response.candidates.length > 0) {
35225
35228
  const candidate = response.candidates[0];
35226
35229
  if (candidate.content && candidate.content.parts && candidate.content.parts.length > 0) {
35227
- return candidate.content.parts.filter((part) => part.text && !part.thought).map((part) => part.text).join("");
35230
+ return candidate.content.parts.filter((part) => part.text && !part.thought && !isInternalPart(part)).map((part) => part.text).join("");
35228
35231
  }
35229
35232
  }
35230
35233
  return null;
@@ -35273,6 +35276,7 @@ var init_partUtils = __esm({
35273
35276
  "packages/core/dist/src/utils/partUtils.js"() {
35274
35277
  "use strict";
35275
35278
  init_esbuild_shims();
35279
+ __name(isInternalPart, "isInternalPart");
35276
35280
  __name(partToString, "partToString");
35277
35281
  __name(getResponseText, "getResponseText");
35278
35282
  __name(flatMapTextParts, "flatMapTextParts");
@@ -144459,8 +144463,8 @@ ${result.llmContent}`;
144459
144463
  return "Limit must be a positive number";
144460
144464
  }
144461
144465
  const fileService = this.config.getFileService();
144462
- if (fileService.shouldQwenIgnoreFile(params.file_path)) {
144463
- return `File path '${filePath}' is ignored by .qwenignore pattern(s).`;
144466
+ if (fileService.shouldProtoIgnoreFile(params.file_path)) {
144467
+ return `File path '${filePath}' is ignored by .protoignore pattern(s).`;
144464
144468
  }
144465
144469
  return null;
144466
144470
  }
@@ -147854,7 +147858,8 @@ var init_converter = __esm({
147854
147858
  continue;
147855
147859
  if (toolCall.malformed) {
147856
147860
  parts2.push({
147857
- text: `[tool_call dropped: upstream streamed malformed JSON arguments for \`${toolCall.name}\`. Retry the call with properly-formed arguments.]`
147861
+ text: `[tool_call dropped: upstream streamed malformed JSON arguments for \`${toolCall.name}\`. Retry the call with properly-formed arguments.]`,
147862
+ protoInternal: true
147858
147863
  });
147859
147864
  continue;
147860
147865
  }
@@ -171109,7 +171114,7 @@ __export(geminiContentGenerator_exports, {
171109
171114
  createGeminiContentGenerator: () => createGeminiContentGenerator
171110
171115
  });
171111
171116
  function createGeminiContentGenerator(config2, gcConfig) {
171112
- const version2 = "0.26.3";
171117
+ const version2 = "0.26.4";
171113
171118
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
171114
171119
  const baseHeaders = {
171115
171120
  "User-Agent": userAgent2
@@ -173735,7 +173740,7 @@ function getThoughtText(response) {
173735
173740
  if (response.candidates && response.candidates.length > 0) {
173736
173741
  const candidate = response.candidates[0];
173737
173742
  if (candidate.content && candidate.content.parts && candidate.content.parts.length > 0) {
173738
- return candidate.content.parts.filter((part) => part.thought).map((part) => part.text ?? "").join("");
173743
+ return candidate.content.parts.filter((part) => part.thought && !isInternalPart(part)).map((part) => part.text ?? "").join("");
173739
173744
  }
173740
173745
  }
173741
173746
  return null;
@@ -173745,6 +173750,7 @@ var init_thoughtUtils = __esm({
173745
173750
  "packages/core/dist/src/utils/thoughtUtils.js"() {
173746
173751
  "use strict";
173747
173752
  init_esbuild_shims();
173753
+ init_partUtils();
173748
173754
  START_DELIMITER = "**";
173749
173755
  END_DELIMITER = "**";
173750
173756
  __name(parseThought, "parseThought");
@@ -189505,11 +189511,11 @@ var init_constants4 = __esm({
189505
189511
  init_esbuild_shims();
189506
189512
  DEFAULT_MEMORY_FILE_FILTERING_OPTIONS = {
189507
189513
  respectGitIgnore: false,
189508
- respectQwenIgnore: true
189514
+ respectProtoIgnore: true
189509
189515
  };
189510
189516
  DEFAULT_FILE_FILTERING_OPTIONS = {
189511
189517
  respectGitIgnore: true,
189512
- respectQwenIgnore: true
189518
+ respectProtoIgnore: true
189513
189519
  };
189514
189520
  }
189515
189521
  });
@@ -189566,7 +189572,7 @@ async function readFullStructure(rootPath, options2) {
189566
189572
  const fileName = entry.name;
189567
189573
  const filePath = path29.join(currentPath, fileName);
189568
189574
  if (options2.fileService) {
189569
- const shouldIgnore = options2.fileFilteringOptions.respectGitIgnore && options2.fileService.shouldGitIgnoreFile(filePath) || options2.fileFilteringOptions.respectQwenIgnore && options2.fileService.shouldQwenIgnoreFile(filePath);
189575
+ const shouldIgnore = options2.fileFilteringOptions.respectGitIgnore && options2.fileService.shouldGitIgnoreFile(filePath) || options2.fileFilteringOptions.respectProtoIgnore && options2.fileService.shouldProtoIgnoreFile(filePath);
189570
189576
  if (shouldIgnore) {
189571
189577
  continue;
189572
189578
  }
@@ -189590,7 +189596,7 @@ async function readFullStructure(rootPath, options2) {
189590
189596
  const subFolderPath = path29.join(currentPath, subFolderName);
189591
189597
  let isIgnored = false;
189592
189598
  if (options2.fileService) {
189593
- isIgnored = options2.fileFilteringOptions.respectGitIgnore && options2.fileService.shouldGitIgnoreFile(subFolderPath) || options2.fileFilteringOptions.respectQwenIgnore && options2.fileService.shouldQwenIgnoreFile(subFolderPath);
189599
+ isIgnored = options2.fileFilteringOptions.respectGitIgnore && options2.fileService.shouldGitIgnoreFile(subFolderPath) || options2.fileFilteringOptions.respectProtoIgnore && options2.fileService.shouldProtoIgnoreFile(subFolderPath);
189594
189600
  }
189595
189601
  if (options2.ignoredFolders.has(subFolderName) || isIgnored) {
189596
189602
  const ignoredSubFolder = {
@@ -199629,18 +199635,18 @@ var init_gitIgnoreParser = __esm({
199629
199635
  }
199630
199636
  });
199631
199637
 
199632
- // packages/core/dist/src/utils/qwenIgnoreParser.js
199638
+ // packages/core/dist/src/utils/protoIgnoreParser.js
199633
199639
  import * as fs32 from "node:fs";
199634
199640
  import * as path35 from "node:path";
199635
- var import_ignore2, QwenIgnoreParser;
199636
- var init_qwenIgnoreParser = __esm({
199637
- "packages/core/dist/src/utils/qwenIgnoreParser.js"() {
199641
+ var import_ignore2, ProtoIgnoreParser;
199642
+ var init_protoIgnoreParser = __esm({
199643
+ "packages/core/dist/src/utils/protoIgnoreParser.js"() {
199638
199644
  "use strict";
199639
199645
  init_esbuild_shims();
199640
199646
  import_ignore2 = __toESM(require_ignore(), 1);
199641
- QwenIgnoreParser = class {
199647
+ ProtoIgnoreParser = class {
199642
199648
  static {
199643
- __name(this, "QwenIgnoreParser");
199649
+ __name(this, "ProtoIgnoreParser");
199644
199650
  }
199645
199651
  projectRoot;
199646
199652
  patterns = [];
@@ -199650,14 +199656,23 @@ var init_qwenIgnoreParser = __esm({
199650
199656
  this.loadPatterns();
199651
199657
  }
199652
199658
  loadPatterns() {
199653
- const patternsFilePath = path35.join(this.projectRoot, ".qwenignore");
199654
- let content;
199655
- try {
199656
- content = fs32.readFileSync(patternsFilePath, "utf-8");
199657
- } catch (_error) {
199659
+ const sources = [".claudeignore", ".protoignore"];
199660
+ const merged = [];
199661
+ for (const filename of sources) {
199662
+ const patternsFilePath = path35.join(this.projectRoot, filename);
199663
+ let content;
199664
+ try {
199665
+ content = fs32.readFileSync(patternsFilePath, "utf-8");
199666
+ } catch (_error) {
199667
+ continue;
199668
+ }
199669
+ const lines = (content ?? "").split("\n").map((p2) => p2.trim()).filter((p2) => p2 !== "" && !p2.startsWith("#"));
199670
+ merged.push(...lines);
199671
+ }
199672
+ if (merged.length === 0) {
199658
199673
  return;
199659
199674
  }
199660
- this.patterns = (content ?? "").split("\n").map((p2) => p2.trim()).filter((p2) => p2 !== "" && !p2.startsWith("#"));
199675
+ this.patterns = merged;
199661
199676
  this.ig.add(this.patterns);
199662
199677
  }
199663
199678
  isIgnored(filePath) {
@@ -199696,34 +199711,34 @@ var init_fileDiscoveryService = __esm({
199696
199711
  "use strict";
199697
199712
  init_esbuild_shims();
199698
199713
  init_gitIgnoreParser();
199699
- init_qwenIgnoreParser();
199714
+ init_protoIgnoreParser();
199700
199715
  init_gitUtils();
199701
199716
  FileDiscoveryService = class {
199702
199717
  static {
199703
199718
  __name(this, "FileDiscoveryService");
199704
199719
  }
199705
199720
  gitIgnoreFilter = null;
199706
- qwenIgnoreFilter = null;
199721
+ protoIgnoreFilter = null;
199707
199722
  projectRoot;
199708
199723
  constructor(projectRoot) {
199709
199724
  this.projectRoot = path36.resolve(projectRoot);
199710
199725
  if (isGitRepository(this.projectRoot)) {
199711
199726
  this.gitIgnoreFilter = new GitIgnoreParser(this.projectRoot);
199712
199727
  }
199713
- this.qwenIgnoreFilter = new QwenIgnoreParser(this.projectRoot);
199728
+ this.protoIgnoreFilter = new ProtoIgnoreParser(this.projectRoot);
199714
199729
  }
199715
199730
  /**
199716
199731
  * Filters a list of file paths based on git ignore rules
199717
199732
  */
199718
199733
  filterFiles(filePaths, options2 = {
199719
199734
  respectGitIgnore: true,
199720
- respectQwenIgnore: true
199735
+ respectProtoIgnore: true
199721
199736
  }) {
199722
199737
  return filePaths.filter((filePath) => {
199723
199738
  if (options2.respectGitIgnore && this.shouldGitIgnoreFile(filePath)) {
199724
199739
  return false;
199725
199740
  }
199726
- if (options2.respectQwenIgnore && this.shouldQwenIgnoreFile(filePath)) {
199741
+ if (options2.respectProtoIgnore && this.shouldProtoIgnoreFile(filePath)) {
199727
199742
  return false;
199728
199743
  }
199729
199744
  return true;
@@ -199735,18 +199750,18 @@ var init_fileDiscoveryService = __esm({
199735
199750
  */
199736
199751
  filterFilesWithReport(filePaths, opts = {
199737
199752
  respectGitIgnore: true,
199738
- respectQwenIgnore: true
199753
+ respectProtoIgnore: true
199739
199754
  }) {
199740
199755
  const filteredPaths = [];
199741
199756
  let gitIgnoredCount = 0;
199742
- let qwenIgnoredCount = 0;
199757
+ let protoIgnoredCount = 0;
199743
199758
  for (const filePath of filePaths) {
199744
199759
  if (opts.respectGitIgnore && this.shouldGitIgnoreFile(filePath)) {
199745
199760
  gitIgnoredCount++;
199746
199761
  continue;
199747
199762
  }
199748
- if (opts.respectQwenIgnore && this.shouldQwenIgnoreFile(filePath)) {
199749
- qwenIgnoredCount++;
199763
+ if (opts.respectProtoIgnore && this.shouldProtoIgnoreFile(filePath)) {
199764
+ protoIgnoredCount++;
199750
199765
  continue;
199751
199766
  }
199752
199767
  filteredPaths.push(filePath);
@@ -199754,7 +199769,7 @@ var init_fileDiscoveryService = __esm({
199754
199769
  return {
199755
199770
  filteredPaths,
199756
199771
  gitIgnoredCount,
199757
- qwenIgnoredCount
199772
+ protoIgnoredCount
199758
199773
  };
199759
199774
  }
199760
199775
  /**
@@ -199767,11 +199782,11 @@ var init_fileDiscoveryService = __esm({
199767
199782
  return false;
199768
199783
  }
199769
199784
  /**
199770
- * Checks if a single file should be qwen-ignored
199785
+ * Checks if a single file should be proto-ignored
199771
199786
  */
199772
- shouldQwenIgnoreFile(filePath) {
199773
- if (this.qwenIgnoreFilter) {
199774
- return this.qwenIgnoreFilter.isIgnored(filePath);
199787
+ shouldProtoIgnoreFile(filePath) {
199788
+ if (this.protoIgnoreFilter) {
199789
+ return this.protoIgnoreFilter.isIgnored(filePath);
199775
199790
  }
199776
199791
  return false;
199777
199792
  }
@@ -199779,20 +199794,20 @@ var init_fileDiscoveryService = __esm({
199779
199794
  * Unified method to check if a file should be ignored based on filtering options
199780
199795
  */
199781
199796
  shouldIgnoreFile(filePath, options2 = {}) {
199782
- const { respectGitIgnore = true, respectQwenIgnore = true } = options2;
199797
+ const { respectGitIgnore = true, respectProtoIgnore = true } = options2;
199783
199798
  if (respectGitIgnore && this.shouldGitIgnoreFile(filePath)) {
199784
199799
  return true;
199785
199800
  }
199786
- if (respectQwenIgnore && this.shouldQwenIgnoreFile(filePath)) {
199801
+ if (respectProtoIgnore && this.shouldProtoIgnoreFile(filePath)) {
199787
199802
  return true;
199788
199803
  }
199789
199804
  return false;
199790
199805
  }
199791
199806
  /**
199792
- * Returns loaded patterns from .qwenignore
199807
+ * Returns loaded patterns from .protoignore
199793
199808
  */
199794
- getQwenIgnorePatterns() {
199795
- return this.qwenIgnoreFilter?.getPatterns() ?? [];
199809
+ getProtoIgnorePatterns() {
199810
+ return this.protoIgnoreFilter?.getPatterns() ?? [];
199796
199811
  }
199797
199812
  };
199798
199813
  }
@@ -232721,7 +232736,7 @@ ${fileListDescription}`;
232721
232736
  const options2 = this.config.getFileFilteringOptions?.();
232722
232737
  return {
232723
232738
  respectGitIgnore: options2?.respectGitIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
232724
- respectQwenIgnore: options2?.respectQwenIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectQwenIgnore
232739
+ respectProtoIgnore: options2?.respectProtoIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectProtoIgnore
232725
232740
  };
232726
232741
  }
232727
232742
  };
@@ -233317,9 +233332,9 @@ var init_ls = __esm({
233317
233332
  }
233318
233333
  const relativePaths = files.map((file2) => path48.relative(this.config.getTargetDir(), path48.join(this.params.path, file2)));
233319
233334
  const fileDiscovery = this.config.getFileService();
233320
- const { filteredPaths, gitIgnoredCount, qwenIgnoredCount } = fileDiscovery.filterFilesWithReport(relativePaths, {
233335
+ const { filteredPaths, gitIgnoredCount, protoIgnoredCount } = fileDiscovery.filterFilesWithReport(relativePaths, {
233321
233336
  respectGitIgnore: this.params.file_filtering_options?.respect_git_ignore ?? this.config.getFileFilteringOptions().respectGitIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
233322
- respectQwenIgnore: this.params.file_filtering_options?.respect_qwen_ignore ?? this.config.getFileFilteringOptions().respectQwenIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectQwenIgnore
233337
+ respectProtoIgnore: this.params.file_filtering_options?.respect_qwen_ignore ?? this.config.getFileFilteringOptions().respectProtoIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectProtoIgnore
233323
233338
  });
233324
233339
  const entries = [];
233325
233340
  for (const relativePath of filteredPaths) {
@@ -233367,8 +233382,8 @@ ${directoryContent}`;
233367
233382
  if (gitIgnoredCount > 0) {
233368
233383
  ignoredMessages.push(`${gitIgnoredCount} git-ignored`);
233369
233384
  }
233370
- if (qwenIgnoredCount > 0) {
233371
- ignoredMessages.push(`${qwenIgnoredCount} qwen-ignored`);
233385
+ if (protoIgnoredCount > 0) {
233386
+ ignoredMessages.push(`${protoIgnoredCount} proto-ignored`);
233372
233387
  }
233373
233388
  if (ignoredMessages.length > 0) {
233374
233389
  resultMessage += `
@@ -233413,7 +233428,7 @@ ${directoryContent}`;
233413
233428
  type: "array"
233414
233429
  },
233415
233430
  file_filtering_options: {
233416
- description: "Optional: Whether to respect ignore patterns from .gitignore or .qwenignore",
233431
+ description: "Optional: Whether to respect ignore patterns from .gitignore or .protoignore",
233417
233432
  type: "object",
233418
233433
  properties: {
233419
233434
  respect_git_ignore: {
@@ -233421,7 +233436,7 @@ ${directoryContent}`;
233421
233436
  type: "boolean"
233422
233437
  },
233423
233438
  respect_qwen_ignore: {
233424
- description: "Optional: Whether to respect .qwenignore patterns when listing files. Defaults to true.",
233439
+ description: "Optional: Whether to respect .protoignore patterns when listing files. Defaults to true.",
233425
233440
  type: "boolean"
233426
233441
  }
233427
233442
  }
@@ -233777,14 +233792,14 @@ var init_ripGrep = __esm({
233777
233792
  if (!filteringOptions.respectGitIgnore) {
233778
233793
  rgArgs.push("--no-ignore-vcs");
233779
233794
  }
233780
- if (filteringOptions.respectQwenIgnore) {
233795
+ if (filteringOptions.respectProtoIgnore) {
233781
233796
  const seenIgnoreFiles = /* @__PURE__ */ new Set();
233782
233797
  for (const searchPath of paths) {
233783
233798
  const dir = fs42.existsSync(searchPath) && fs42.statSync(searchPath).isDirectory() ? searchPath : path50.dirname(searchPath);
233784
- const qwenIgnorePath = path50.join(dir, ".qwenignore");
233785
- if (!seenIgnoreFiles.has(qwenIgnorePath) && fs42.existsSync(qwenIgnorePath)) {
233786
- rgArgs.push("--ignore-file", qwenIgnorePath);
233787
- seenIgnoreFiles.add(qwenIgnorePath);
233799
+ const protoIgnorePath = path50.join(dir, ".protoignore");
233800
+ if (!seenIgnoreFiles.has(protoIgnorePath) && fs42.existsSync(protoIgnorePath)) {
233801
+ rgArgs.push("--ignore-file", protoIgnorePath);
233802
+ seenIgnoreFiles.add(protoIgnorePath);
233788
233803
  }
233789
233804
  }
233790
233805
  }
@@ -233803,7 +233818,7 @@ var init_ripGrep = __esm({
233803
233818
  const options2 = this.config.getFileFilteringOptions?.();
233804
233819
  return {
233805
233820
  respectGitIgnore: options2?.respectGitIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
233806
- respectQwenIgnore: options2?.respectQwenIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectQwenIgnore
233821
+ respectProtoIgnore: options2?.respectProtoIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectProtoIgnore
233807
233822
  };
233808
233823
  }
233809
233824
  /**
@@ -275883,7 +275898,7 @@ var init_config3 = __esm({
275883
275898
  this.outputLanguageFilePath = params.outputLanguageFilePath;
275884
275899
  this.fileFiltering = {
275885
275900
  respectGitIgnore: params.fileFiltering?.respectGitIgnore ?? true,
275886
- respectQwenIgnore: params.fileFiltering?.respectQwenIgnore ?? true,
275901
+ respectProtoIgnore: params.fileFiltering?.respectProtoIgnore ?? true,
275887
275902
  enableRecursiveFileSearch: params.fileFiltering?.enableRecursiveFileSearch ?? true,
275888
275903
  enableFuzzySearch: params.fileFiltering?.enableFuzzySearch ?? true
275889
275904
  };
@@ -276631,13 +276646,13 @@ var init_config3 = __esm({
276631
276646
  getFileFilteringRespectGitIgnore() {
276632
276647
  return this.fileFiltering.respectGitIgnore;
276633
276648
  }
276634
- getFileFilteringRespectQwenIgnore() {
276635
- return this.fileFiltering.respectQwenIgnore;
276649
+ getFileFilteringRespectProtoIgnore() {
276650
+ return this.fileFiltering.respectProtoIgnore;
276636
276651
  }
276637
276652
  getFileFilteringOptions() {
276638
276653
  return {
276639
276654
  respectGitIgnore: this.fileFiltering.respectGitIgnore,
276640
- respectQwenIgnore: this.fileFiltering.respectQwenIgnore
276655
+ respectProtoIgnore: this.fileFiltering.respectProtoIgnore
276641
276656
  };
276642
276657
  }
276643
276658
  /**
@@ -286370,9 +286385,9 @@ function loadIgnoreRules(options2) {
286370
286385
  }
286371
286386
  }
286372
286387
  if (options2.useQwenignore) {
286373
- const qwenignorePath = path97.join(options2.projectRoot, ".qwenignore");
286374
- if (fs87.existsSync(qwenignorePath)) {
286375
- ignorer.add(fs87.readFileSync(qwenignorePath, "utf8"));
286388
+ const protoignorePath = path97.join(options2.projectRoot, ".protoignore");
286389
+ if (fs87.existsSync(protoignorePath)) {
286390
+ ignorer.add(fs87.readFileSync(protoignorePath, "utf8"));
286376
286391
  }
286377
286392
  }
286378
286393
  const ignoreDirs = [".git", ...options2.ignoreDirs];
@@ -288671,7 +288686,7 @@ async function readPathFromWorkspace(pathStr, config2) {
288671
288686
  const relativeFiles = files.map((p2) => path100.relative(config2.getTargetDir(), p2));
288672
288687
  const filteredFiles = fileService.filterFiles(relativeFiles, {
288673
288688
  respectGitIgnore: true,
288674
- respectQwenIgnore: true
288689
+ respectProtoIgnore: true
288675
288690
  });
288676
288691
  const finalFiles = filteredFiles.map((p2) => path100.resolve(config2.getTargetDir(), p2));
288677
288692
  for (const filePath of finalFiles) {
@@ -288688,7 +288703,7 @@ async function readPathFromWorkspace(pathStr, config2) {
288688
288703
  const relativePath = path100.relative(config2.getTargetDir(), absolutePath);
288689
288704
  const filtered = fileService.filterFiles([relativePath], {
288690
288705
  respectGitIgnore: true,
288691
- respectQwenIgnore: true
288706
+ respectProtoIgnore: true
288692
288707
  });
288693
288708
  if (filtered.length === 0) {
288694
288709
  return [];
@@ -289864,6 +289879,7 @@ __export(dist_exports, {
289864
289879
  isExtractionInProgress: () => isExtractionInProgress,
289865
289880
  isGenericQuotaExceededError: () => isGenericQuotaExceededError,
289866
289881
  isGitRepository: () => isGitRepository,
289882
+ isInternalPart: () => isInternalPart,
289867
289883
  isInvalidArgumentError: () => isInvalidArgumentError,
289868
289884
  isNodeError: () => isNodeError,
289869
289885
  isPathWithinRoot: () => isPathWithinRoot,
@@ -328820,7 +328836,7 @@ var init_en3 = __esm({
328820
328836
  // ============================================================================
328821
328837
  // Commands - General
328822
328838
  // ============================================================================
328823
- "Analyzes the project and creates a tailored QWEN.md file.": "Analyzes the project and creates a tailored QWEN.md file.",
328839
+ "Analyzes the project and creates a tailored PROTO.md file.": "Analyzes the project and creates a tailored PROTO.md file.",
328824
328840
  "List available proto tools. Usage: /tools [desc]": "List available proto tools. Usage: /tools [desc]",
328825
328841
  "List available skills.": "List available skills.",
328826
328842
  "Available proto CLI tools:": "Available proto CLI tools:",
@@ -328894,8 +328910,8 @@ var init_en3 = __esm({
328894
328910
  // ============================================================================
328895
328911
  // Agents - Creation Wizard
328896
328912
  // ============================================================================
328897
- "Project Level (.qwen/agents/)": "Project Level (.qwen/agents/)",
328898
- "User Level (~/.qwen/agents/)": "User Level (~/.qwen/agents/)",
328913
+ "Project Level (.proto/agents/)": "Project Level (.proto/agents/)",
328914
+ "User Level (~/.proto/agents/)": "User Level (~/.proto/agents/)",
328899
328915
  "\u2705 Subagent Created Successfully!": "\u2705 Subagent Created Successfully!",
328900
328916
  'Subagent "{{name}}" has been saved to {{level}} level.': 'Subagent "{{name}}" has been saved to {{level}} level.',
328901
328917
  "Name: ": "Name: ",
@@ -329041,7 +329057,7 @@ var init_en3 = __esm({
329041
329057
  "Custom Witty Phrases": "Custom Witty Phrases",
329042
329058
  "Show Welcome Back Dialog": "Show Welcome Back Dialog",
329043
329059
  "Enable User Feedback": "Enable User Feedback",
329044
- "How is Qwen doing this session? (optional)": "How is Qwen doing this session? (optional)",
329060
+ "How is Proto doing this session? (optional)": "How is Proto doing this session? (optional)",
329045
329061
  Bad: "Bad",
329046
329062
  Fine: "Fine",
329047
329063
  Good: "Good",
@@ -329063,7 +329079,7 @@ var init_en3 = __esm({
329063
329079
  "Memory Discovery Max Dirs": "Memory Discovery Max Dirs",
329064
329080
  "Load Memory From Include Directories": "Load Memory From Include Directories",
329065
329081
  "Respect .gitignore": "Respect .gitignore",
329066
- "Respect .qwenignore": "Respect .qwenignore",
329082
+ "Respect .protoignore": "Respect .protoignore",
329067
329083
  "Enable Recursive File Search": "Enable Recursive File Search",
329068
329084
  "Disable Fuzzy Search": "Disable Fuzzy Search",
329069
329085
  "Interactive Shell (PTY)": "Interactive Shell (PTY)",
@@ -329132,7 +329148,7 @@ var init_en3 = __esm({
329132
329148
  local: "local",
329133
329149
  remote: "remote",
329134
329150
  "This extension will add the following commands: {{commands}}.": "This extension will add the following commands: {{commands}}.",
329135
- "This extension will append info to your QWEN.md context using {{fileName}}": "This extension will append info to your QWEN.md context using {{fileName}}",
329151
+ "This extension will append info to your PROTO.md context using {{fileName}}": "This extension will append info to your PROTO.md context using {{fileName}}",
329136
329152
  "This extension will exclude the following core tools: {{tools}}": "This extension will exclude the following core tools: {{tools}}",
329137
329153
  "This extension will install the following skills:": "This extension will install the following skills:",
329138
329154
  "This extension will install the following subagents:": "This extension will install the following subagents:",
@@ -329255,7 +329271,7 @@ var init_en3 = __esm({
329255
329271
  "Exit codes:": "Exit codes:",
329256
329272
  "Configured hooks:": "Configured hooks:",
329257
329273
  "No hooks configured for this event.": "No hooks configured for this event.",
329258
- "To add hooks, edit settings.json directly or ask Qwen.": "To add hooks, edit settings.json directly or ask Qwen.",
329274
+ "To add hooks, edit settings.json directly or ask Proto.": "To add hooks, edit settings.json directly or ask Proto.",
329259
329275
  "Enter to select \xB7 Esc to go back": "Enter to select \xB7 Esc to go back",
329260
329276
  // Hooks - Config Detail Step
329261
329277
  "Hook details": "Hook details",
@@ -329263,7 +329279,7 @@ var init_en3 = __esm({
329263
329279
  "Extension:": "Extension:",
329264
329280
  "Desc:": "Desc:",
329265
329281
  "No hook config selected": "No hook config selected",
329266
- "To modify or remove this hook, edit settings.json directly or ask Qwen to help.": "To modify or remove this hook, edit settings.json directly or ask Qwen to help.",
329282
+ "To modify or remove this hook, edit settings.json directly or ask Proto to help.": "To modify or remove this hook, edit settings.json directly or ask Proto to help.",
329267
329283
  // Hooks - Disabled Step
329268
329284
  "Hook Configuration - Disabled": "Hook Configuration - Disabled",
329269
329285
  "All hooks are currently disabled. You have {{count}} that are not running.": "All hooks are currently disabled. You have {{count}} that are not running.",
@@ -329273,7 +329289,7 @@ var init_en3 = __esm({
329273
329289
  "No hook commands will execute": "No hook commands will execute",
329274
329290
  "StatusLine will not be displayed": "StatusLine will not be displayed",
329275
329291
  "Tool operations will proceed without hook validation": "Tool operations will proceed without hook validation",
329276
- 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Qwen Code.': 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Qwen Code.',
329292
+ 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Proto Code.': 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Proto Code.',
329277
329293
  // Hooks - Source
329278
329294
  Project: "Project",
329279
329295
  User: "User",
@@ -329319,7 +329335,7 @@ var init_en3 = __esm({
329319
329335
  "show stderr to model immediately": "show stderr to model immediately",
329320
329336
  "show stderr to user only but continue with tool call": "show stderr to user only but continue with tool call",
329321
329337
  "block processing, erase original prompt, and show stderr to user only": "block processing, erase original prompt, and show stderr to user only",
329322
- "stdout shown to Qwen": "stdout shown to Qwen",
329338
+ "stdout shown to Proto": "stdout shown to Proto",
329323
329339
  "show stderr to user only (blocking errors ignored)": "show stderr to user only (blocking errors ignored)",
329324
329340
  "command completes successfully": "command completes successfully",
329325
329341
  "stdout shown to subagent": "stdout shown to subagent",
@@ -329499,7 +329515,7 @@ var init_en3 = __esm({
329499
329515
  server: "server",
329500
329516
  servers: "servers",
329501
329517
  "Add MCP servers to your settings to get started.": "Add MCP servers to your settings to get started.",
329502
- "Run qwen --debug to see error logs": "Run qwen --debug to see error logs",
329518
+ "Run proto --debug to see error logs": "Run proto --debug to see error logs",
329503
329519
  // MCP OAuth Authentication
329504
329520
  "OAuth Authentication": "OAuth Authentication",
329505
329521
  "Press Enter to start authentication, Esc to go back": "Press Enter to start authentication, Esc to go back",
@@ -329567,7 +329583,7 @@ var init_en3 = __esm({
329567
329583
  // ============================================================================
329568
329584
  // Commands - Summary
329569
329585
  // ============================================================================
329570
- "Generate a project summary and save it to .qwen/PROJECT_SUMMARY.md": "Generate a project summary and save it to .qwen/PROJECT_SUMMARY.md",
329586
+ "Generate a project summary and save it to .proto/PROJECT_SUMMARY.md": "Generate a project summary and save it to .proto/PROJECT_SUMMARY.md",
329571
329587
  "No chat client available to generate summary.": "No chat client available to generate summary.",
329572
329588
  "Already generating summary, wait for previous request to complete": "Already generating summary, wait for previous request to complete",
329573
329589
  "No conversation found to summarize.": "No conversation found to summarize.",
@@ -329608,7 +329624,7 @@ var init_en3 = __esm({
329608
329624
  "Please provide at least one path to add.": "Please provide at least one path to add.",
329609
329625
  "The /directory add command is not supported in restrictive sandbox profiles. Please use --include-directories when starting the session instead.": "The /directory add command is not supported in restrictive sandbox profiles. Please use --include-directories when starting the session instead.",
329610
329626
  "Error adding '{{path}}': {{error}}": "Error adding '{{path}}': {{error}}",
329611
- "Successfully added QWEN.md files from the following directories if there are:\n- {{directories}}": "Successfully added QWEN.md files from the following directories if there are:\n- {{directories}}",
329627
+ "Successfully added PROTO.md files from the following directories if there are:\n- {{directories}}": "Successfully added PROTO.md files from the following directories if there are:\n- {{directories}}",
329612
329628
  "Error refreshing memory: {{error}}": "Error refreshing memory: {{error}}",
329613
329629
  "Successfully added directories:\n- {{directories}}": "Successfully added directories:\n- {{directories}}",
329614
329630
  "Current workspace directories:\n{{directories}}": "Current workspace directories:\n{{directories}}",
@@ -329680,8 +329696,8 @@ var init_en3 = __esm({
329680
329696
  "OpenAI API key is required to use OpenAI authentication.": "OpenAI API key is required to use OpenAI authentication.",
329681
329697
  "You must select an auth method to proceed. Press Ctrl+C again to exit.": "You must select an auth method to proceed. Press Ctrl+C again to exit.",
329682
329698
  "Terms of Services and Privacy Notice": "Terms of Services and Privacy Notice",
329683
- "Qwen OAuth": "Qwen OAuth",
329684
- "Free \xB7 Up to 1,000 requests/day \xB7 Qwen latest models": "Free \xB7 Up to 1,000 requests/day \xB7 Qwen latest models",
329699
+ "Proto OAuth": "Proto OAuth",
329700
+ "Free \xB7 Up to 1,000 requests/day \xB7 Proto latest models": "Free \xB7 Up to 1,000 requests/day \xB7 Proto latest models",
329685
329701
  "Login with QwenChat account to use daily free quota.": "Login with QwenChat account to use daily free quota.",
329686
329702
  "Paid \xB7 Up to 6,000 requests/5 hrs \xB7 All Alibaba Cloud Coding Plan Models": "Paid \xB7 Up to 6,000 requests/5 hrs \xB7 All Alibaba Cloud Coding Plan Models",
329687
329703
  "Alibaba Cloud Coding Plan": "Alibaba Cloud Coding Plan",
@@ -329691,20 +329707,20 @@ var init_en3 = __esm({
329691
329707
  OpenAI: "OpenAI",
329692
329708
  "Failed to login. Message: {{message}}": "Failed to login. Message: {{message}}",
329693
329709
  "Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.": "Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.",
329694
- "Qwen OAuth authentication timed out. Please try again.": "Qwen OAuth authentication timed out. Please try again.",
329695
- "Qwen OAuth authentication cancelled.": "Qwen OAuth authentication cancelled.",
329696
- "Qwen OAuth Authentication": "Qwen OAuth Authentication",
329710
+ "Proto OAuth authentication timed out. Please try again.": "Proto OAuth authentication timed out. Please try again.",
329711
+ "Proto OAuth authentication cancelled.": "Proto OAuth authentication cancelled.",
329712
+ "Proto OAuth Authentication": "Proto OAuth Authentication",
329697
329713
  "Please visit this URL to authorize:": "Please visit this URL to authorize:",
329698
329714
  "Or scan the QR code below:": "Or scan the QR code below:",
329699
329715
  "Waiting for authorization": "Waiting for authorization",
329700
329716
  "Time remaining:": "Time remaining:",
329701
329717
  "(Press ESC or CTRL+C to cancel)": "(Press ESC or CTRL+C to cancel)",
329702
- "Qwen OAuth Authentication Timeout": "Qwen OAuth Authentication Timeout",
329718
+ "Proto OAuth Authentication Timeout": "Proto OAuth Authentication Timeout",
329703
329719
  "OAuth token expired (over {{seconds}} seconds). Please select authentication method again.": "OAuth token expired (over {{seconds}} seconds). Please select authentication method again.",
329704
329720
  "Press any key to return to authentication type selection.": "Press any key to return to authentication type selection.",
329705
- "Waiting for Qwen OAuth authentication...": "Waiting for Qwen OAuth authentication...",
329706
- "Note: Your existing API key in settings.json will not be cleared when using Qwen OAuth. You can switch back to OpenAI authentication later if needed.": "Note: Your existing API key in settings.json will not be cleared when using Qwen OAuth. You can switch back to OpenAI authentication later if needed.",
329707
- "Note: Your existing API key will not be cleared when using Qwen OAuth.": "Note: Your existing API key will not be cleared when using Qwen OAuth.",
329721
+ "Waiting for Proto OAuth authentication...": "Waiting for Proto OAuth authentication...",
329722
+ "Note: Your existing API key in settings.json will not be cleared when using Proto OAuth. You can switch back to OpenAI authentication later if needed.": "Note: Your existing API key in settings.json will not be cleared when using Proto OAuth. You can switch back to OpenAI authentication later if needed.",
329723
+ "Note: Your existing API key will not be cleared when using Proto OAuth.": "Note: Your existing API key will not be cleared when using Proto OAuth.",
329708
329724
  "Authentication timed out. Please try again.": "Authentication timed out. Please try again.",
329709
329725
  "Waiting for auth... (Press ESC or CTRL+C to cancel)": "Waiting for auth... (Press ESC or CTRL+C to cancel)",
329710
329726
  "Missing API key for OpenAI-compatible auth. Set settings.security.auth.apiKey, or set the {{envKeyHint}} environment variable.": "Missing API key for OpenAI-compatible auth. Set settings.security.auth.apiKey, or set the {{envKeyHint}} environment variable.",
@@ -329748,8 +329764,8 @@ var init_en3 = __esm({
329748
329764
  none: "none",
329749
329765
  unknown: "unknown",
329750
329766
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}": "Failed to switch model to '{{modelId}}'.\n\n{{error}}",
329751
- "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Qwen 3.5 Plus \u2014 efficient hybrid model with leading coding performance",
329752
- "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)",
329767
+ "Proto 3.5 Plus \u2014 efficient hybrid model with leading coding performance": "Proto 3.5 Plus \u2014 efficient hybrid model with leading coding performance",
329768
+ "The latest Proto Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)": "The latest Proto Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)",
329753
329769
  // ============================================================================
329754
329770
  // Dialogs - Permissions
329755
329771
  // ============================================================================
@@ -329769,11 +329785,11 @@ var init_en3 = __esm({
329769
329785
  "From project settings": "From project settings",
329770
329786
  "From session": "From session",
329771
329787
  "Project settings (local)": "Project settings (local)",
329772
- "Saved in .qwen/settings.local.json": "Saved in .qwen/settings.local.json",
329788
+ "Saved in .proto/settings.local.json": "Saved in .proto/settings.local.json",
329773
329789
  "Project settings": "Project settings",
329774
- "Checked in at .qwen/settings.json": "Checked in at .qwen/settings.json",
329790
+ "Checked in at .proto/settings.json": "Checked in at .proto/settings.json",
329775
329791
  "User settings": "User settings",
329776
- "Saved in at ~/.qwen/settings.json": "Saved in at ~/.qwen/settings.json",
329792
+ "Saved in at ~/.proto/settings.json": "Saved in at ~/.proto/settings.json",
329777
329793
  "Add a new rule\u2026": "Add a new rule\u2026",
329778
329794
  "Add {{type}} permission rule": "Add {{type}} permission rule",
329779
329795
  "Permission rules are a tool name, optionally followed by a specifier in parentheses.": "Permission rules are a tool name, optionally followed by a specifier in parentheses.",
@@ -329867,7 +329883,7 @@ var init_en3 = __esm({
329867
329883
  "Switch auth type quickly with /auth.": "Switch auth type quickly with /auth.",
329868
329884
  "You can run any shell commands from proto using ! (e.g. !ls).": "You can run any shell commands from proto using ! (e.g. !ls).",
329869
329885
  "Type / to open the command popup; Tab autocompletes slash commands and saved prompts.": "Type / to open the command popup; Tab autocompletes slash commands and saved prompts.",
329870
- "You can resume a previous conversation by running qwen --continue or qwen --resume.": "You can resume a previous conversation by running qwen --continue or qwen --resume.",
329886
+ "You can resume a previous conversation by running proto --continue or proto --resume.": "You can resume a previous conversation by running proto --continue or proto --resume.",
329871
329887
  "You can switch permission mode quickly with Shift+Tab or /approval-mode.": "You can switch permission mode quickly with Shift+Tab or /approval-mode.",
329872
329888
  "You can switch permission mode quickly with Tab or /approval-mode.": "You can switch permission mode quickly with Tab or /approval-mode.",
329873
329889
  "Try /insight to generate personalized insights from your chat history.": "Try /insight to generate personalized insights from your chat history.",
@@ -330190,16 +330206,16 @@ var init_en3 = __esm({
330190
330206
  // ============================================================================
330191
330207
  // Commands - Auth
330192
330208
  // ============================================================================
330193
- "Configure Qwen authentication information with Qwen-OAuth or Alibaba Cloud Coding Plan": "Configure Qwen authentication information with Qwen-OAuth or Alibaba Cloud Coding Plan",
330194
- "Authenticate using Qwen OAuth": "Authenticate using Qwen OAuth",
330209
+ "Configure Proto authentication information with Proto-OAuth or Alibaba Cloud Coding Plan": "Configure Proto authentication information with Proto-OAuth or Alibaba Cloud Coding Plan",
330210
+ "Authenticate using Proto OAuth": "Authenticate using Proto OAuth",
330195
330211
  "Authenticate using Alibaba Cloud Coding Plan": "Authenticate using Alibaba Cloud Coding Plan",
330196
330212
  "Region for Coding Plan (china/global)": "Region for Coding Plan (china/global)",
330197
330213
  "API key for Coding Plan": "API key for Coding Plan",
330198
330214
  "Show current authentication status": "Show current authentication status",
330199
330215
  "Authentication completed successfully.": "Authentication completed successfully.",
330200
- "Starting Qwen OAuth authentication...": "Starting Qwen OAuth authentication...",
330201
- "Successfully authenticated with Qwen OAuth.": "Successfully authenticated with Qwen OAuth.",
330202
- "Failed to authenticate with Qwen OAuth: {{error}}": "Failed to authenticate with Qwen OAuth: {{error}}",
330216
+ "Starting Proto OAuth authentication...": "Starting Proto OAuth authentication...",
330217
+ "Successfully authenticated with Proto OAuth.": "Successfully authenticated with Proto OAuth.",
330218
+ "Failed to authenticate with Proto OAuth: {{error}}": "Failed to authenticate with Proto OAuth: {{error}}",
330203
330219
  "Processing Alibaba Cloud Coding Plan authentication...": "Processing Alibaba Cloud Coding Plan authentication...",
330204
330220
  "Successfully authenticated with Alibaba Cloud Coding Plan.": "Successfully authenticated with Alibaba Cloud Coding Plan.",
330205
330221
  "Failed to authenticate with Coding Plan: {{error}}": "Failed to authenticate with Coding Plan: {{error}}",
@@ -330213,14 +330229,14 @@ var init_en3 = __esm({
330213
330229
  "\n=== Authentication Status ===\n": "\n=== Authentication Status ===\n",
330214
330230
  "\u26A0\uFE0F No authentication method configured.\n": "\u26A0\uFE0F No authentication method configured.\n",
330215
330231
  "Run one of the following commands to get started:\n": "Run one of the following commands to get started:\n",
330216
- " qwen auth qwen-oauth - Authenticate with Qwen OAuth (free tier)": " qwen auth qwen-oauth - Authenticate with Qwen OAuth (free tier)",
330217
- " qwen auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n": " qwen auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n",
330232
+ " proto auth proto-oauth - Authenticate with Proto OAuth (free tier)": " proto auth proto-oauth - Authenticate with Proto OAuth (free tier)",
330233
+ " proto auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n": " proto auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n",
330218
330234
  "Or simply run:": "Or simply run:",
330219
- " qwen auth - Interactive authentication setup\n": " qwen auth - Interactive authentication setup\n",
330220
- "\u2713 Authentication Method: Qwen OAuth": "\u2713 Authentication Method: Qwen OAuth",
330235
+ " proto auth - Interactive authentication setup\n": " proto auth - Interactive authentication setup\n",
330236
+ "\u2713 Authentication Method: Proto OAuth": "\u2713 Authentication Method: Proto OAuth",
330221
330237
  " Type: Free tier": " Type: Free tier",
330222
330238
  " Limit: Up to 1,000 requests/day": " Limit: Up to 1,000 requests/day",
330223
- " Models: Qwen latest models\n": " Models: Qwen latest models\n",
330239
+ " Models: Proto latest models\n": " Models: Proto latest models\n",
330224
330240
  "\u2713 Authentication Method: Alibaba Cloud Coding Plan": "\u2713 Authentication Method: Alibaba Cloud Coding Plan",
330225
330241
  "\u4E2D\u56FD (China) - \u963F\u91CC\u4E91\u767E\u70BC": "\u4E2D\u56FD (China) - \u963F\u91CC\u4E91\u767E\u70BC",
330226
330242
  "Global - Alibaba Cloud": "Global - Alibaba Cloud",
@@ -330230,7 +330246,7 @@ var init_en3 = __esm({
330230
330246
  " Status: API key configured\n": " Status: API key configured\n",
330231
330247
  "\u26A0\uFE0F Authentication Method: Alibaba Cloud Coding Plan (Incomplete)": "\u26A0\uFE0F Authentication Method: Alibaba Cloud Coding Plan (Incomplete)",
330232
330248
  " Issue: API key not found in environment or settings\n": " Issue: API key not found in environment or settings\n",
330233
- " Run `qwen auth coding-plan` to re-configure.\n": " Run `qwen auth coding-plan` to re-configure.\n",
330249
+ " Run `proto auth coding-plan` to re-configure.\n": " Run `proto auth coding-plan` to re-configure.\n",
330234
330250
  "\u2713 Authentication Method: {{type}}": "\u2713 Authentication Method: {{type}}",
330235
330251
  " Status: Configured\n": " Status: Configured\n",
330236
330252
  "Failed to check authentication status: {{error}}": "Failed to check authentication status: {{error}}",
@@ -405606,13 +405622,13 @@ var SETTINGS_SCHEMA = {
405606
405622
  description: "Respect .gitignore files when searching",
405607
405623
  showInDialog: true
405608
405624
  },
405609
- respectQwenIgnore: {
405625
+ respectProtoIgnore: {
405610
405626
  type: "boolean",
405611
- label: "Respect .qwenignore",
405627
+ label: "Respect .protoignore",
405612
405628
  category: "Context",
405613
405629
  requiresRestart: true,
405614
405630
  default: true,
405615
- description: "Respect .qwenignore files when searching",
405631
+ description: "Respect .protoignore files when searching",
405616
405632
  showInDialog: true
405617
405633
  },
405618
405634
  enableRecursiveFileSearch: {
@@ -406839,7 +406855,7 @@ var SETTINGS_DIALOG_ORDER = [
406839
406855
  "general.gitCoAuthor",
406840
406856
  // File Filtering
406841
406857
  "context.fileFiltering.respectGitIgnore",
406842
- "context.fileFiltering.respectQwenIgnore",
406858
+ "context.fileFiltering.respectProtoIgnore",
406843
406859
  // System Settings - rarely changed
406844
406860
  "general.disableAutoUpdate",
406845
406861
  // Privacy
@@ -416089,7 +416105,7 @@ __name(getPackageJson, "getPackageJson");
416089
416105
  // packages/cli/src/utils/version.ts
416090
416106
  async function getCliVersion() {
416091
416107
  const pkgJson = await getPackageJson();
416092
- return "0.26.3";
416108
+ return "0.26.4";
416093
416109
  }
416094
416110
  __name(getCliVersion, "getCliVersion");
416095
416111
 
@@ -423861,7 +423877,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
423861
423877
 
423862
423878
  // packages/cli/src/generated/git-commit.ts
423863
423879
  init_esbuild_shims();
423864
- var GIT_COMMIT_INFO = "e2418fd12";
423880
+ var GIT_COMMIT_INFO = "a9eeb10aa";
423865
423881
 
423866
423882
  // packages/cli/src/utils/systemInfo.ts
423867
423883
  async function getNpmVersion() {
@@ -426122,6 +426138,7 @@ import { randomUUID as randomUUID7 } from "node:crypto";
426122
426138
 
426123
426139
  // packages/cli/src/acp-integration/session/HistoryReplayer.ts
426124
426140
  init_esbuild_shims();
426141
+ init_dist4();
426125
426142
 
426126
426143
  // packages/cli/src/acp-integration/session/emitters/MessageEmitter.ts
426127
426144
  init_esbuild_shims();
@@ -426623,6 +426640,7 @@ var HistoryReplayer = class {
426623
426640
  async replayContent(content, role, timestamp) {
426624
426641
  for (const part of content.parts ?? []) {
426625
426642
  if ("text" in part && part.text) {
426643
+ if (isInternalPart(part)) continue;
426626
426644
  const isThought = part.thought ?? false;
426627
426645
  await this.messageEmitter.emitMessage(
426628
426646
  part.text,
@@ -433039,7 +433057,7 @@ var AtFileProcessor = class {
433039
433057
  try {
433040
433058
  const fileContentParts = await readPathFromWorkspace(pathStr, config2);
433041
433059
  if (fileContentParts.length === 0) {
433042
- const uiMessage = `File '@{${pathStr}}' was ignored by .gitignore or .qwenignore and was not included in the prompt.`;
433060
+ const uiMessage = `File '@{${pathStr}}' was ignored by .gitignore or .protoignore and was not included in the prompt.`;
433043
433061
  context2.ui.addItem(
433044
433062
  { type: "info" /* INFO */, text: uiMessage },
433045
433063
  Date.now()
@@ -434682,6 +434700,7 @@ function partsToContentBlock(parts2) {
434682
434700
  const blocks = [];
434683
434701
  let currentTextBlock = null;
434684
434702
  for (const part of parts2) {
434703
+ if (isInternalPart(part)) continue;
434685
434704
  let textContent2 = null;
434686
434705
  if ("text" in part && typeof part.text === "string") {
434687
434706
  textContent2 = part.text;
@@ -435114,7 +435133,7 @@ async function handleAtCommand({
435114
435133
  const contentLabelsForDisplay = [];
435115
435134
  const ignoredByReason = {
435116
435135
  git: [],
435117
- qwen: [],
435136
+ proto: [],
435118
435137
  both: []
435119
435138
  };
435120
435139
  for (const atPathPart of atPathCommandParts) {
@@ -435137,16 +435156,16 @@ async function handleAtCommand({
435137
435156
  }
435138
435157
  const gitIgnored = respectFileIgnore.respectGitIgnore && fileDiscovery.shouldIgnoreFile(pathName, {
435139
435158
  respectGitIgnore: true,
435140
- respectQwenIgnore: false
435159
+ respectProtoIgnore: false
435141
435160
  });
435142
- const qwenIgnored = respectFileIgnore.respectQwenIgnore && fileDiscovery.shouldIgnoreFile(pathName, {
435161
+ const protoIgnored = respectFileIgnore.respectProtoIgnore && fileDiscovery.shouldIgnoreFile(pathName, {
435143
435162
  respectGitIgnore: false,
435144
- respectQwenIgnore: true
435163
+ respectProtoIgnore: true
435145
435164
  });
435146
- if (gitIgnored || qwenIgnored) {
435147
- const reason = gitIgnored && qwenIgnored ? "both" : gitIgnored ? "git" : "qwen";
435165
+ if (gitIgnored || protoIgnored) {
435166
+ const reason = gitIgnored && protoIgnored ? "both" : gitIgnored ? "git" : "proto";
435148
435167
  ignoredByReason[reason].push(pathName);
435149
- const reasonText = reason === "both" ? "ignored by both git and qwen" : reason === "git" ? "git-ignored" : "qwen-ignored";
435168
+ const reasonText = reason === "both" ? "ignored by both git and proto" : reason === "git" ? "git-ignored" : "proto-ignored";
435150
435169
  onDebugMessage(`Path ${pathName} is ${reasonText} and will be skipped.`);
435151
435170
  continue;
435152
435171
  }
@@ -435211,14 +435230,14 @@ async function handleAtCommand({
435211
435230
  }
435212
435231
  }
435213
435232
  initialQueryText = initialQueryText.trim();
435214
- const totalIgnored = ignoredByReason["git"].length + ignoredByReason["qwen"].length + ignoredByReason["both"].length;
435233
+ const totalIgnored = ignoredByReason["git"].length + ignoredByReason["proto"].length + ignoredByReason["both"].length;
435215
435234
  if (totalIgnored > 0) {
435216
435235
  const messages = [];
435217
435236
  if (ignoredByReason["git"].length) {
435218
435237
  messages.push(`Git-ignored: ${ignoredByReason["git"].join(", ")}`);
435219
435238
  }
435220
- if (ignoredByReason["qwen"].length) {
435221
- messages.push(`Qwen-ignored: ${ignoredByReason["qwen"].join(", ")}`);
435239
+ if (ignoredByReason["proto"].length) {
435240
+ messages.push(`Proto-ignored: ${ignoredByReason["proto"].join(", ")}`);
435222
435241
  }
435223
435242
  if (ignoredByReason["both"].length) {
435224
435243
  messages.push(`Ignored by both: ${ignoredByReason["both"].join(", ")}`);
@@ -472835,7 +472854,7 @@ function useAtCompletion(props) {
472835
472854
  projectRoot: cwd6,
472836
472855
  ignoreDirs: [],
472837
472856
  useGitignore: config2?.getFileFilteringOptions()?.respectGitIgnore ?? true,
472838
- useQwenignore: config2?.getFileFilteringOptions()?.respectQwenIgnore ?? true,
472857
+ useQwenignore: config2?.getFileFilteringOptions()?.respectProtoIgnore ?? true,
472839
472858
  cache: true,
472840
472859
  cacheTtl: 30,
472841
472860
  // 30 seconds
@@ -477349,12 +477368,14 @@ init_dist4();
477349
477368
 
477350
477369
  // packages/cli/src/ui/utils/resumeHistoryUtils.ts
477351
477370
  init_esbuild_shims();
477371
+ init_dist4();
477352
477372
  import * as path135 from "node:path";
477353
477373
  function extractTextFromParts(parts2) {
477354
477374
  if (!parts2) return "";
477355
477375
  const textParts = [];
477356
477376
  for (const part of parts2) {
477357
477377
  if ("text" in part && part.text) {
477378
+ if (isInternalPart(part)) continue;
477358
477379
  if (!("thought" in part && part.thought)) {
477359
477380
  textParts.push(part.text);
477360
477381
  }
@@ -477368,6 +477389,7 @@ function extractThoughtTextFromParts(parts2) {
477368
477389
  const thoughtParts = [];
477369
477390
  for (const part of parts2) {
477370
477391
  if ("text" in part && part.text && "thought" in part && part.thought) {
477392
+ if (isInternalPart(part)) continue;
477371
477393
  thoughtParts.push(part.text);
477372
477394
  }
477373
477395
  }
@@ -482004,7 +482026,7 @@ import { basename as basename31 } from "node:path";
482004
482026
  // packages/cli/src/utils/windowTitle.ts
482005
482027
  init_esbuild_shims();
482006
482028
  function computeWindowTitle(folderName) {
482007
- const title = process.env["CLI_TITLE"] || `Qwen - ${folderName}`;
482029
+ const title = process.env["CLI_TITLE"] || `protoCLI - ${folderName}`;
482008
482030
  return title.replace(
482009
482031
  // eslint-disable-next-line no-control-regex
482010
482032
  /[\x00-\x1F\x7F]/g,
@@ -490707,7 +490729,7 @@ var Session3 = class {
490707
490729
  if (resp.type === StreamEventType.CHUNK && resp.value.candidates && resp.value.candidates.length > 0) {
490708
490730
  const candidate = resp.value.candidates[0];
490709
490731
  for (const part of candidate.content?.parts ?? []) {
490710
- if (!part.text) {
490732
+ if (!part.text || isInternalPart(part)) {
490711
490733
  continue;
490712
490734
  }
490713
490735
  this.messageEmitter.emitMessage(
@@ -490849,7 +490871,7 @@ var Session3 = class {
490849
490871
  if (resp.type === StreamEventType.CHUNK && resp.value.candidates && resp.value.candidates.length > 0) {
490850
490872
  const candidate = resp.value.candidates[0];
490851
490873
  for (const part of candidate.content?.parts ?? []) {
490852
- if (!part.text) continue;
490874
+ if (!part.text || isInternalPart(part)) continue;
490853
490875
  this.messageEmitter.emitMessage(
490854
490876
  part.text,
490855
490877
  "assistant",
@@ -491531,7 +491553,7 @@ var QwenAgent = class {
491531
491553
  async initialize(args2) {
491532
491554
  this.clientCapabilities = args2.clientCapabilities;
491533
491555
  const authMethods = buildAuthMethods();
491534
- const version2 = "0.26.3";
491556
+ const version2 = "0.26.4";
491535
491557
  return {
491536
491558
  protocolVersion: PROTOCOL_VERSION,
491537
491559
  agentInfo: {
@@ -492454,6 +492476,11 @@ main().catch((error40) => {
492454
492476
  *
492455
492477
  * Exports for the prompt suggestion feature.
492456
492478
  */
492479
+ /**
492480
+ * @license
492481
+ * Copyright 2025 Proto
492482
+ * SPDX-License-Identifier: Apache-2.0
492483
+ */
492457
492484
  /**
492458
492485
  * @license
492459
492486
  * Copyright 2026 Google LLC
package/locales/en.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Qwen
3
+ * Copyright 2025 Proto
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
@@ -115,8 +115,8 @@ export default {
115
115
  // ============================================================================
116
116
  // Commands - General
117
117
  // ============================================================================
118
- 'Analyzes the project and creates a tailored QWEN.md file.':
119
- 'Analyzes the project and creates a tailored QWEN.md file.',
118
+ 'Analyzes the project and creates a tailored PROTO.md file.':
119
+ 'Analyzes the project and creates a tailored PROTO.md file.',
120
120
  'List available proto tools. Usage: /tools [desc]':
121
121
  'List available proto tools. Usage: /tools [desc]',
122
122
  'List available skills.': 'List available skills.',
@@ -211,8 +211,8 @@ export default {
211
211
  // ============================================================================
212
212
  // Agents - Creation Wizard
213
213
  // ============================================================================
214
- 'Project Level (.qwen/agents/)': 'Project Level (.qwen/agents/)',
215
- 'User Level (~/.qwen/agents/)': 'User Level (~/.qwen/agents/)',
214
+ 'Project Level (.proto/agents/)': 'Project Level (.proto/agents/)',
215
+ 'User Level (~/.proto/agents/)': 'User Level (~/.proto/agents/)',
216
216
  '✅ Subagent Created Successfully!': '✅ Subagent Created Successfully!',
217
217
  'Subagent "{{name}}" has been saved to {{level}} level.':
218
218
  'Subagent "{{name}}" has been saved to {{level}} level.',
@@ -390,8 +390,8 @@ export default {
390
390
  'Custom Witty Phrases': 'Custom Witty Phrases',
391
391
  'Show Welcome Back Dialog': 'Show Welcome Back Dialog',
392
392
  'Enable User Feedback': 'Enable User Feedback',
393
- 'How is Qwen doing this session? (optional)':
394
- 'How is Qwen doing this session? (optional)',
393
+ 'How is Proto doing this session? (optional)':
394
+ 'How is Proto doing this session? (optional)',
395
395
  Bad: 'Bad',
396
396
  Fine: 'Fine',
397
397
  Good: 'Good',
@@ -414,7 +414,7 @@ export default {
414
414
  'Load Memory From Include Directories':
415
415
  'Load Memory From Include Directories',
416
416
  'Respect .gitignore': 'Respect .gitignore',
417
- 'Respect .qwenignore': 'Respect .qwenignore',
417
+ 'Respect .protoignore': 'Respect .protoignore',
418
418
  'Enable Recursive File Search': 'Enable Recursive File Search',
419
419
  'Disable Fuzzy Search': 'Disable Fuzzy Search',
420
420
  'Interactive Shell (PTY)': 'Interactive Shell (PTY)',
@@ -508,8 +508,8 @@ export default {
508
508
  remote: 'remote',
509
509
  'This extension will add the following commands: {{commands}}.':
510
510
  'This extension will add the following commands: {{commands}}.',
511
- 'This extension will append info to your QWEN.md context using {{fileName}}':
512
- 'This extension will append info to your QWEN.md context using {{fileName}}',
511
+ 'This extension will append info to your PROTO.md context using {{fileName}}':
512
+ 'This extension will append info to your PROTO.md context using {{fileName}}',
513
513
  'This extension will exclude the following core tools: {{tools}}':
514
514
  'This extension will exclude the following core tools: {{tools}}',
515
515
  'This extension will install the following skills:':
@@ -685,8 +685,8 @@ export default {
685
685
  'Exit codes:': 'Exit codes:',
686
686
  'Configured hooks:': 'Configured hooks:',
687
687
  'No hooks configured for this event.': 'No hooks configured for this event.',
688
- 'To add hooks, edit settings.json directly or ask Qwen.':
689
- 'To add hooks, edit settings.json directly or ask Qwen.',
688
+ 'To add hooks, edit settings.json directly or ask Proto.':
689
+ 'To add hooks, edit settings.json directly or ask Proto.',
690
690
  'Enter to select · Esc to go back': 'Enter to select · Esc to go back',
691
691
  // Hooks - Config Detail Step
692
692
  'Hook details': 'Hook details',
@@ -694,8 +694,8 @@ export default {
694
694
  'Extension:': 'Extension:',
695
695
  'Desc:': 'Desc:',
696
696
  'No hook config selected': 'No hook config selected',
697
- 'To modify or remove this hook, edit settings.json directly or ask Qwen to help.':
698
- 'To modify or remove this hook, edit settings.json directly or ask Qwen to help.',
697
+ 'To modify or remove this hook, edit settings.json directly or ask Proto to help.':
698
+ 'To modify or remove this hook, edit settings.json directly or ask Proto to help.',
699
699
  // Hooks - Disabled Step
700
700
  'Hook Configuration - Disabled': 'Hook Configuration - Disabled',
701
701
  'All hooks are currently disabled. You have {{count}} that are not running.':
@@ -707,8 +707,8 @@ export default {
707
707
  'StatusLine will not be displayed': 'StatusLine will not be displayed',
708
708
  'Tool operations will proceed without hook validation':
709
709
  'Tool operations will proceed without hook validation',
710
- 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Qwen Code.':
711
- 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Qwen Code.',
710
+ 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Proto Code.':
711
+ 'To re-enable hooks, remove "disableAllHooks" from settings.json or ask Proto Code.',
712
712
  // Hooks - Source
713
713
  Project: 'Project',
714
714
  User: 'User',
@@ -773,7 +773,7 @@ export default {
773
773
  'show stderr to user only but continue with tool call',
774
774
  'block processing, erase original prompt, and show stderr to user only':
775
775
  'block processing, erase original prompt, and show stderr to user only',
776
- 'stdout shown to Qwen': 'stdout shown to Qwen',
776
+ 'stdout shown to Proto': 'stdout shown to Proto',
777
777
  'show stderr to user only (blocking errors ignored)':
778
778
  'show stderr to user only (blocking errors ignored)',
779
779
  'command completes successfully': 'command completes successfully',
@@ -1032,7 +1032,7 @@ export default {
1032
1032
  servers: 'servers',
1033
1033
  'Add MCP servers to your settings to get started.':
1034
1034
  'Add MCP servers to your settings to get started.',
1035
- 'Run qwen --debug to see error logs': 'Run qwen --debug to see error logs',
1035
+ 'Run proto --debug to see error logs': 'Run proto --debug to see error logs',
1036
1036
 
1037
1037
  // MCP OAuth Authentication
1038
1038
  'OAuth Authentication': 'OAuth Authentication',
@@ -1127,8 +1127,8 @@ export default {
1127
1127
  // ============================================================================
1128
1128
  // Commands - Summary
1129
1129
  // ============================================================================
1130
- 'Generate a project summary and save it to .qwen/PROJECT_SUMMARY.md':
1131
- 'Generate a project summary and save it to .qwen/PROJECT_SUMMARY.md',
1130
+ 'Generate a project summary and save it to .proto/PROJECT_SUMMARY.md':
1131
+ 'Generate a project summary and save it to .proto/PROJECT_SUMMARY.md',
1132
1132
  'No chat client available to generate summary.':
1133
1133
  'No chat client available to generate summary.',
1134
1134
  'Already generating summary, wait for previous request to complete':
@@ -1190,8 +1190,8 @@ export default {
1190
1190
  'The /directory add command is not supported in restrictive sandbox profiles. Please use --include-directories when starting the session instead.':
1191
1191
  'The /directory add command is not supported in restrictive sandbox profiles. Please use --include-directories when starting the session instead.',
1192
1192
  "Error adding '{{path}}': {{error}}": "Error adding '{{path}}': {{error}}",
1193
- 'Successfully added QWEN.md files from the following directories if there are:\n- {{directories}}':
1194
- 'Successfully added QWEN.md files from the following directories if there are:\n- {{directories}}',
1193
+ 'Successfully added PROTO.md files from the following directories if there are:\n- {{directories}}':
1194
+ 'Successfully added PROTO.md files from the following directories if there are:\n- {{directories}}',
1195
1195
  'Error refreshing memory: {{error}}': 'Error refreshing memory: {{error}}',
1196
1196
  'Successfully added directories:\n- {{directories}}':
1197
1197
  'Successfully added directories:\n- {{directories}}',
@@ -1288,9 +1288,9 @@ export default {
1288
1288
  'You must select an auth method to proceed. Press Ctrl+C again to exit.',
1289
1289
  'Terms of Services and Privacy Notice':
1290
1290
  'Terms of Services and Privacy Notice',
1291
- 'Qwen OAuth': 'Qwen OAuth',
1292
- 'Free \u00B7 Up to 1,000 requests/day \u00B7 Qwen latest models':
1293
- 'Free \u00B7 Up to 1,000 requests/day \u00B7 Qwen latest models',
1291
+ 'Proto OAuth': 'Proto OAuth',
1292
+ 'Free \u00B7 Up to 1,000 requests/day \u00B7 Proto latest models':
1293
+ 'Free \u00B7 Up to 1,000 requests/day \u00B7 Proto latest models',
1294
1294
  'Login with QwenChat account to use daily free quota.':
1295
1295
  'Login with QwenChat account to use daily free quota.',
1296
1296
  'Paid \u00B7 Up to 6,000 requests/5 hrs \u00B7 All Alibaba Cloud Coding Plan Models':
@@ -1305,27 +1305,27 @@ export default {
1305
1305
  'Failed to login. Message: {{message}}',
1306
1306
  'Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.':
1307
1307
  'Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.',
1308
- 'Qwen OAuth authentication timed out. Please try again.':
1309
- 'Qwen OAuth authentication timed out. Please try again.',
1310
- 'Qwen OAuth authentication cancelled.':
1311
- 'Qwen OAuth authentication cancelled.',
1312
- 'Qwen OAuth Authentication': 'Qwen OAuth Authentication',
1308
+ 'Proto OAuth authentication timed out. Please try again.':
1309
+ 'Proto OAuth authentication timed out. Please try again.',
1310
+ 'Proto OAuth authentication cancelled.':
1311
+ 'Proto OAuth authentication cancelled.',
1312
+ 'Proto OAuth Authentication': 'Proto OAuth Authentication',
1313
1313
  'Please visit this URL to authorize:': 'Please visit this URL to authorize:',
1314
1314
  'Or scan the QR code below:': 'Or scan the QR code below:',
1315
1315
  'Waiting for authorization': 'Waiting for authorization',
1316
1316
  'Time remaining:': 'Time remaining:',
1317
1317
  '(Press ESC or CTRL+C to cancel)': '(Press ESC or CTRL+C to cancel)',
1318
- 'Qwen OAuth Authentication Timeout': 'Qwen OAuth Authentication Timeout',
1318
+ 'Proto OAuth Authentication Timeout': 'Proto OAuth Authentication Timeout',
1319
1319
  'OAuth token expired (over {{seconds}} seconds). Please select authentication method again.':
1320
1320
  'OAuth token expired (over {{seconds}} seconds). Please select authentication method again.',
1321
1321
  'Press any key to return to authentication type selection.':
1322
1322
  'Press any key to return to authentication type selection.',
1323
- 'Waiting for Qwen OAuth authentication...':
1324
- 'Waiting for Qwen OAuth authentication...',
1325
- 'Note: Your existing API key in settings.json will not be cleared when using Qwen OAuth. You can switch back to OpenAI authentication later if needed.':
1326
- 'Note: Your existing API key in settings.json will not be cleared when using Qwen OAuth. You can switch back to OpenAI authentication later if needed.',
1327
- 'Note: Your existing API key will not be cleared when using Qwen OAuth.':
1328
- 'Note: Your existing API key will not be cleared when using Qwen OAuth.',
1323
+ 'Waiting for Proto OAuth authentication...':
1324
+ 'Waiting for Proto OAuth authentication...',
1325
+ 'Note: Your existing API key in settings.json will not be cleared when using Proto OAuth. You can switch back to OpenAI authentication later if needed.':
1326
+ 'Note: Your existing API key in settings.json will not be cleared when using Proto OAuth. You can switch back to OpenAI authentication later if needed.',
1327
+ 'Note: Your existing API key will not be cleared when using Proto OAuth.':
1328
+ 'Note: Your existing API key will not be cleared when using Proto OAuth.',
1329
1329
  'Authentication timed out. Please try again.':
1330
1330
  'Authentication timed out. Please try again.',
1331
1331
  'Waiting for auth... (Press ESC or CTRL+C to cancel)':
@@ -1386,10 +1386,10 @@ export default {
1386
1386
  unknown: 'unknown',
1387
1387
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}":
1388
1388
  "Failed to switch model to '{{modelId}}'.\n\n{{error}}",
1389
- 'Qwen 3.5 Plus — efficient hybrid model with leading coding performance':
1390
- 'Qwen 3.5 Plus — efficient hybrid model with leading coding performance',
1391
- 'The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)':
1392
- 'The latest Qwen Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)',
1389
+ 'Proto 3.5 Plus — efficient hybrid model with leading coding performance':
1390
+ 'Proto 3.5 Plus — efficient hybrid model with leading coding performance',
1391
+ 'The latest Proto Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)':
1392
+ 'The latest Proto Vision model from Alibaba Cloud ModelStudio (version: qwen3-vl-plus-2025-09-23)',
1393
1393
 
1394
1394
  // ============================================================================
1395
1395
  // Dialogs - Permissions
@@ -1415,11 +1415,11 @@ export default {
1415
1415
  'From project settings': 'From project settings',
1416
1416
  'From session': 'From session',
1417
1417
  'Project settings (local)': 'Project settings (local)',
1418
- 'Saved in .qwen/settings.local.json': 'Saved in .qwen/settings.local.json',
1418
+ 'Saved in .proto/settings.local.json': 'Saved in .proto/settings.local.json',
1419
1419
  'Project settings': 'Project settings',
1420
- 'Checked in at .qwen/settings.json': 'Checked in at .qwen/settings.json',
1420
+ 'Checked in at .proto/settings.json': 'Checked in at .proto/settings.json',
1421
1421
  'User settings': 'User settings',
1422
- 'Saved in at ~/.qwen/settings.json': 'Saved in at ~/.qwen/settings.json',
1422
+ 'Saved in at ~/.proto/settings.json': 'Saved in at ~/.proto/settings.json',
1423
1423
  'Add a new rule…': 'Add a new rule…',
1424
1424
  'Add {{type}} permission rule': 'Add {{type}} permission rule',
1425
1425
  'Permission rules are a tool name, optionally followed by a specifier in parentheses.':
@@ -1539,8 +1539,8 @@ export default {
1539
1539
  'You can run any shell commands from proto using ! (e.g. !ls).',
1540
1540
  'Type / to open the command popup; Tab autocompletes slash commands and saved prompts.':
1541
1541
  'Type / to open the command popup; Tab autocompletes slash commands and saved prompts.',
1542
- 'You can resume a previous conversation by running qwen --continue or qwen --resume.':
1543
- 'You can resume a previous conversation by running qwen --continue or qwen --resume.',
1542
+ 'You can resume a previous conversation by running proto --continue or proto --resume.':
1543
+ 'You can resume a previous conversation by running proto --continue or proto --resume.',
1544
1544
  'You can switch permission mode quickly with Shift+Tab or /approval-mode.':
1545
1545
  'You can switch permission mode quickly with Shift+Tab or /approval-mode.',
1546
1546
  'You can switch permission mode quickly with Tab or /approval-mode.':
@@ -1934,9 +1934,9 @@ export default {
1934
1934
  // ============================================================================
1935
1935
  // Commands - Auth
1936
1936
  // ============================================================================
1937
- 'Configure Qwen authentication information with Qwen-OAuth or Alibaba Cloud Coding Plan':
1938
- 'Configure Qwen authentication information with Qwen-OAuth or Alibaba Cloud Coding Plan',
1939
- 'Authenticate using Qwen OAuth': 'Authenticate using Qwen OAuth',
1937
+ 'Configure Proto authentication information with Proto-OAuth or Alibaba Cloud Coding Plan':
1938
+ 'Configure Proto authentication information with Proto-OAuth or Alibaba Cloud Coding Plan',
1939
+ 'Authenticate using Proto OAuth': 'Authenticate using Proto OAuth',
1940
1940
  'Authenticate using Alibaba Cloud Coding Plan':
1941
1941
  'Authenticate using Alibaba Cloud Coding Plan',
1942
1942
  'Region for Coding Plan (china/global)':
@@ -1945,12 +1945,12 @@ export default {
1945
1945
  'Show current authentication status': 'Show current authentication status',
1946
1946
  'Authentication completed successfully.':
1947
1947
  'Authentication completed successfully.',
1948
- 'Starting Qwen OAuth authentication...':
1949
- 'Starting Qwen OAuth authentication...',
1950
- 'Successfully authenticated with Qwen OAuth.':
1951
- 'Successfully authenticated with Qwen OAuth.',
1952
- 'Failed to authenticate with Qwen OAuth: {{error}}':
1953
- 'Failed to authenticate with Qwen OAuth: {{error}}',
1948
+ 'Starting Proto OAuth authentication...':
1949
+ 'Starting Proto OAuth authentication...',
1950
+ 'Successfully authenticated with Proto OAuth.':
1951
+ 'Successfully authenticated with Proto OAuth.',
1952
+ 'Failed to authenticate with Proto OAuth: {{error}}':
1953
+ 'Failed to authenticate with Proto OAuth: {{error}}',
1954
1954
  'Processing Alibaba Cloud Coding Plan authentication...':
1955
1955
  'Processing Alibaba Cloud Coding Plan authentication...',
1956
1956
  'Successfully authenticated with Alibaba Cloud Coding Plan.':
@@ -1969,17 +1969,18 @@ export default {
1969
1969
  '⚠️ No authentication method configured.\n',
1970
1970
  'Run one of the following commands to get started:\n':
1971
1971
  'Run one of the following commands to get started:\n',
1972
- ' qwen auth qwen-oauth - Authenticate with Qwen OAuth (free tier)':
1973
- ' qwen auth qwen-oauth - Authenticate with Qwen OAuth (free tier)',
1974
- ' qwen auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n':
1975
- ' qwen auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n',
1972
+ ' proto auth proto-oauth - Authenticate with Proto OAuth (free tier)':
1973
+ ' proto auth proto-oauth - Authenticate with Proto OAuth (free tier)',
1974
+ ' proto auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n':
1975
+ ' proto auth coding-plan - Authenticate with Alibaba Cloud Coding Plan\n',
1976
1976
  'Or simply run:': 'Or simply run:',
1977
- ' qwen auth - Interactive authentication setup\n':
1978
- ' qwen auth - Interactive authentication setup\n',
1979
- '✓ Authentication Method: Qwen OAuth': '✓ Authentication Method: Qwen OAuth',
1977
+ ' proto auth - Interactive authentication setup\n':
1978
+ ' proto auth - Interactive authentication setup\n',
1979
+ '✓ Authentication Method: Proto OAuth':
1980
+ '✓ Authentication Method: Proto OAuth',
1980
1981
  ' Type: Free tier': ' Type: Free tier',
1981
1982
  ' Limit: Up to 1,000 requests/day': ' Limit: Up to 1,000 requests/day',
1982
- ' Models: Qwen latest models\n': ' Models: Qwen latest models\n',
1983
+ ' Models: Proto latest models\n': ' Models: Proto latest models\n',
1983
1984
  '✓ Authentication Method: Alibaba Cloud Coding Plan':
1984
1985
  '✓ Authentication Method: Alibaba Cloud Coding Plan',
1985
1986
  '中国 (China) - 阿里云百炼': '中国 (China) - 阿里云百炼',
@@ -1992,8 +1993,8 @@ export default {
1992
1993
  '⚠️ Authentication Method: Alibaba Cloud Coding Plan (Incomplete)',
1993
1994
  ' Issue: API key not found in environment or settings\n':
1994
1995
  ' Issue: API key not found in environment or settings\n',
1995
- ' Run `qwen auth coding-plan` to re-configure.\n':
1996
- ' Run `qwen auth coding-plan` to re-configure.\n',
1996
+ ' Run `proto auth coding-plan` to re-configure.\n':
1997
+ ' Run `proto auth coding-plan` to re-configure.\n',
1997
1998
  '✓ Authentication Method: {{type}}': '✓ Authentication Method: {{type}}',
1998
1999
  ' Status: Configured\n': ' Status: Configured\n',
1999
2000
  'Failed to check authentication status: {{error}}':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protolabsai/proto",
3
- "version": "0.26.3",
3
+ "version": "0.26.4",
4
4
  "description": "proto - AI-powered coding agent",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "bundled"
22
22
  ],
23
23
  "config": {
24
- "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.26.3"
24
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.26.4"
25
25
  },
26
26
  "dependencies": {},
27
27
  "optionalDependencies": {