@didim365/agent-cli-core 0.1.1 → 0.1.3

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 (1081) hide show
  1. package/dist/src/core/apiKeyCredentialStorage.d.ts +23 -3
  2. package/dist/src/core/apiKeyCredentialStorage.js +56 -16
  3. package/dist/src/core/apiKeyCredentialStorage.js.map +1 -1
  4. package/dist/src/generated/git-commit.d.ts +1 -1
  5. package/dist/src/generated/git-commit.js +1 -1
  6. package/package.json +6 -2
  7. package/dist/docs/00_project/ai_adapter/01-overview.md +0 -172
  8. package/dist/docs/00_project/ai_adapter/02-architecture.md +0 -448
  9. package/dist/docs/00_project/ai_adapter/03-technical-design.md +0 -1470
  10. package/dist/docs/00_project/ai_adapter/04-integration-design.md +0 -1934
  11. package/dist/docs/00_project/ai_adapter/05-implementation-plan.md +0 -336
  12. package/dist/docs/00_project/ai_adapter/06-didiaistudio-plan.md +0 -559
  13. package/dist/docs/00_project/ai_adapter/README.md +0 -145
  14. package/dist/docs/00_project/ai_adapter/agent_service_openapi.json +0 -1
  15. package/dist/docs/00_project/ai_adapter/didimStudi-AISTUDIO /341/204/213/341/205/254/341/204/207/341/205/256 /341/204/211/341/205/245/341/204/207/341/205/265/341/204/211/341/205/263 /341/204/221/341/205/263/341/206/257/341/204/205/341/205/251/341/204/213/341/205/256 /341/204/213/341/205/247/341/206/253/341/204/200/341/205/247/341/206/257 /341/204/207/341/205/241/341/206/274/341/204/211/341/205/265/341/206/250-100226-093925.pdf +0 -0
  16. package/dist/docs/00_project/ai_adapter/event-mapping-matrix.md +0 -148
  17. package/dist/docs/00_project/ai_adapter/migration-plan.md +0 -205
  18. package/dist/docs/00_project/ai_adapter/template/00_vibecoding_workflow.md +0 -627
  19. package/dist/docs/00_project/ai_adapter/template/01_todolist_performance_template.md +0 -436
  20. package/dist/docs/00_project/ai_adapter/template/02_code_review_template.md +0 -248
  21. package/dist/docs/00_project/ai_adapter/template/03_work_result_report_template.md +0 -133
  22. package/dist/docs/00_project/ai_adapter/template/100_Python_Performance_Guide.md +0 -472
  23. package/dist/docs/00_project/ai_adapter/template/99_TDD_plan.md +0 -123
  24. package/dist/docs/00_project/ai_adapter/todolist/00_master_implementation_plan.md +0 -433
  25. package/dist/docs/00_project/ai_adapter/todolist/phase1_foundation_todolist.md +0 -726
  26. package/dist/docs/00_project/ai_adapter/todolist/phase2_core_refactoring_todolist.md +0 -974
  27. package/dist/docs/00_project/ai_adapter/todolist/phase3_handoff.md +0 -203
  28. package/dist/docs/00_project/ai_adapter/todolist/phase3_provider_extension_todolist.md +0 -1382
  29. package/dist/docs/00_project/ai_adapter/utility-migration.md +0 -237
  30. package/dist/docs/00_project/ai_adapter/working_history/.gitkeep +0 -0
  31. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.0_/354/275/224/353/223/234/354/235/270/353/262/244/355/206/240/353/246/254_20260201.md +0 -197
  32. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.1_/355/203/200/354/236/205/354/204/244/352/263/204_20260201.md +0 -185
  33. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.2_Adapter/354/235/270/355/224/204/353/235/274_20260203.md +0 -378
  34. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.3_Provider/354/204/240/355/203/235_20260206.md +0 -269
  35. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.4_/354/234/240/355/213/270/353/246/254/355/213/260/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260206.md +0 -86
  36. package/dist/docs/00_project/ai_adapter/working_history/Phase2_ETC_/354/227/260/352/270/260/354/236/221/354/227/205/354/240/225/353/246/254_20260208.md +0 -157
  37. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.0_/353/224/224/353/240/211/355/206/240/353/246/254/354/236/254/352/265/254/354/204/261_20260207.md +0 -107
  38. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.1_ContentGenerator/354/235/270/355/204/260/355/216/230/354/235/264/354/212/244/354/236/254/354/240/225/354/235/230_20260207.md +0 -630
  39. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.2_EventMapper/352/265/254/355/230/204_20260207.md +0 -372
  40. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.3_GeminiAdapter/352/265/254/355/230/204_20260208.md +0 -205
  41. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.4_ModelConfigService/355/230/270/355/231/230/353/240/210/354/235/264/354/226/264_20260208.md +0 -275
  42. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.5_/354/234/240/355/213/270/353/246/254/355/213/260/353/240/210/354/235/264/354/226/264/353/246/254/355/214/251/355/206/240/353/247/201_20260208.md +0 -239
  43. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.6_/353/235/274/354/232/260/355/214/205/353/240/210/354/235/264/354/226/264/355/203/200/354/236/205/353/217/205/353/246/275/355/231/224_20260208.md +0 -228
  44. package/dist/docs/00_project/ai_adapter/working_history/Phase3_ETC_/352/270/260/353/263/270/354/273/250/355/205/215/354/212/244/355/212/270/355/214/214/354/235/274/353/252/205AGENTS/354/240/204/355/231/230_20260211.md +0 -470
  45. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.1_Gemini/354/240/204/354/232/251/355/214/214/354/235/274/353/254/274/353/246/254/354/240/201/354/235/264/353/217/231_20260209.md +0 -271
  46. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.2_messageInspectors/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260209.md +0 -330
  47. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.3_/355/205/224/353/240/210/353/251/224/355/212/270/353/246/254Agent/353/217/205/353/246/275/355/231/224_20260209.md +0 -251
  48. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.4_/353/263/200/355/231/230/353/270/214/353/246/277/354/247/200/354/240/225/353/246/254_20260209.md +0 -136
  49. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.5_/353/237/260/355/203/200/354/236/204/354/213/244/355/226/211/352/262/275/353/241/234/354/227/260/352/262/260_20260209.md +0 -232
  50. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.0_Claude/354/202/254/354/240/204/354/244/200/353/271/204_20260209.md +0 -191
  51. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.1_ClaudeAdapter/352/265/254/355/230/204_20260209.md +0 -225
  52. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.2_ClaudeConverter/352/263/240/353/217/204/355/231/224_20260209.md +0 -171
  53. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.3_ClaudeStreamError/352/263/240/353/217/204/355/231/224_20260209.md +0 -198
  54. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.4_ClaudeErrorMapping_20260209.md +0 -98
  55. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.2.A_OpenAIAdapterCore_20260210.md +0 -264
  56. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.2.B_OpenAIStreamConverter_20260210.md +0 -204
  57. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.3.2_/353/252/250/353/215/270/355/205/234/355/224/214/353/246/277/355/233/205/353/263/264/354/231/204_20260211.md +0 -106
  58. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.3_OpenAICompatibleAdapter_20260211.md +0 -251
  59. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.2_E2E/355/205/214/354/212/244/355/212/270/354/213/234/353/202/230/353/246/254/354/230/244_20260210.md +0 -264
  60. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.3_/354/204/261/353/212/245/355/232/214/352/267/200/355/205/214/354/212/244/355/212/270_20260211.md +0 -176
  61. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.5_/354/225/210/354/240/225/355/231/224/354/236/221/354/227/205_20260211.md +0 -204
  62. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.A_CLI/355/206/265/355/225/251_3Provider/355/206/265/355/225/251/355/205/214/354/212/244/355/212/270_20260210.md +0 -316
  63. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.A_UI/354/203/201/355/203/234/353/260/224/354/210/230/354/240/225_20260210.md +0 -262
  64. package/dist/docs/00_project/ai_adapter/working_history/phase2_tradeoff_EventType/354/240/204/355/231/230_20260208.md +0 -286
  65. package/dist/docs/00_project/white_labeling/template/00_vibecoding_workflow.md +0 -627
  66. package/dist/docs/00_project/white_labeling/template/01_todolist_performance_template.md +0 -400
  67. package/dist/docs/00_project/white_labeling/template/02_code_review_template.md +0 -248
  68. package/dist/docs/00_project/white_labeling/template/03_work_result_report_template.md +0 -133
  69. package/dist/docs/00_project/white_labeling/template/100_Python_Performance_Guide.md +0 -472
  70. package/dist/docs/00_project/white_labeling/template/99_TDD_plan.md +0 -123
  71. package/dist/docs/00_project/white_labeling/todolist/Phase_CLI/355/214/250/355/202/244/354/247/200/353/252/205/353/263/200/352/262/275_todolist.md +0 -431
  72. package/dist/docs/00_project/white_labeling/working_history/Phase_CLI/355/214/250/355/202/244/354/247/200/353/252/205/353/263/200/352/262/275_20260214.md +0 -238
  73. package/dist/docs/00_project/white_labeling//354/225/261/352/265/254/354/241/260.md +0 -310
  74. package/dist/docs/CONTRIBUTING.md +0 -554
  75. package/dist/docs/ai_adapter/01-overview.md +0 -155
  76. package/dist/docs/ai_adapter/02-architecture.md +0 -452
  77. package/dist/docs/ai_adapter/03-technical-design.md +0 -1470
  78. package/dist/docs/ai_adapter/04-integration-design.md +0 -1904
  79. package/dist/docs/ai_adapter/05-implementation-plan.md +0 -312
  80. package/dist/docs/ai_adapter/06-didiaistudio-plan.md +0 -559
  81. package/dist/docs/ai_adapter/README.md +0 -118
  82. package/dist/docs/ai_adapter/agent_service_openapi.json +0 -1
  83. package/dist/docs/ai_adapter/didimStudi-AISTUDIO /341/204/213/341/205/254/341/204/207/341/205/256 /341/204/211/341/205/245/341/204/207/341/205/265/341/204/211/341/205/263 /341/204/221/341/205/263/341/206/257/341/204/205/341/205/251/341/204/213/341/205/256 /341/204/213/341/205/247/341/206/253/341/204/200/341/205/247/341/206/257 /341/204/207/341/205/241/341/206/274/341/204/211/341/205/265/341/206/250-100226-093925.pdf +0 -0
  84. package/dist/docs/ai_adapter/event-mapping-matrix.md +0 -140
  85. package/dist/docs/ai_adapter/migration-plan.md +0 -205
  86. package/dist/docs/ai_adapter/template/00_vibecoding_workflow.md +0 -636
  87. package/dist/docs/ai_adapter/template/01_todolist_performance_template.md +0 -372
  88. package/dist/docs/ai_adapter/template/02_code_review_template.md +0 -220
  89. package/dist/docs/ai_adapter/template/03_work_result_report_template.md +0 -120
  90. package/dist/docs/ai_adapter/template/100_Python_Performance_Guide.md +0 -453
  91. package/dist/docs/ai_adapter/template/99_TDD_plan.md +0 -111
  92. package/dist/docs/ai_adapter/todolist/00_master_implementation_plan.md +0 -433
  93. package/dist/docs/ai_adapter/todolist/phase1_foundation_todolist.md +0 -726
  94. package/dist/docs/ai_adapter/todolist/phase2_core_refactoring_todolist.md +0 -974
  95. package/dist/docs/ai_adapter/todolist/phase3_handoff.md +0 -203
  96. package/dist/docs/ai_adapter/todolist/phase3_provider_extension_todolist.md +0 -1382
  97. package/dist/docs/ai_adapter/utility-migration.md +0 -237
  98. package/dist/docs/ai_adapter/working_history/.gitkeep +0 -0
  99. package/dist/docs/ai_adapter/working_history/Phase1_M1.0_/354/275/224/353/223/234/354/235/270/353/262/244/355/206/240/353/246/254_20260201.md +0 -185
  100. package/dist/docs/ai_adapter/working_history/Phase1_M1.1_/355/203/200/354/236/205/354/204/244/352/263/204_20260201.md +0 -185
  101. package/dist/docs/ai_adapter/working_history/Phase1_M1.2_Adapter/354/235/270/355/224/204/353/235/274_20260203.md +0 -378
  102. package/dist/docs/ai_adapter/working_history/Phase1_M1.3_Provider/354/204/240/355/203/235_20260206.md +0 -269
  103. package/dist/docs/ai_adapter/working_history/Phase1_M1.4_/354/234/240/355/213/270/353/246/254/355/213/260/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260206.md +0 -86
  104. package/dist/docs/ai_adapter/working_history/Phase2_ETC_/354/227/260/352/270/260/354/236/221/354/227/205/354/240/225/353/246/254_20260208.md +0 -157
  105. package/dist/docs/ai_adapter/working_history/Phase2_M2.0_/353/224/224/353/240/211/355/206/240/353/246/254/354/236/254/352/265/254/354/204/261_20260207.md +0 -107
  106. package/dist/docs/ai_adapter/working_history/Phase2_M2.1_ContentGenerator/354/235/270/355/204/260/355/216/230/354/235/264/354/212/244/354/236/254/354/240/225/354/235/230_20260207.md +0 -630
  107. package/dist/docs/ai_adapter/working_history/Phase2_M2.2_EventMapper/352/265/254/355/230/204_20260207.md +0 -372
  108. package/dist/docs/ai_adapter/working_history/Phase2_M2.3_GeminiAdapter/352/265/254/355/230/204_20260208.md +0 -205
  109. package/dist/docs/ai_adapter/working_history/Phase2_M2.4_ModelConfigService/355/230/270/355/231/230/353/240/210/354/235/264/354/226/264_20260208.md +0 -275
  110. package/dist/docs/ai_adapter/working_history/Phase2_M2.5_/354/234/240/355/213/270/353/246/254/355/213/260/353/240/210/354/235/264/354/226/264/353/246/254/355/214/251/355/206/240/353/247/201_20260208.md +0 -239
  111. package/dist/docs/ai_adapter/working_history/Phase2_M2.6_/353/235/274/354/232/260/355/214/205/353/240/210/354/235/264/354/226/264/355/203/200/354/236/205/353/217/205/353/246/275/355/231/224_20260208.md +0 -228
  112. package/dist/docs/ai_adapter/working_history/Phase3_ETC_/352/270/260/353/263/270/354/273/250/355/205/215/354/212/244/355/212/270/355/214/214/354/235/274/353/252/205AGENTS/354/240/204/355/231/230_20260211.md +0 -367
  113. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.1_Gemini/354/240/204/354/232/251/355/214/214/354/235/274/353/254/274/353/246/254/354/240/201/354/235/264/353/217/231_20260209.md +0 -271
  114. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.2_messageInspectors/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260209.md +0 -330
  115. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.3_/355/205/224/353/240/210/353/251/224/355/212/270/353/246/254Agent/353/217/205/353/246/275/355/231/224_20260209.md +0 -251
  116. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.4_/353/263/200/355/231/230/353/270/214/353/246/277/354/247/200/354/240/225/353/246/254_20260209.md +0 -136
  117. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.5_/353/237/260/355/203/200/354/236/204/354/213/244/355/226/211/352/262/275/353/241/234/354/227/260/352/262/260_20260209.md +0 -232
  118. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.0_Claude/354/202/254/354/240/204/354/244/200/353/271/204_20260209.md +0 -191
  119. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.1_ClaudeAdapter/352/265/254/355/230/204_20260209.md +0 -225
  120. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.2_ClaudeConverter/352/263/240/353/217/204/355/231/224_20260209.md +0 -171
  121. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.3_ClaudeStreamError/352/263/240/353/217/204/355/231/224_20260209.md +0 -198
  122. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.4_ClaudeErrorMapping_20260209.md +0 -98
  123. package/dist/docs/ai_adapter/working_history/Phase3_M3.2.A_OpenAIAdapterCore_20260210.md +0 -264
  124. package/dist/docs/ai_adapter/working_history/Phase3_M3.2.B_OpenAIStreamConverter_20260210.md +0 -204
  125. package/dist/docs/ai_adapter/working_history/Phase3_M3.3.2_/353/252/250/353/215/270/355/205/234/355/224/214/353/246/277/355/233/205/353/263/264/354/231/204_20260211.md +0 -106
  126. package/dist/docs/ai_adapter/working_history/Phase3_M3.3_OpenAICompatibleAdapter_20260211.md +0 -251
  127. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.2_E2E/355/205/214/354/212/244/355/212/270/354/213/234/353/202/230/353/246/254/354/230/244_20260210.md +0 -264
  128. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.3_/354/204/261/353/212/245/355/232/214/352/267/200/355/205/214/354/212/244/355/212/270_20260211.md +0 -176
  129. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.5_/354/225/210/354/240/225/355/231/224/354/236/221/354/227/205_20260211.md +0 -204
  130. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.A_CLI/355/206/265/355/225/251_3Provider/355/206/265/355/225/251/355/205/214/354/212/244/355/212/270_20260210.md +0 -316
  131. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.A_UI/354/203/201/355/203/234/353/260/224/354/210/230/354/240/225_20260210.md +0 -262
  132. package/dist/docs/ai_adapter/working_history/phase2_tradeoff_EventType/354/240/204/355/231/230_20260208.md +0 -286
  133. package/dist/docs/api/index.md +0 -5
  134. package/dist/docs/api/providers.md +0 -56
  135. package/dist/docs/architecture.md +0 -80
  136. package/dist/docs/assets/connected_devtools.png +0 -0
  137. package/dist/docs/assets/gemini-screenshot.png +0 -0
  138. package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
  139. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  140. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  141. package/dist/docs/assets/release_patch.png +0 -0
  142. package/dist/docs/assets/theme-ansi-light.png +0 -0
  143. package/dist/docs/assets/theme-ansi.png +0 -0
  144. package/dist/docs/assets/theme-atom-one.png +0 -0
  145. package/dist/docs/assets/theme-ayu-light.png +0 -0
  146. package/dist/docs/assets/theme-ayu.png +0 -0
  147. package/dist/docs/assets/theme-custom.png +0 -0
  148. package/dist/docs/assets/theme-default-light.png +0 -0
  149. package/dist/docs/assets/theme-default.png +0 -0
  150. package/dist/docs/assets/theme-dracula.png +0 -0
  151. package/dist/docs/assets/theme-github-light.png +0 -0
  152. package/dist/docs/assets/theme-github.png +0 -0
  153. package/dist/docs/assets/theme-google-light.png +0 -0
  154. package/dist/docs/assets/theme-xcode-light.png +0 -0
  155. package/dist/docs/change_model/model_command_multi_provider_plan.md +0 -221
  156. package/dist/docs/change_model/model_command_multi_provider_todolist.md +0 -206
  157. package/dist/docs/changelogs/index.md +0 -726
  158. package/dist/docs/changelogs/latest.md +0 -370
  159. package/dist/docs/changelogs/preview.md +0 -332
  160. package/dist/docs/cli/authentication.md +0 -3
  161. package/dist/docs/cli/checkpointing.md +0 -94
  162. package/dist/docs/cli/commands.md +0 -375
  163. package/dist/docs/cli/custom-commands.md +0 -315
  164. package/dist/docs/cli/enterprise.md +0 -565
  165. package/dist/docs/cli/gemini-ignore.md +0 -71
  166. package/dist/docs/cli/gemini-md.md +0 -108
  167. package/dist/docs/cli/generation-settings.md +0 -210
  168. package/dist/docs/cli/headless.md +0 -388
  169. package/dist/docs/cli/index.md +0 -65
  170. package/dist/docs/cli/keyboard-shortcuts.md +0 -129
  171. package/dist/docs/cli/model-routing.md +0 -42
  172. package/dist/docs/cli/model.md +0 -62
  173. package/dist/docs/cli/sandbox.md +0 -171
  174. package/dist/docs/cli/session-management.md +0 -158
  175. package/dist/docs/cli/settings.md +0 -130
  176. package/dist/docs/cli/skills.md +0 -188
  177. package/dist/docs/cli/system-prompt.md +0 -125
  178. package/dist/docs/cli/telemetry.md +0 -826
  179. package/dist/docs/cli/themes.md +0 -235
  180. package/dist/docs/cli/token-caching.md +0 -20
  181. package/dist/docs/cli/trusted-folders.md +0 -95
  182. package/dist/docs/cli/tutorials/skills-getting-started.md +0 -124
  183. package/dist/docs/cli/tutorials.md +0 -87
  184. package/dist/docs/cli/uninstall.md +0 -65
  185. package/dist/docs/configuration.md +0 -108
  186. package/dist/docs/core/index.md +0 -105
  187. package/dist/docs/core/long-term-memory-design.md +0 -254
  188. package/dist/docs/core/long-term-memory-proposal.md +0 -112
  189. package/dist/docs/core/memport.md +0 -246
  190. package/dist/docs/core/policy-engine.md +0 -300
  191. package/dist/docs/core/tools-api.md +0 -131
  192. package/dist/docs/examples/proxy-script.md +0 -83
  193. package/dist/docs/extensions/best-practices.md +0 -139
  194. package/dist/docs/extensions/index.md +0 -44
  195. package/dist/docs/extensions/reference.md +0 -312
  196. package/dist/docs/extensions/releasing.md +0 -183
  197. package/dist/docs/extensions/writing-extensions.md +0 -283
  198. package/dist/docs/faq.md +0 -154
  199. package/dist/docs/get-started/authentication.md +0 -321
  200. package/dist/docs/get-started/configuration-v1.md +0 -888
  201. package/dist/docs/get-started/configuration.md +0 -1567
  202. package/dist/docs/get-started/examples.md +0 -219
  203. package/dist/docs/get-started/gemini-3.md +0 -101
  204. package/dist/docs/get-started/index.md +0 -71
  205. package/dist/docs/get-started/installation.md +0 -141
  206. package/dist/docs/hooks/best-practices.md +0 -677
  207. package/dist/docs/hooks/index.md +0 -178
  208. package/dist/docs/hooks/reference.md +0 -322
  209. package/dist/docs/hooks/writing-hooks.md +0 -450
  210. package/dist/docs/ide-integration/ide-companion-spec.md +0 -267
  211. package/dist/docs/ide-integration/index.md +0 -202
  212. package/dist/docs/index.md +0 -153
  213. package/dist/docs/integration-tests.md +0 -211
  214. package/dist/docs/issue-and-pr-automation.md +0 -134
  215. package/dist/docs/local-development.md +0 -128
  216. package/dist/docs/mermaid/context.mmd +0 -103
  217. package/dist/docs/mermaid/render-path.mmd +0 -64
  218. package/dist/docs/migration.md +0 -78
  219. package/dist/docs/npm.md +0 -62
  220. package/dist/docs/providers.md +0 -136
  221. package/dist/docs/quota-and-pricing.md +0 -158
  222. package/dist/docs/release-confidence.md +0 -164
  223. package/dist/docs/releases.md +0 -539
  224. package/dist/docs/sidebar.json +0 -140
  225. package/dist/docs/tools/file-system.md +0 -217
  226. package/dist/docs/tools/index.md +0 -98
  227. package/dist/docs/tools/mcp-server.md +0 -1068
  228. package/dist/docs/tools/memory.md +0 -54
  229. package/dist/docs/tools/shell.md +0 -260
  230. package/dist/docs/tools/todos.md +0 -57
  231. package/dist/docs/tools/web-fetch.md +0 -59
  232. package/dist/docs/tools/web-search.md +0 -42
  233. package/dist/docs/tos-privacy.md +0 -96
  234. package/dist/docs/troubleshooting.md +0 -173
  235. package/dist/src/agents/a2a-client-manager.test.d.ts +0 -6
  236. package/dist/src/agents/a2a-client-manager.test.js +0 -220
  237. package/dist/src/agents/a2a-client-manager.test.js.map +0 -1
  238. package/dist/src/agents/a2aUtils.test.d.ts +0 -6
  239. package/dist/src/agents/a2aUtils.test.js +0 -147
  240. package/dist/src/agents/a2aUtils.test.js.map +0 -1
  241. package/dist/src/agents/acknowledgedAgents.test.d.ts +0 -6
  242. package/dist/src/agents/acknowledgedAgents.test.js +0 -70
  243. package/dist/src/agents/acknowledgedAgents.test.js.map +0 -1
  244. package/dist/src/agents/agent-scheduler.test.d.ts +0 -6
  245. package/dist/src/agents/agent-scheduler.test.js +0 -56
  246. package/dist/src/agents/agent-scheduler.test.js.map +0 -1
  247. package/dist/src/agents/agentLoader.test.d.ts +0 -6
  248. package/dist/src/agents/agentLoader.test.js +0 -304
  249. package/dist/src/agents/agentLoader.test.js.map +0 -1
  250. package/dist/src/agents/cli-help-agent.test.d.ts +0 -6
  251. package/dist/src/agents/cli-help-agent.test.js +0 -67
  252. package/dist/src/agents/cli-help-agent.test.js.map +0 -1
  253. package/dist/src/agents/codebase-investigator.test.d.ts +0 -6
  254. package/dist/src/agents/codebase-investigator.test.js +0 -42
  255. package/dist/src/agents/codebase-investigator.test.js.map +0 -1
  256. package/dist/src/agents/generalist-agent.test.d.ts +0 -6
  257. package/dist/src/agents/generalist-agent.test.js +0 -31
  258. package/dist/src/agents/generalist-agent.test.js.map +0 -1
  259. package/dist/src/agents/local-executor.test.d.ts +0 -6
  260. package/dist/src/agents/local-executor.test.js +0 -1577
  261. package/dist/src/agents/local-executor.test.js.map +0 -1
  262. package/dist/src/agents/local-invocation.test.d.ts +0 -6
  263. package/dist/src/agents/local-invocation.test.js +0 -228
  264. package/dist/src/agents/local-invocation.test.js.map +0 -1
  265. package/dist/src/agents/registry.test.d.ts +0 -6
  266. package/dist/src/agents/registry.test.js +0 -773
  267. package/dist/src/agents/registry.test.js.map +0 -1
  268. package/dist/src/agents/registry_acknowledgement.test.d.ts +0 -6
  269. package/dist/src/agents/registry_acknowledgement.test.js +0 -130
  270. package/dist/src/agents/registry_acknowledgement.test.js.map +0 -1
  271. package/dist/src/agents/remote-invocation.test.d.ts +0 -6
  272. package/dist/src/agents/remote-invocation.test.js +0 -213
  273. package/dist/src/agents/remote-invocation.test.js.map +0 -1
  274. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +0 -6
  275. package/dist/src/agents/subagent-tool-wrapper.test.js +0 -109
  276. package/dist/src/agents/subagent-tool-wrapper.test.js.map +0 -1
  277. package/dist/src/agents/utils.test.d.ts +0 -6
  278. package/dist/src/agents/utils.test.js +0 -87
  279. package/dist/src/agents/utils.test.js.map +0 -1
  280. package/dist/src/availability/fallbackIntegration.test.d.ts +0 -6
  281. package/dist/src/availability/fallbackIntegration.test.js +0 -58
  282. package/dist/src/availability/fallbackIntegration.test.js.map +0 -1
  283. package/dist/src/availability/modelAvailabilityService.test.d.ts +0 -6
  284. package/dist/src/availability/modelAvailabilityService.test.js +0 -140
  285. package/dist/src/availability/modelAvailabilityService.test.js.map +0 -1
  286. package/dist/src/availability/policyCatalog.test.d.ts +0 -6
  287. package/dist/src/availability/policyCatalog.test.js +0 -70
  288. package/dist/src/availability/policyCatalog.test.js.map +0 -1
  289. package/dist/src/availability/policyHelpers.test.d.ts +0 -6
  290. package/dist/src/availability/policyHelpers.test.js +0 -220
  291. package/dist/src/availability/policyHelpers.test.js.map +0 -1
  292. package/dist/src/code_assist/admin/admin_controls.test.d.ts +0 -6
  293. package/dist/src/code_assist/admin/admin_controls.test.js +0 -200
  294. package/dist/src/code_assist/admin/admin_controls.test.js.map +0 -1
  295. package/dist/src/code_assist/codeAssist.test.d.ts +0 -6
  296. package/dist/src/code_assist/codeAssist.test.js +0 -102
  297. package/dist/src/code_assist/codeAssist.test.js.map +0 -1
  298. package/dist/src/code_assist/converter.test.d.ts +0 -6
  299. package/dist/src/code_assist/converter.test.js +0 -391
  300. package/dist/src/code_assist/converter.test.js.map +0 -1
  301. package/dist/src/code_assist/experiments/client_metadata.test.d.ts +0 -6
  302. package/dist/src/code_assist/experiments/client_metadata.test.js +0 -96
  303. package/dist/src/code_assist/experiments/client_metadata.test.js.map +0 -1
  304. package/dist/src/code_assist/experiments/experiments.test.d.ts +0 -6
  305. package/dist/src/code_assist/experiments/experiments.test.js +0 -93
  306. package/dist/src/code_assist/experiments/experiments.test.js.map +0 -1
  307. package/dist/src/code_assist/experiments/experiments_local.test.d.ts +0 -6
  308. package/dist/src/code_assist/experiments/experiments_local.test.js +0 -115
  309. package/dist/src/code_assist/experiments/experiments_local.test.js.map +0 -1
  310. package/dist/src/code_assist/oauth-credential-storage.test.d.ts +0 -6
  311. package/dist/src/code_assist/oauth-credential-storage.test.js +0 -198
  312. package/dist/src/code_assist/oauth-credential-storage.test.js.map +0 -1
  313. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  314. package/dist/src/code_assist/oauth2.test.js +0 -1065
  315. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  316. package/dist/src/code_assist/server.test.d.ts +0 -6
  317. package/dist/src/code_assist/server.test.js +0 -453
  318. package/dist/src/code_assist/server.test.js.map +0 -1
  319. package/dist/src/code_assist/setup.test.d.ts +0 -6
  320. package/dist/src/code_assist/setup.test.js +0 -517
  321. package/dist/src/code_assist/setup.test.js.map +0 -1
  322. package/dist/src/code_assist/telemetry.test.d.ts +0 -6
  323. package/dist/src/code_assist/telemetry.test.js +0 -301
  324. package/dist/src/code_assist/telemetry.test.js.map +0 -1
  325. package/dist/src/commands/extensions.test.d.ts +0 -6
  326. package/dist/src/commands/extensions.test.js +0 -19
  327. package/dist/src/commands/extensions.test.js.map +0 -1
  328. package/dist/src/commands/init.test.d.ts +0 -6
  329. package/dist/src/commands/init.test.js +0 -25
  330. package/dist/src/commands/init.test.js.map +0 -1
  331. package/dist/src/commands/memory.test.d.ts +0 -6
  332. package/dist/src/commands/memory.test.js +0 -182
  333. package/dist/src/commands/memory.test.js.map +0 -1
  334. package/dist/src/commands/restore.test.d.ts +0 -6
  335. package/dist/src/commands/restore.test.js +0 -137
  336. package/dist/src/commands/restore.test.js.map +0 -1
  337. package/dist/src/config/config.test.d.ts +0 -6
  338. package/dist/src/config/config.test.js +0 -1811
  339. package/dist/src/config/config.test.js.map +0 -1
  340. package/dist/src/config/flashFallback.test.d.ts +0 -6
  341. package/dist/src/config/flashFallback.test.js +0 -63
  342. package/dist/src/config/flashFallback.test.js.map +0 -1
  343. package/dist/src/config/models.test.d.ts +0 -6
  344. package/dist/src/config/models.test.js +0 -146
  345. package/dist/src/config/models.test.js.map +0 -1
  346. package/dist/src/config/storage.test.d.ts +0 -6
  347. package/dist/src/config/storage.test.js +0 -115
  348. package/dist/src/config/storage.test.js.map +0 -1
  349. package/dist/src/confirmation-bus/message-bus.test.d.ts +0 -6
  350. package/dist/src/confirmation-bus/message-bus.test.js +0 -170
  351. package/dist/src/confirmation-bus/message-bus.test.js.map +0 -1
  352. package/dist/src/core/apiKeyCredentialStorage.test.d.ts +0 -6
  353. package/dist/src/core/apiKeyCredentialStorage.test.js +0 -71
  354. package/dist/src/core/apiKeyCredentialStorage.test.js.map +0 -1
  355. package/dist/src/core/baseLlmClient.test.d.ts +0 -6
  356. package/dist/src/core/baseLlmClient.test.js +0 -569
  357. package/dist/src/core/baseLlmClient.test.js.map +0 -1
  358. package/dist/src/core/baseLlmClient_new_types.test.d.ts +0 -1
  359. package/dist/src/core/baseLlmClient_new_types.test.js +0 -387
  360. package/dist/src/core/baseLlmClient_new_types.test.js.map +0 -1
  361. package/dist/src/core/client.test.d.ts +0 -6
  362. package/dist/src/core/client.test.js +0 -2654
  363. package/dist/src/core/client.test.js.map +0 -1
  364. package/dist/src/core/contentGenerator.multiProvider.test.d.ts +0 -6
  365. package/dist/src/core/contentGenerator.multiProvider.test.js +0 -314
  366. package/dist/src/core/contentGenerator.multiProvider.test.js.map +0 -1
  367. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  368. package/dist/src/core/contentGenerator.test.js +0 -299
  369. package/dist/src/core/contentGenerator.test.js.map +0 -1
  370. package/dist/src/core/contentGenerator_new_types.test.d.ts +0 -6
  371. package/dist/src/core/contentGenerator_new_types.test.js +0 -292
  372. package/dist/src/core/contentGenerator_new_types.test.js.map +0 -1
  373. package/dist/src/core/coreToolHookTriggers.test.d.ts +0 -6
  374. package/dist/src/core/coreToolHookTriggers.test.js +0 -159
  375. package/dist/src/core/coreToolHookTriggers.test.js.map +0 -1
  376. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  377. package/dist/src/core/coreToolScheduler.test.js +0 -1684
  378. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  379. package/dist/src/core/fakeContentGenerator.test.d.ts +0 -6
  380. package/dist/src/core/fakeContentGenerator.test.js +0 -127
  381. package/dist/src/core/fakeContentGenerator.test.js.map +0 -1
  382. package/dist/src/core/geminiChat.test.d.ts +0 -6
  383. package/dist/src/core/geminiChat.test.js +0 -1773
  384. package/dist/src/core/geminiChat.test.js.map +0 -1
  385. package/dist/src/core/geminiChat_network_retry.test.d.ts +0 -6
  386. package/dist/src/core/geminiChat_network_retry.test.js +0 -201
  387. package/dist/src/core/geminiChat_network_retry.test.js.map +0 -1
  388. package/dist/src/core/logger.test.d.ts +0 -6
  389. package/dist/src/core/logger.test.js +0 -550
  390. package/dist/src/core/logger.test.js.map +0 -1
  391. package/dist/src/core/loggingContentGenerator.test.d.ts +0 -6
  392. package/dist/src/core/loggingContentGenerator.test.js +0 -221
  393. package/dist/src/core/loggingContentGenerator.test.js.map +0 -1
  394. package/dist/src/core/prompts-substitution.test.d.ts +0 -6
  395. package/dist/src/core/prompts-substitution.test.js +0 -101
  396. package/dist/src/core/prompts-substitution.test.js.map +0 -1
  397. package/dist/src/core/prompts.test.d.ts +0 -6
  398. package/dist/src/core/prompts.test.js +0 -391
  399. package/dist/src/core/prompts.test.js.map +0 -1
  400. package/dist/src/core/recordingContentGenerator.test.d.ts +0 -6
  401. package/dist/src/core/recordingContentGenerator.test.js +0 -101
  402. package/dist/src/core/recordingContentGenerator.test.js.map +0 -1
  403. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  404. package/dist/src/core/tokenLimits.test.js +0 -30
  405. package/dist/src/core/tokenLimits.test.js.map +0 -1
  406. package/dist/src/core/turn.test.d.ts +0 -6
  407. package/dist/src/core/turn.test.js +0 -739
  408. package/dist/src/core/turn.test.js.map +0 -1
  409. package/dist/src/fallback/handler.test.d.ts +0 -6
  410. package/dist/src/fallback/handler.test.js +0 -242
  411. package/dist/src/fallback/handler.test.js.map +0 -1
  412. package/dist/src/hooks/hookAggregator.test.d.ts +0 -6
  413. package/dist/src/hooks/hookAggregator.test.js +0 -387
  414. package/dist/src/hooks/hookAggregator.test.js.map +0 -1
  415. package/dist/src/hooks/hookEventHandler.test.d.ts +0 -6
  416. package/dist/src/hooks/hookEventHandler.test.js +0 -603
  417. package/dist/src/hooks/hookEventHandler.test.js.map +0 -1
  418. package/dist/src/hooks/hookPlanner.test.d.ts +0 -6
  419. package/dist/src/hooks/hookPlanner.test.js +0 -315
  420. package/dist/src/hooks/hookPlanner.test.js.map +0 -1
  421. package/dist/src/hooks/hookRegistry.test.d.ts +0 -6
  422. package/dist/src/hooks/hookRegistry.test.js +0 -529
  423. package/dist/src/hooks/hookRegistry.test.js.map +0 -1
  424. package/dist/src/hooks/hookRunner.test.d.ts +0 -6
  425. package/dist/src/hooks/hookRunner.test.js +0 -606
  426. package/dist/src/hooks/hookRunner.test.js.map +0 -1
  427. package/dist/src/hooks/hookSystem.test.d.ts +0 -6
  428. package/dist/src/hooks/hookSystem.test.js +0 -330
  429. package/dist/src/hooks/hookSystem.test.js.map +0 -1
  430. package/dist/src/hooks/hookSystem_new_types.test.d.ts +0 -6
  431. package/dist/src/hooks/hookSystem_new_types.test.js +0 -243
  432. package/dist/src/hooks/hookSystem_new_types.test.js.map +0 -1
  433. package/dist/src/hooks/hookTranslator.test.d.ts +0 -6
  434. package/dist/src/hooks/hookTranslator.test.js +0 -192
  435. package/dist/src/hooks/hookTranslator.test.js.map +0 -1
  436. package/dist/src/hooks/trustedHooks.test.d.ts +0 -6
  437. package/dist/src/hooks/trustedHooks.test.js +0 -154
  438. package/dist/src/hooks/trustedHooks.test.js.map +0 -1
  439. package/dist/src/hooks/types.test.d.ts +0 -6
  440. package/dist/src/hooks/types.test.js +0 -278
  441. package/dist/src/hooks/types.test.js.map +0 -1
  442. package/dist/src/ide/detect-ide.test.d.ts +0 -6
  443. package/dist/src/ide/detect-ide.test.js +0 -195
  444. package/dist/src/ide/detect-ide.test.js.map +0 -1
  445. package/dist/src/ide/ide-client.test.d.ts +0 -6
  446. package/dist/src/ide/ide-client.test.js +0 -753
  447. package/dist/src/ide/ide-client.test.js.map +0 -1
  448. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  449. package/dist/src/ide/ide-installer.test.js +0 -193
  450. package/dist/src/ide/ide-installer.test.js.map +0 -1
  451. package/dist/src/ide/ideContext.test.d.ts +0 -6
  452. package/dist/src/ide/ideContext.test.js +0 -393
  453. package/dist/src/ide/ideContext.test.js.map +0 -1
  454. package/dist/src/ide/process-utils.test.d.ts +0 -6
  455. package/dist/src/ide/process-utils.test.js +0 -151
  456. package/dist/src/ide/process-utils.test.js.map +0 -1
  457. package/dist/src/index.test.d.ts +0 -6
  458. package/dist/src/index.test.js +0 -53
  459. package/dist/src/index.test.js.map +0 -1
  460. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  461. package/dist/src/mcp/google-auth-provider.test.js +0 -167
  462. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  463. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  464. package/dist/src/mcp/oauth-provider.test.js +0 -1355
  465. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  466. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  467. package/dist/src/mcp/oauth-token-storage.test.js +0 -305
  468. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  469. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  470. package/dist/src/mcp/oauth-utils.test.js +0 -289
  471. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  472. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +0 -6
  473. package/dist/src/mcp/sa-impersonation-provider.test.js +0 -117
  474. package/dist/src/mcp/sa-impersonation-provider.test.js.map +0 -1
  475. package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +0 -6
  476. package/dist/src/mcp/token-storage/base-token-storage.test.js +0 -151
  477. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +0 -1
  478. package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +0 -6
  479. package/dist/src/mcp/token-storage/file-token-storage.test.js +0 -238
  480. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +0 -1
  481. package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +0 -6
  482. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +0 -193
  483. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +0 -1
  484. package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +0 -6
  485. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +0 -305
  486. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +0 -1
  487. package/dist/src/output/json-formatter.test.d.ts +0 -6
  488. package/dist/src/output/json-formatter.test.js +0 -294
  489. package/dist/src/output/json-formatter.test.js.map +0 -1
  490. package/dist/src/output/stream-json-formatter.test.d.ts +0 -6
  491. package/dist/src/output/stream-json-formatter.test.js +0 -477
  492. package/dist/src/output/stream-json-formatter.test.js.map +0 -1
  493. package/dist/src/policy/config.test.d.ts +0 -6
  494. package/dist/src/policy/config.test.js +0 -598
  495. package/dist/src/policy/config.test.js.map +0 -1
  496. package/dist/src/policy/persistence.test.d.ts +0 -6
  497. package/dist/src/policy/persistence.test.js +0 -154
  498. package/dist/src/policy/persistence.test.js.map +0 -1
  499. package/dist/src/policy/policy-engine.test.d.ts +0 -6
  500. package/dist/src/policy/policy-engine.test.js +0 -1299
  501. package/dist/src/policy/policy-engine.test.js.map +0 -1
  502. package/dist/src/policy/policy-updater.test.d.ts +0 -6
  503. package/dist/src/policy/policy-updater.test.js +0 -116
  504. package/dist/src/policy/policy-updater.test.js.map +0 -1
  505. package/dist/src/policy/shell-safety.test.d.ts +0 -6
  506. package/dist/src/policy/shell-safety.test.js +0 -438
  507. package/dist/src/policy/shell-safety.test.js.map +0 -1
  508. package/dist/src/policy/toml-loader.test.d.ts +0 -6
  509. package/dist/src/policy/toml-loader.test.js +0 -409
  510. package/dist/src/policy/toml-loader.test.js.map +0 -1
  511. package/dist/src/policy/utils.test.d.ts +0 -6
  512. package/dist/src/policy/utils.test.js +0 -92
  513. package/dist/src/policy/utils.test.js.map +0 -1
  514. package/dist/src/prompts/mcp-prompts.test.d.ts +0 -6
  515. package/dist/src/prompts/mcp-prompts.test.js +0 -39
  516. package/dist/src/prompts/mcp-prompts.test.js.map +0 -1
  517. package/dist/src/prompts/prompt-registry.test.d.ts +0 -6
  518. package/dist/src/prompts/prompt-registry.test.js +0 -96
  519. package/dist/src/prompts/prompt-registry.test.js.map +0 -1
  520. package/dist/src/providers/__tests__/bundleSize.test.d.ts +0 -6
  521. package/dist/src/providers/__tests__/bundleSize.test.js +0 -75
  522. package/dist/src/providers/__tests__/bundleSize.test.js.map +0 -1
  523. package/dist/src/providers/__tests__/errorHandling.integration.test.d.ts +0 -6
  524. package/dist/src/providers/__tests__/errorHandling.integration.test.js +0 -339
  525. package/dist/src/providers/__tests__/errorHandling.integration.test.js.map +0 -1
  526. package/dist/src/providers/__tests__/multiProvider.integration.test.d.ts +0 -6
  527. package/dist/src/providers/__tests__/multiProvider.integration.test.js +0 -419
  528. package/dist/src/providers/__tests__/multiProvider.integration.test.js.map +0 -1
  529. package/dist/src/providers/__tests__/performance.test.d.ts +0 -6
  530. package/dist/src/providers/__tests__/performance.test.js +0 -270
  531. package/dist/src/providers/__tests__/performance.test.js.map +0 -1
  532. package/dist/src/providers/__tests__/providerConfigIntegration.test.d.ts +0 -6
  533. package/dist/src/providers/__tests__/providerConfigIntegration.test.js +0 -245
  534. package/dist/src/providers/__tests__/providerConfigIntegration.test.js.map +0 -1
  535. package/dist/src/providers/baseAdapter.test.d.ts +0 -1
  536. package/dist/src/providers/baseAdapter.test.js +0 -142
  537. package/dist/src/providers/baseAdapter.test.js.map +0 -1
  538. package/dist/src/providers/claude/adapter.test.d.ts +0 -6
  539. package/dist/src/providers/claude/adapter.test.js +0 -628
  540. package/dist/src/providers/claude/adapter.test.js.map +0 -1
  541. package/dist/src/providers/claude/bootstrap.test.d.ts +0 -6
  542. package/dist/src/providers/claude/bootstrap.test.js +0 -74
  543. package/dist/src/providers/claude/bootstrap.test.js.map +0 -1
  544. package/dist/src/providers/claude/converter.test.d.ts +0 -6
  545. package/dist/src/providers/claude/converter.test.js +0 -1002
  546. package/dist/src/providers/claude/converter.test.js.map +0 -1
  547. package/dist/src/providers/claude/exports.test.d.ts +0 -6
  548. package/dist/src/providers/claude/exports.test.js +0 -40
  549. package/dist/src/providers/claude/exports.test.js.map +0 -1
  550. package/dist/src/providers/configAdapter.test.d.ts +0 -1
  551. package/dist/src/providers/configAdapter.test.js +0 -150
  552. package/dist/src/providers/configAdapter.test.js.map +0 -1
  553. package/dist/src/providers/contentResolver.test.d.ts +0 -1
  554. package/dist/src/providers/contentResolver.test.js +0 -89
  555. package/dist/src/providers/contentResolver.test.js.map +0 -1
  556. package/dist/src/providers/factory.test.d.ts +0 -1
  557. package/dist/src/providers/factory.test.js +0 -151
  558. package/dist/src/providers/factory.test.js.map +0 -1
  559. package/dist/src/providers/gemini/adapterBridge.test.d.ts +0 -6
  560. package/dist/src/providers/gemini/adapterBridge.test.js +0 -164
  561. package/dist/src/providers/gemini/adapterBridge.test.js.map +0 -1
  562. package/dist/src/providers/gemini/bootstrap.test.d.ts +0 -6
  563. package/dist/src/providers/gemini/bootstrap.test.js +0 -72
  564. package/dist/src/providers/gemini/bootstrap.test.js.map +0 -1
  565. package/dist/src/providers/gemini/configConverter.test.d.ts +0 -6
  566. package/dist/src/providers/gemini/configConverter.test.js +0 -218
  567. package/dist/src/providers/gemini/configConverter.test.js.map +0 -1
  568. package/dist/src/providers/gemini/errorClassifier.test.d.ts +0 -6
  569. package/dist/src/providers/gemini/errorClassifier.test.js +0 -83
  570. package/dist/src/providers/gemini/errorClassifier.test.js.map +0 -1
  571. package/dist/src/providers/gemini/eventMapper.test.d.ts +0 -6
  572. package/dist/src/providers/gemini/eventMapper.test.js +0 -502
  573. package/dist/src/providers/gemini/eventMapper.test.js.map +0 -1
  574. package/dist/src/providers/gemini/exports.test.d.ts +0 -6
  575. package/dist/src/providers/gemini/exports.test.js +0 -90
  576. package/dist/src/providers/gemini/exports.test.js.map +0 -1
  577. package/dist/src/providers/gemini/featureFlag.test.d.ts +0 -6
  578. package/dist/src/providers/gemini/featureFlag.test.js +0 -139
  579. package/dist/src/providers/gemini/featureFlag.test.js.map +0 -1
  580. package/dist/src/providers/gemini/geminiAdapter.test.d.ts +0 -6
  581. package/dist/src/providers/gemini/geminiAdapter.test.js +0 -279
  582. package/dist/src/providers/gemini/geminiAdapter.test.js.map +0 -1
  583. package/dist/src/providers/gemini/geminiConverter.test.d.ts +0 -6
  584. package/dist/src/providers/gemini/geminiConverter.test.js +0 -474
  585. package/dist/src/providers/gemini/geminiConverter.test.js.map +0 -1
  586. package/dist/src/providers/gemini/geminiParity.test.d.ts +0 -6
  587. package/dist/src/providers/gemini/geminiParity.test.js +0 -754
  588. package/dist/src/providers/gemini/geminiParity.test.js.map +0 -1
  589. package/dist/src/providers/gemini/geminiStream.test.d.ts +0 -6
  590. package/dist/src/providers/gemini/geminiStream.test.js +0 -391
  591. package/dist/src/providers/gemini/geminiStream.test.js.map +0 -1
  592. package/dist/src/providers/gemini/historyBuilder.test.d.ts +0 -6
  593. package/dist/src/providers/gemini/historyBuilder.test.js +0 -207
  594. package/dist/src/providers/gemini/historyBuilder.test.js.map +0 -1
  595. package/dist/src/providers/gemini/requestBuilder.test.d.ts +0 -6
  596. package/dist/src/providers/gemini/requestBuilder.test.js +0 -358
  597. package/dist/src/providers/gemini/requestBuilder.test.js.map +0 -1
  598. package/dist/src/providers/gemini/streamConverter.test.d.ts +0 -6
  599. package/dist/src/providers/gemini/streamConverter.test.js +0 -131
  600. package/dist/src/providers/gemini/streamConverter.test.js.map +0 -1
  601. package/dist/src/providers/modelSpec.test.d.ts +0 -1
  602. package/dist/src/providers/modelSpec.test.js +0 -119
  603. package/dist/src/providers/modelSpec.test.js.map +0 -1
  604. package/dist/src/providers/openai/adapter.test.d.ts +0 -6
  605. package/dist/src/providers/openai/adapter.test.js +0 -274
  606. package/dist/src/providers/openai/adapter.test.js.map +0 -1
  607. package/dist/src/providers/openai/bootstrap.test.d.ts +0 -6
  608. package/dist/src/providers/openai/bootstrap.test.js +0 -76
  609. package/dist/src/providers/openai/bootstrap.test.js.map +0 -1
  610. package/dist/src/providers/openai/converter.test.d.ts +0 -6
  611. package/dist/src/providers/openai/converter.test.js +0 -1133
  612. package/dist/src/providers/openai/converter.test.js.map +0 -1
  613. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.d.ts +0 -6
  614. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.js +0 -356
  615. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.js.map +0 -1
  616. package/dist/src/providers/openai-compatible/adapter.test.d.ts +0 -6
  617. package/dist/src/providers/openai-compatible/adapter.test.js +0 -240
  618. package/dist/src/providers/openai-compatible/adapter.test.js.map +0 -1
  619. package/dist/src/providers/openai-compatible/bootstrap.test.d.ts +0 -6
  620. package/dist/src/providers/openai-compatible/bootstrap.test.js +0 -145
  621. package/dist/src/providers/openai-compatible/bootstrap.test.js.map +0 -1
  622. package/dist/src/providers/openai-compatible/promptBuilder.test.d.ts +0 -6
  623. package/dist/src/providers/openai-compatible/promptBuilder.test.js +0 -154
  624. package/dist/src/providers/openai-compatible/promptBuilder.test.js.map +0 -1
  625. package/dist/src/providers/providerConfig.test.d.ts +0 -1
  626. package/dist/src/providers/providerConfig.test.js +0 -145
  627. package/dist/src/providers/providerConfig.test.js.map +0 -1
  628. package/dist/src/providers/providerConfigIntegration.test.d.ts +0 -6
  629. package/dist/src/providers/providerConfigIntegration.test.js +0 -187
  630. package/dist/src/providers/providerConfigIntegration.test.js.map +0 -1
  631. package/dist/src/providers/providerSelector.test.d.ts +0 -1
  632. package/dist/src/providers/providerSelector.test.js +0 -199
  633. package/dist/src/providers/providerSelector.test.js.map +0 -1
  634. package/dist/src/providers/providerTypes.test.d.ts +0 -1
  635. package/dist/src/providers/providerTypes.test.js +0 -95
  636. package/dist/src/providers/providerTypes.test.js.map +0 -1
  637. package/dist/src/providers/registry.test.d.ts +0 -1
  638. package/dist/src/providers/registry.test.js +0 -207
  639. package/dist/src/providers/registry.test.js.map +0 -1
  640. package/dist/src/providers/streamAssembler.test.d.ts +0 -1
  641. package/dist/src/providers/streamAssembler.test.js +0 -247
  642. package/dist/src/providers/streamAssembler.test.js.map +0 -1
  643. package/dist/src/providers/telemetryBridge.test.d.ts +0 -6
  644. package/dist/src/providers/telemetryBridge.test.js +0 -235
  645. package/dist/src/providers/telemetryBridge.test.js.map +0 -1
  646. package/dist/src/providers/types.test.d.ts +0 -6
  647. package/dist/src/providers/types.test.js +0 -253
  648. package/dist/src/providers/types.test.js.map +0 -1
  649. package/dist/src/resources/resource-registry.test.d.ts +0 -6
  650. package/dist/src/resources/resource-registry.test.js +0 -54
  651. package/dist/src/resources/resource-registry.test.js.map +0 -1
  652. package/dist/src/routing/modelRouterService.test.d.ts +0 -6
  653. package/dist/src/routing/modelRouterService.test.js +0 -106
  654. package/dist/src/routing/modelRouterService.test.js.map +0 -1
  655. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +0 -6
  656. package/dist/src/routing/strategies/classifierStrategy.test.js +0 -249
  657. package/dist/src/routing/strategies/classifierStrategy.test.js.map +0 -1
  658. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +0 -6
  659. package/dist/src/routing/strategies/compositeStrategy.test.js +0 -124
  660. package/dist/src/routing/strategies/compositeStrategy.test.js.map +0 -1
  661. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +0 -6
  662. package/dist/src/routing/strategies/defaultStrategy.test.js +0 -102
  663. package/dist/src/routing/strategies/defaultStrategy.test.js.map +0 -1
  664. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +0 -6
  665. package/dist/src/routing/strategies/fallbackStrategy.test.js +0 -96
  666. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +0 -1
  667. package/dist/src/routing/strategies/numericalClassifierStrategy.test.d.ts +0 -6
  668. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +0 -367
  669. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +0 -1
  670. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +0 -6
  671. package/dist/src/routing/strategies/overrideStrategy.test.js +0 -59
  672. package/dist/src/routing/strategies/overrideStrategy.test.js.map +0 -1
  673. package/dist/src/safety/built-in.test.d.ts +0 -6
  674. package/dist/src/safety/built-in.test.js +0 -199
  675. package/dist/src/safety/built-in.test.js.map +0 -1
  676. package/dist/src/safety/checker-runner.test.d.ts +0 -6
  677. package/dist/src/safety/checker-runner.test.js +0 -238
  678. package/dist/src/safety/checker-runner.test.js.map +0 -1
  679. package/dist/src/safety/context-builder.test.d.ts +0 -6
  680. package/dist/src/safety/context-builder.test.js +0 -49
  681. package/dist/src/safety/context-builder.test.js.map +0 -1
  682. package/dist/src/safety/registry.test.d.ts +0 -6
  683. package/dist/src/safety/registry.test.js +0 -31
  684. package/dist/src/safety/registry.test.js.map +0 -1
  685. package/dist/src/scheduler/confirmation.test.d.ts +0 -6
  686. package/dist/src/scheduler/confirmation.test.js +0 -325
  687. package/dist/src/scheduler/confirmation.test.js.map +0 -1
  688. package/dist/src/scheduler/policy.test.d.ts +0 -6
  689. package/dist/src/scheduler/policy.test.js +0 -299
  690. package/dist/src/scheduler/policy.test.js.map +0 -1
  691. package/dist/src/scheduler/scheduler.test.d.ts +0 -6
  692. package/dist/src/scheduler/scheduler.test.js +0 -822
  693. package/dist/src/scheduler/scheduler.test.js.map +0 -1
  694. package/dist/src/scheduler/state-manager.test.d.ts +0 -6
  695. package/dist/src/scheduler/state-manager.test.js +0 -429
  696. package/dist/src/scheduler/state-manager.test.js.map +0 -1
  697. package/dist/src/scheduler/tool-executor.test.d.ts +0 -6
  698. package/dist/src/scheduler/tool-executor.test.js +0 -232
  699. package/dist/src/scheduler/tool-executor.test.js.map +0 -1
  700. package/dist/src/scheduler/tool-modifier.test.d.ts +0 -6
  701. package/dist/src/scheduler/tool-modifier.test.js +0 -159
  702. package/dist/src/scheduler/tool-modifier.test.js.map +0 -1
  703. package/dist/src/services/chatCompressionService.test.d.ts +0 -6
  704. package/dist/src/services/chatCompressionService.test.js +0 -573
  705. package/dist/src/services/chatCompressionService.test.js.map +0 -1
  706. package/dist/src/services/chatRecordingService.test.d.ts +0 -6
  707. package/dist/src/services/chatRecordingService.test.js +0 -486
  708. package/dist/src/services/chatRecordingService.test.js.map +0 -1
  709. package/dist/src/services/contextManager.test.d.ts +0 -6
  710. package/dist/src/services/contextManager.test.js +0 -104
  711. package/dist/src/services/contextManager.test.js.map +0 -1
  712. package/dist/src/services/environmentSanitization.test.d.ts +0 -6
  713. package/dist/src/services/environmentSanitization.test.js +0 -284
  714. package/dist/src/services/environmentSanitization.test.js.map +0 -1
  715. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  716. package/dist/src/services/fileDiscoveryService.test.js +0 -223
  717. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  718. package/dist/src/services/fileSystemService.test.d.ts +0 -6
  719. package/dist/src/services/fileSystemService.test.js +0 -41
  720. package/dist/src/services/fileSystemService.test.js.map +0 -1
  721. package/dist/src/services/gitService.test.d.ts +0 -6
  722. package/dist/src/services/gitService.test.js +0 -264
  723. package/dist/src/services/gitService.test.js.map +0 -1
  724. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  725. package/dist/src/services/loopDetectionService.test.js +0 -881
  726. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  727. package/dist/src/services/modelConfig.golden.test.d.ts +0 -6
  728. package/dist/src/services/modelConfig.golden.test.js +0 -74
  729. package/dist/src/services/modelConfig.golden.test.js.map +0 -1
  730. package/dist/src/services/modelConfig.integration.test.d.ts +0 -6
  731. package/dist/src/services/modelConfig.integration.test.js +0 -247
  732. package/dist/src/services/modelConfig.integration.test.js.map +0 -1
  733. package/dist/src/services/modelConfigBridge.test.d.ts +0 -6
  734. package/dist/src/services/modelConfigBridge.test.js +0 -410
  735. package/dist/src/services/modelConfigBridge.test.js.map +0 -1
  736. package/dist/src/services/modelConfigService.test.d.ts +0 -6
  737. package/dist/src/services/modelConfigService.test.js +0 -868
  738. package/dist/src/services/modelConfigService.test.js.map +0 -1
  739. package/dist/src/services/sessionSummaryService.test.d.ts +0 -6
  740. package/dist/src/services/sessionSummaryService.test.js +0 -785
  741. package/dist/src/services/sessionSummaryService.test.js.map +0 -1
  742. package/dist/src/services/sessionSummaryUtils.test.d.ts +0 -6
  743. package/dist/src/services/sessionSummaryUtils.test.js +0 -160
  744. package/dist/src/services/sessionSummaryUtils.test.js.map +0 -1
  745. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  746. package/dist/src/services/shellExecutionService.test.js +0 -1080
  747. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  748. package/dist/src/skills/skillLoader.test.d.ts +0 -6
  749. package/dist/src/skills/skillLoader.test.js +0 -185
  750. package/dist/src/skills/skillLoader.test.js.map +0 -1
  751. package/dist/src/skills/skillManager.test.d.ts +0 -6
  752. package/dist/src/skills/skillManager.test.js +0 -297
  753. package/dist/src/skills/skillManager.test.js.map +0 -1
  754. package/dist/src/telemetry/activity-detector.test.d.ts +0 -6
  755. package/dist/src/telemetry/activity-detector.test.js +0 -136
  756. package/dist/src/telemetry/activity-detector.test.js.map +0 -1
  757. package/dist/src/telemetry/activity-monitor.test.d.ts +0 -6
  758. package/dist/src/telemetry/activity-monitor.test.js +0 -251
  759. package/dist/src/telemetry/activity-monitor.test.js.map +0 -1
  760. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -19
  761. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -964
  762. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  763. package/dist/src/telemetry/config.test.d.ts +0 -6
  764. package/dist/src/telemetry/config.test.js +0 -149
  765. package/dist/src/telemetry/config.test.js.map +0 -1
  766. package/dist/src/telemetry/gcp-exporters.test.d.ts +0 -6
  767. package/dist/src/telemetry/gcp-exporters.test.js +0 -318
  768. package/dist/src/telemetry/gcp-exporters.test.js.map +0 -1
  769. package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +0 -6
  770. package/dist/src/telemetry/high-water-mark-tracker.test.js +0 -152
  771. package/dist/src/telemetry/high-water-mark-tracker.test.js.map +0 -1
  772. package/dist/src/telemetry/integration.test.circular.d.ts +0 -6
  773. package/dist/src/telemetry/integration.test.circular.js +0 -54
  774. package/dist/src/telemetry/integration.test.circular.js.map +0 -1
  775. package/dist/src/telemetry/loggers.test.circular.d.ts +0 -6
  776. package/dist/src/telemetry/loggers.test.circular.js +0 -107
  777. package/dist/src/telemetry/loggers.test.circular.js.map +0 -1
  778. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  779. package/dist/src/telemetry/loggers.test.js +0 -1618
  780. package/dist/src/telemetry/loggers.test.js.map +0 -1
  781. package/dist/src/telemetry/memory-monitor.test.d.ts +0 -6
  782. package/dist/src/telemetry/memory-monitor.test.js +0 -472
  783. package/dist/src/telemetry/memory-monitor.test.js.map +0 -1
  784. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  785. package/dist/src/telemetry/metrics.test.js +0 -1176
  786. package/dist/src/telemetry/metrics.test.js.map +0 -1
  787. package/dist/src/telemetry/rate-limiter.test.d.ts +0 -6
  788. package/dist/src/telemetry/rate-limiter.test.js +0 -207
  789. package/dist/src/telemetry/rate-limiter.test.js.map +0 -1
  790. package/dist/src/telemetry/sanitize.test.d.ts +0 -6
  791. package/dist/src/telemetry/sanitize.test.js +0 -279
  792. package/dist/src/telemetry/sanitize.test.js.map +0 -1
  793. package/dist/src/telemetry/sdk.test.d.ts +0 -6
  794. package/dist/src/telemetry/sdk.test.js +0 -360
  795. package/dist/src/telemetry/sdk.test.js.map +0 -1
  796. package/dist/src/telemetry/semantic.test.d.ts +0 -6
  797. package/dist/src/telemetry/semantic.test.js +0 -387
  798. package/dist/src/telemetry/semantic.test.js.map +0 -1
  799. package/dist/src/telemetry/semantic.truncation.test.d.ts +0 -1
  800. package/dist/src/telemetry/semantic.truncation.test.js +0 -92
  801. package/dist/src/telemetry/semantic.truncation.test.js.map +0 -1
  802. package/dist/src/telemetry/startupProfiler.test.d.ts +0 -6
  803. package/dist/src/telemetry/startupProfiler.test.js +0 -285
  804. package/dist/src/telemetry/startupProfiler.test.js.map +0 -1
  805. package/dist/src/telemetry/telemetry-utils.test.d.ts +0 -6
  806. package/dist/src/telemetry/telemetry-utils.test.js +0 -41
  807. package/dist/src/telemetry/telemetry-utils.test.js.map +0 -1
  808. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  809. package/dist/src/telemetry/telemetry.test.js +0 -57
  810. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  811. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  812. package/dist/src/telemetry/uiTelemetry.test.js +0 -584
  813. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  814. package/dist/src/tools/activate-skill.test.d.ts +0 -6
  815. package/dist/src/tools/activate-skill.test.js +0 -113
  816. package/dist/src/tools/activate-skill.test.js.map +0 -1
  817. package/dist/src/tools/ask-user.test.d.ts +0 -6
  818. package/dist/src/tools/ask-user.test.js +0 -187
  819. package/dist/src/tools/ask-user.test.js.map +0 -1
  820. package/dist/src/tools/base-tool-invocation.test.d.ts +0 -6
  821. package/dist/src/tools/base-tool-invocation.test.js +0 -85
  822. package/dist/src/tools/base-tool-invocation.test.js.map +0 -1
  823. package/dist/src/tools/confirmation-policy.test.d.ts +0 -6
  824. package/dist/src/tools/confirmation-policy.test.js +0 -143
  825. package/dist/src/tools/confirmation-policy.test.js.map +0 -1
  826. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  827. package/dist/src/tools/diffOptions.test.js +0 -172
  828. package/dist/src/tools/diffOptions.test.js.map +0 -1
  829. package/dist/src/tools/edit.test.d.ts +0 -6
  830. package/dist/src/tools/edit.test.js +0 -729
  831. package/dist/src/tools/edit.test.js.map +0 -1
  832. package/dist/src/tools/get-internal-docs.test.d.ts +0 -6
  833. package/dist/src/tools/get-internal-docs.test.js +0 -57
  834. package/dist/src/tools/get-internal-docs.test.js.map +0 -1
  835. package/dist/src/tools/glob.test.d.ts +0 -6
  836. package/dist/src/tools/glob.test.js +0 -433
  837. package/dist/src/tools/glob.test.js.map +0 -1
  838. package/dist/src/tools/grep.test.d.ts +0 -6
  839. package/dist/src/tools/grep.test.js +0 -328
  840. package/dist/src/tools/grep.test.js.map +0 -1
  841. package/dist/src/tools/ls.test.d.ts +0 -6
  842. package/dist/src/tools/ls.test.js +0 -242
  843. package/dist/src/tools/ls.test.js.map +0 -1
  844. package/dist/src/tools/mcp-client-manager.test.d.ts +0 -6
  845. package/dist/src/tools/mcp-client-manager.test.js +0 -251
  846. package/dist/src/tools/mcp-client-manager.test.js.map +0 -1
  847. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  848. package/dist/src/tools/mcp-client.test.js +0 -1346
  849. package/dist/src/tools/mcp-client.test.js.map +0 -1
  850. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  851. package/dist/src/tools/mcp-tool.test.js +0 -657
  852. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  853. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  854. package/dist/src/tools/memoryTool.test.js +0 -302
  855. package/dist/src/tools/memoryTool.test.js.map +0 -1
  856. package/dist/src/tools/message-bus-integration.test.d.ts +0 -6
  857. package/dist/src/tools/message-bus-integration.test.js +0 -169
  858. package/dist/src/tools/message-bus-integration.test.js.map +0 -1
  859. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  860. package/dist/src/tools/modifiable-tool.test.js +0 -237
  861. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  862. package/dist/src/tools/read-file.test.d.ts +0 -6
  863. package/dist/src/tools/read-file.test.js +0 -376
  864. package/dist/src/tools/read-file.test.js.map +0 -1
  865. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  866. package/dist/src/tools/read-many-files.test.js +0 -567
  867. package/dist/src/tools/read-many-files.test.js.map +0 -1
  868. package/dist/src/tools/ripGrep.test.d.ts +0 -6
  869. package/dist/src/tools/ripGrep.test.js +0 -1139
  870. package/dist/src/tools/ripGrep.test.js.map +0 -1
  871. package/dist/src/tools/shell.test.d.ts +0 -6
  872. package/dist/src/tools/shell.test.js +0 -526
  873. package/dist/src/tools/shell.test.js.map +0 -1
  874. package/dist/src/tools/tool-names.test.d.ts +0 -6
  875. package/dist/src/tools/tool-names.test.js +0 -43
  876. package/dist/src/tools/tool-names.test.js.map +0 -1
  877. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  878. package/dist/src/tools/tool-registry.test.js +0 -461
  879. package/dist/src/tools/tool-registry.test.js.map +0 -1
  880. package/dist/src/tools/tools.test.d.ts +0 -6
  881. package/dist/src/tools/tools.test.js +0 -207
  882. package/dist/src/tools/tools.test.js.map +0 -1
  883. package/dist/src/tools/web-fetch.test.d.ts +0 -6
  884. package/dist/src/tools/web-fetch.test.js +0 -442
  885. package/dist/src/tools/web-fetch.test.js.map +0 -1
  886. package/dist/src/tools/web-search.test.d.ts +0 -6
  887. package/dist/src/tools/web-search.test.js +0 -214
  888. package/dist/src/tools/web-search.test.js.map +0 -1
  889. package/dist/src/tools/write-file.test.d.ts +0 -6
  890. package/dist/src/tools/write-file.test.js +0 -681
  891. package/dist/src/tools/write-file.test.js.map +0 -1
  892. package/dist/src/tools/write-todos.test.d.ts +0 -6
  893. package/dist/src/tools/write-todos.test.js +0 -90
  894. package/dist/src/tools/write-todos.test.js.map +0 -1
  895. package/dist/src/utils/apiConversionUtils.test.d.ts +0 -6
  896. package/dist/src/utils/apiConversionUtils.test.js +0 -150
  897. package/dist/src/utils/apiConversionUtils.test.js.map +0 -1
  898. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  899. package/dist/src/utils/bfsFileSearch.test.js +0 -227
  900. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  901. package/dist/src/utils/channel.test.d.ts +0 -6
  902. package/dist/src/utils/channel.test.js +0 -170
  903. package/dist/src/utils/channel.test.js.map +0 -1
  904. package/dist/src/utils/checkpointUtils.test.d.ts +0 -6
  905. package/dist/src/utils/checkpointUtils.test.js +0 -229
  906. package/dist/src/utils/checkpointUtils.test.js.map +0 -1
  907. package/dist/src/utils/customHeaderUtils.test.d.ts +0 -6
  908. package/dist/src/utils/customHeaderUtils.test.js +0 -77
  909. package/dist/src/utils/customHeaderUtils.test.js.map +0 -1
  910. package/dist/src/utils/debugLogger.test.d.ts +0 -6
  911. package/dist/src/utils/debugLogger.test.js +0 -69
  912. package/dist/src/utils/debugLogger.test.js.map +0 -1
  913. package/dist/src/utils/delay.test.d.ts +0 -6
  914. package/dist/src/utils/delay.test.js +0 -88
  915. package/dist/src/utils/delay.test.js.map +0 -1
  916. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  917. package/dist/src/utils/editCorrector.test.js +0 -533
  918. package/dist/src/utils/editCorrector.test.js.map +0 -1
  919. package/dist/src/utils/editor.test.d.ts +0 -6
  920. package/dist/src/utils/editor.test.js +0 -429
  921. package/dist/src/utils/editor.test.js.map +0 -1
  922. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  923. package/dist/src/utils/environmentContext.test.js +0 -114
  924. package/dist/src/utils/environmentContext.test.js.map +0 -1
  925. package/dist/src/utils/errorParsing.test.d.ts +0 -6
  926. package/dist/src/utils/errorParsing.test.js +0 -84
  927. package/dist/src/utils/errorParsing.test.js.map +0 -1
  928. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  929. package/dist/src/utils/errorReporting.test.js +0 -133
  930. package/dist/src/utils/errorReporting.test.js.map +0 -1
  931. package/dist/src/utils/errors.test.d.ts +0 -6
  932. package/dist/src/utils/errors.test.js +0 -155
  933. package/dist/src/utils/errors.test.js.map +0 -1
  934. package/dist/src/utils/events.test.d.ts +0 -6
  935. package/dist/src/utils/events.test.js +0 -237
  936. package/dist/src/utils/events.test.js.map +0 -1
  937. package/dist/src/utils/extensionLoader.test.d.ts +0 -6
  938. package/dist/src/utils/extensionLoader.test.js +0 -176
  939. package/dist/src/utils/extensionLoader.test.js.map +0 -1
  940. package/dist/src/utils/fileDiffUtils.test.d.ts +0 -6
  941. package/dist/src/utils/fileDiffUtils.test.js +0 -84
  942. package/dist/src/utils/fileDiffUtils.test.js.map +0 -1
  943. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  944. package/dist/src/utils/fileUtils.test.js +0 -780
  945. package/dist/src/utils/fileUtils.test.js.map +0 -1
  946. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  947. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  948. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  949. package/dist/src/utils/filesearch/crawler.test.d.ts +0 -6
  950. package/dist/src/utils/filesearch/crawler.test.js +0 -495
  951. package/dist/src/utils/filesearch/crawler.test.js.map +0 -1
  952. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  953. package/dist/src/utils/filesearch/fileSearch.test.js +0 -663
  954. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  955. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  956. package/dist/src/utils/filesearch/ignore.test.js +0 -144
  957. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  958. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  959. package/dist/src/utils/filesearch/result-cache.test.js +0 -46
  960. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  961. package/dist/src/utils/flashFallback.test.d.ts +0 -6
  962. package/dist/src/utils/flashFallback.test.js +0 -103
  963. package/dist/src/utils/flashFallback.test.js.map +0 -1
  964. package/dist/src/utils/formatters.test.d.ts +0 -6
  965. package/dist/src/utils/formatters.test.js +0 -26
  966. package/dist/src/utils/formatters.test.js.map +0 -1
  967. package/dist/src/utils/geminiIgnoreParser.test.d.ts +0 -6
  968. package/dist/src/utils/geminiIgnoreParser.test.js +0 -98
  969. package/dist/src/utils/geminiIgnoreParser.test.js.map +0 -1
  970. package/dist/src/utils/geminiTypeConversion.test.d.ts +0 -6
  971. package/dist/src/utils/geminiTypeConversion.test.js +0 -310
  972. package/dist/src/utils/geminiTypeConversion.test.js.map +0 -1
  973. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  974. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -512
  975. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  976. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  977. package/dist/src/utils/getFolderStructure.test.js +0 -283
  978. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  979. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  980. package/dist/src/utils/gitIgnoreParser.test.js +0 -243
  981. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  982. package/dist/src/utils/googleErrors.test.d.ts +0 -6
  983. package/dist/src/utils/googleErrors.test.js +0 -309
  984. package/dist/src/utils/googleErrors.test.js.map +0 -1
  985. package/dist/src/utils/googleQuotaErrors.test.d.ts +0 -6
  986. package/dist/src/utils/googleQuotaErrors.test.js +0 -548
  987. package/dist/src/utils/googleQuotaErrors.test.js.map +0 -1
  988. package/dist/src/utils/ignorePatterns.test.d.ts +0 -6
  989. package/dist/src/utils/ignorePatterns.test.js +0 -246
  990. package/dist/src/utils/ignorePatterns.test.js.map +0 -1
  991. package/dist/src/utils/installationManager.test.d.ts +0 -6
  992. package/dist/src/utils/installationManager.test.js +0 -93
  993. package/dist/src/utils/installationManager.test.js.map +0 -1
  994. package/dist/src/utils/llm-edit-fixer.test.d.ts +0 -6
  995. package/dist/src/utils/llm-edit-fixer.test.js +0 -223
  996. package/dist/src/utils/llm-edit-fixer.test.js.map +0 -1
  997. package/dist/src/utils/llmUtils.test.d.ts +0 -6
  998. package/dist/src/utils/llmUtils.test.js +0 -196
  999. package/dist/src/utils/llmUtils.test.js.map +0 -1
  1000. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  1001. package/dist/src/utils/memoryDiscovery.test.js +0 -542
  1002. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  1003. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  1004. package/dist/src/utils/memoryImportProcessor.test.js +0 -581
  1005. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  1006. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  1007. package/dist/src/utils/nextSpeakerChecker.test.js +0 -191
  1008. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  1009. package/dist/src/utils/partUtils.test.d.ts +0 -6
  1010. package/dist/src/utils/partUtils.test.js +0 -397
  1011. package/dist/src/utils/partUtils.test.js.map +0 -1
  1012. package/dist/src/utils/pathCorrector.test.d.ts +0 -6
  1013. package/dist/src/utils/pathCorrector.test.js +0 -87
  1014. package/dist/src/utils/pathCorrector.test.js.map +0 -1
  1015. package/dist/src/utils/pathReader.test.d.ts +0 -6
  1016. package/dist/src/utils/pathReader.test.js +0 -406
  1017. package/dist/src/utils/pathReader.test.js.map +0 -1
  1018. package/dist/src/utils/paths.test.d.ts +0 -6
  1019. package/dist/src/utils/paths.test.js +0 -402
  1020. package/dist/src/utils/paths.test.js.map +0 -1
  1021. package/dist/src/utils/retry.test.d.ts +0 -6
  1022. package/dist/src/utils/retry.test.js +0 -548
  1023. package/dist/src/utils/retry.test.js.map +0 -1
  1024. package/dist/src/utils/retry_llm_error.test.d.ts +0 -6
  1025. package/dist/src/utils/retry_llm_error.test.js +0 -280
  1026. package/dist/src/utils/retry_llm_error.test.js.map +0 -1
  1027. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  1028. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  1029. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  1030. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  1031. package/dist/src/utils/schemaValidator.test.js +0 -113
  1032. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  1033. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  1034. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  1035. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  1036. package/dist/src/utils/security.test.d.ts +0 -1
  1037. package/dist/src/utils/security.test.js +0 -121
  1038. package/dist/src/utils/security.test.js.map +0 -1
  1039. package/dist/src/utils/shell-utils.integration.test.d.ts +0 -1
  1040. package/dist/src/utils/shell-utils.integration.test.js +0 -58
  1041. package/dist/src/utils/shell-utils.integration.test.js.map +0 -1
  1042. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  1043. package/dist/src/utils/shell-utils.test.js +0 -437
  1044. package/dist/src/utils/shell-utils.test.js.map +0 -1
  1045. package/dist/src/utils/stdio.test.d.ts +0 -6
  1046. package/dist/src/utils/stdio.test.js +0 -47
  1047. package/dist/src/utils/stdio.test.js.map +0 -1
  1048. package/dist/src/utils/summarizer.test.d.ts +0 -6
  1049. package/dist/src/utils/summarizer.test.js +0 -152
  1050. package/dist/src/utils/summarizer.test.js.map +0 -1
  1051. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  1052. package/dist/src/utils/systemEncoding.test.js +0 -369
  1053. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  1054. package/dist/src/utils/terminalSerializer.test.d.ts +0 -6
  1055. package/dist/src/utils/terminalSerializer.test.js +0 -193
  1056. package/dist/src/utils/terminalSerializer.test.js.map +0 -1
  1057. package/dist/src/utils/textUtils.test.d.ts +0 -6
  1058. package/dist/src/utils/textUtils.test.js +0 -76
  1059. package/dist/src/utils/textUtils.test.js.map +0 -1
  1060. package/dist/src/utils/thoughtUtils.test.d.ts +0 -6
  1061. package/dist/src/utils/thoughtUtils.test.js +0 -78
  1062. package/dist/src/utils/thoughtUtils.test.js.map +0 -1
  1063. package/dist/src/utils/tokenCalculation.test.d.ts +0 -6
  1064. package/dist/src/utils/tokenCalculation.test.js +0 -184
  1065. package/dist/src/utils/tokenCalculation.test.js.map +0 -1
  1066. package/dist/src/utils/tool-utils.test.d.ts +0 -6
  1067. package/dist/src/utils/tool-utils.test.js +0 -84
  1068. package/dist/src/utils/tool-utils.test.js.map +0 -1
  1069. package/dist/src/utils/toolCallContext.test.d.ts +0 -6
  1070. package/dist/src/utils/toolCallContext.test.js +0 -68
  1071. package/dist/src/utils/toolCallContext.test.js.map +0 -1
  1072. package/dist/src/utils/userAccountManager.test.d.ts +0 -6
  1073. package/dist/src/utils/userAccountManager.test.js +0 -225
  1074. package/dist/src/utils/userAccountManager.test.js.map +0 -1
  1075. package/dist/src/utils/version.test.d.ts +0 -6
  1076. package/dist/src/utils/version.test.js +0 -39
  1077. package/dist/src/utils/version.test.js.map +0 -1
  1078. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  1079. package/dist/src/utils/workspaceContext.test.js +0 -374
  1080. package/dist/src/utils/workspaceContext.test.js.map +0 -1
  1081. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,1811 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import { Config, DEFAULT_FILE_FILTERING_OPTIONS } from './config.js';
8
- import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
9
- import { debugLogger } from '../utils/debugLogger.js';
10
- import { ApprovalMode } from '../policy/types.js';
11
- import { HookType, HookEventName } from '../hooks/types.js';
12
- import * as path from 'node:path';
13
- import * as fs from 'node:fs';
14
- import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
15
- import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, } from '../telemetry/index.js';
16
- import { AuthType, createContentGeneratorConfig, } from '../core/contentGenerator.js';
17
- import { GeminiClient } from '../core/client.js';
18
- import { GitService } from '../services/gitService.js';
19
- import { ShellTool } from '../tools/shell.js';
20
- import { ReadFileTool } from '../tools/read-file.js';
21
- import { GrepTool } from '../tools/grep.js';
22
- import { RipGrepTool, canUseRipgrep } from '../tools/ripGrep.js';
23
- import { logRipgrepFallback } from '../telemetry/loggers.js';
24
- import { RipgrepFallbackEvent } from '../telemetry/types.js';
25
- import { ToolRegistry } from '../tools/tool-registry.js';
26
- import { ACTIVATE_SKILL_TOOL_NAME } from '../tools/tool-names.js';
27
- import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
28
- import { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, } from './models.js';
29
- vi.mock('fs', async (importOriginal) => {
30
- const actual = await importOriginal();
31
- return {
32
- ...actual,
33
- existsSync: vi.fn().mockReturnValue(true),
34
- statSync: vi.fn().mockReturnValue({
35
- isDirectory: vi.fn().mockReturnValue(true),
36
- }),
37
- realpathSync: vi.fn((path) => path),
38
- };
39
- });
40
- // Mock dependencies that might be called during Config construction or createServerConfig
41
- vi.mock('../tools/tool-registry', () => {
42
- const ToolRegistryMock = vi.fn();
43
- ToolRegistryMock.prototype.registerTool = vi.fn();
44
- ToolRegistryMock.prototype.unregisterTool = vi.fn();
45
- ToolRegistryMock.prototype.discoverAllTools = vi.fn();
46
- ToolRegistryMock.prototype.sortTools = vi.fn();
47
- ToolRegistryMock.prototype.getAllTools = vi.fn(() => []); // Mock methods if needed
48
- ToolRegistryMock.prototype.getTool = vi.fn();
49
- ToolRegistryMock.prototype.getFunctionDeclarations = vi.fn(() => []);
50
- return { ToolRegistry: ToolRegistryMock };
51
- });
52
- vi.mock('../tools/mcp-client-manager.js', () => ({
53
- McpClientManager: vi.fn().mockImplementation(() => ({
54
- startConfiguredMcpServers: vi.fn(),
55
- getMcpInstructions: vi.fn().mockReturnValue('MCP Instructions'),
56
- })),
57
- }));
58
- vi.mock('../utils/memoryDiscovery.js', () => ({
59
- loadServerHierarchicalMemory: vi.fn(),
60
- }));
61
- // Mock individual tools if their constructors are complex or have side effects
62
- vi.mock('../tools/ls');
63
- vi.mock('../tools/read-file');
64
- vi.mock('../tools/grep.js');
65
- vi.mock('../tools/ripGrep.js', () => ({
66
- canUseRipgrep: vi.fn(),
67
- RipGrepTool: class MockRipGrepTool {
68
- },
69
- }));
70
- vi.mock('../tools/glob');
71
- vi.mock('../tools/edit');
72
- vi.mock('../tools/shell');
73
- vi.mock('../tools/write-file');
74
- vi.mock('../tools/web-fetch');
75
- vi.mock('../tools/read-many-files');
76
- vi.mock('../tools/memoryTool', () => ({
77
- MemoryTool: vi.fn(),
78
- setGeminiMdFilename: vi.fn(),
79
- getCurrentGeminiMdFilename: vi.fn(() => 'GEMINI.md'), // Mock the original filename
80
- DEFAULT_CONTEXT_FILENAME: 'GEMINI.md',
81
- GEMINI_DIR: '.gemini',
82
- }));
83
- vi.mock('../core/contentGenerator.js');
84
- vi.mock('../core/client.js', () => ({
85
- GeminiClient: vi.fn().mockImplementation(() => ({
86
- initialize: vi.fn().mockResolvedValue(undefined),
87
- stripThoughtsFromHistory: vi.fn(),
88
- isInitialized: vi.fn().mockReturnValue(false),
89
- })),
90
- }));
91
- vi.mock('../telemetry/index.js', async (importOriginal) => {
92
- const actual = await importOriginal();
93
- return {
94
- ...actual,
95
- initializeTelemetry: vi.fn(),
96
- uiTelemetryService: {
97
- getLastPromptTokenCount: vi.fn(),
98
- },
99
- };
100
- });
101
- vi.mock('../telemetry/loggers.js', async (importOriginal) => {
102
- const actual = await importOriginal();
103
- return {
104
- ...actual,
105
- logRipgrepFallback: vi.fn(),
106
- };
107
- });
108
- vi.mock('../services/gitService.js', () => {
109
- const GitServiceMock = vi.fn();
110
- GitServiceMock.prototype.initialize = vi.fn();
111
- return { GitService: GitServiceMock };
112
- });
113
- vi.mock('../ide/ide-client.js', () => ({
114
- IdeClient: {
115
- getInstance: vi.fn().mockResolvedValue({
116
- getConnectionStatus: vi.fn(),
117
- initialize: vi.fn(),
118
- shutdown: vi.fn(),
119
- }),
120
- },
121
- }));
122
- vi.mock('../agents/registry.js', () => {
123
- const AgentRegistryMock = vi.fn();
124
- AgentRegistryMock.prototype.initialize = vi.fn();
125
- AgentRegistryMock.prototype.getAllDefinitions = vi.fn(() => []);
126
- AgentRegistryMock.prototype.getDefinition = vi.fn();
127
- return { AgentRegistry: AgentRegistryMock };
128
- });
129
- vi.mock('../agents/subagent-tool.js', () => ({
130
- SubagentTool: vi.fn(),
131
- }));
132
- vi.mock('../resources/resource-registry.js', () => ({
133
- ResourceRegistry: vi.fn(),
134
- }));
135
- const mockCoreEvents = vi.hoisted(() => ({
136
- emitFeedback: vi.fn(),
137
- emitModelChanged: vi.fn(),
138
- emitConsoleLog: vi.fn(),
139
- on: vi.fn(),
140
- }));
141
- const mockSetGlobalProxy = vi.hoisted(() => vi.fn());
142
- vi.mock('../utils/events.js', async (importOriginal) => {
143
- const actual = await importOriginal();
144
- return {
145
- ...actual,
146
- coreEvents: mockCoreEvents,
147
- };
148
- });
149
- vi.mock('../utils/fetch.js', () => ({
150
- setGlobalProxy: mockSetGlobalProxy,
151
- }));
152
- vi.mock('../services/contextManager.js');
153
- import { BaseLlmClient } from '../core/baseLlmClient.js';
154
- import { tokenLimit } from '../core/tokenLimits.js';
155
- import { uiTelemetryService } from '../telemetry/index.js';
156
- import { getCodeAssistServer } from '../code_assist/codeAssist.js';
157
- import { getExperiments } from '../code_assist/experiments/experiments.js';
158
- import { ContextManager } from '../services/contextManager.js';
159
- vi.mock('../core/baseLlmClient.js');
160
- vi.mock('../core/tokenLimits.js', () => ({
161
- tokenLimit: vi.fn(),
162
- }));
163
- vi.mock('../code_assist/codeAssist.js');
164
- vi.mock('../code_assist/experiments/experiments.js');
165
- describe('Server Config (config.ts)', () => {
166
- const MODEL = DEFAULT_GEMINI_MODEL;
167
- const SANDBOX = {
168
- command: 'docker',
169
- image: 'gemini-cli-sandbox',
170
- };
171
- const TARGET_DIR = '/path/to/target';
172
- const DEBUG_MODE = false;
173
- const QUESTION = 'test question';
174
- const USER_MEMORY = 'Test User Memory';
175
- const TELEMETRY_SETTINGS = { enabled: false };
176
- const EMBEDDING_MODEL = 'gemini-embedding';
177
- const SESSION_ID = 'test-session-id';
178
- const baseParams = {
179
- cwd: '/tmp',
180
- embeddingModel: EMBEDDING_MODEL,
181
- sandbox: SANDBOX,
182
- targetDir: TARGET_DIR,
183
- debugMode: DEBUG_MODE,
184
- question: QUESTION,
185
- userMemory: USER_MEMORY,
186
- telemetry: TELEMETRY_SETTINGS,
187
- sessionId: SESSION_ID,
188
- model: MODEL,
189
- usageStatisticsEnabled: false,
190
- };
191
- beforeEach(() => {
192
- // Reset mocks if necessary
193
- vi.clearAllMocks();
194
- vi.mocked(getExperiments).mockResolvedValue({
195
- experimentIds: [],
196
- flags: {},
197
- });
198
- });
199
- describe('initialize', () => {
200
- it('should throw an error if checkpointing is enabled and GitService fails', async () => {
201
- const gitError = new Error('Git is not installed');
202
- GitService.prototype.initialize.mockRejectedValue(gitError);
203
- const config = new Config({
204
- ...baseParams,
205
- checkpointing: true,
206
- });
207
- await expect(config.initialize()).rejects.toThrow(gitError);
208
- });
209
- it('should not throw an error if checkpointing is disabled and GitService fails', async () => {
210
- const gitError = new Error('Git is not installed');
211
- GitService.prototype.initialize.mockRejectedValue(gitError);
212
- const config = new Config({
213
- ...baseParams,
214
- checkpointing: false,
215
- });
216
- await expect(config.initialize()).resolves.toBeUndefined();
217
- });
218
- it('should throw an error if initialized more than once', async () => {
219
- const config = new Config({
220
- ...baseParams,
221
- checkpointing: false,
222
- });
223
- await expect(config.initialize()).resolves.toBeUndefined();
224
- await expect(config.initialize()).rejects.toThrow('Config was already initialized');
225
- });
226
- it('should await MCP initialization in non-interactive mode', async () => {
227
- const config = new Config({
228
- ...baseParams,
229
- checkpointing: false,
230
- // interactive defaults to false
231
- });
232
- const { McpClientManager } = await import('../tools/mcp-client-manager.js');
233
- let mcpStarted = false;
234
- McpClientManager.mockImplementation(() => ({
235
- startConfiguredMcpServers: vi.fn().mockImplementation(async () => {
236
- await new Promise((resolve) => setTimeout(resolve, 50));
237
- mcpStarted = true;
238
- }),
239
- getMcpInstructions: vi.fn(),
240
- }));
241
- await config.initialize();
242
- // Should wait for MCP to finish
243
- expect(mcpStarted).toBe(true);
244
- });
245
- it('should not await MCP initialization in interactive mode', async () => {
246
- const config = new Config({
247
- ...baseParams,
248
- checkpointing: false,
249
- interactive: true,
250
- });
251
- const { McpClientManager } = await import('../tools/mcp-client-manager.js');
252
- let mcpStarted = false;
253
- McpClientManager.mockImplementation(() => ({
254
- startConfiguredMcpServers: vi.fn().mockImplementation(async () => {
255
- await new Promise((resolve) => setTimeout(resolve, 50));
256
- mcpStarted = true;
257
- }),
258
- getMcpInstructions: vi.fn(),
259
- }));
260
- await config.initialize();
261
- // Should return immediately, before MCP finishes
262
- expect(mcpStarted).toBe(false);
263
- // Wait for it to eventually finish to avoid open handles
264
- await new Promise((resolve) => setTimeout(resolve, 60));
265
- expect(mcpStarted).toBe(true);
266
- });
267
- describe('getCompressionThreshold', () => {
268
- it('should return the local compression threshold if it is set', async () => {
269
- const config = new Config({
270
- ...baseParams,
271
- compressionThreshold: 0.5,
272
- });
273
- expect(await config.getCompressionThreshold()).toBe(0.5);
274
- });
275
- it('should return the remote experiment threshold if it is a positive number', async () => {
276
- const config = new Config({
277
- ...baseParams,
278
- experiments: {
279
- flags: {
280
- [ExperimentFlags.CONTEXT_COMPRESSION_THRESHOLD]: {
281
- floatValue: 0.8,
282
- },
283
- },
284
- },
285
- });
286
- expect(await config.getCompressionThreshold()).toBe(0.8);
287
- });
288
- it('should return undefined if the remote experiment threshold is 0', async () => {
289
- const config = new Config({
290
- ...baseParams,
291
- experiments: {
292
- flags: {
293
- [ExperimentFlags.CONTEXT_COMPRESSION_THRESHOLD]: {
294
- floatValue: 0.0,
295
- },
296
- },
297
- },
298
- });
299
- expect(await config.getCompressionThreshold()).toBeUndefined();
300
- });
301
- it('should return undefined if there are no experiments', async () => {
302
- const config = new Config(baseParams);
303
- expect(await config.getCompressionThreshold()).toBeUndefined();
304
- });
305
- });
306
- describe('getUserCaching', () => {
307
- it('should return the remote experiment flag when available', async () => {
308
- const config = new Config({
309
- ...baseParams,
310
- experiments: {
311
- flags: {
312
- [ExperimentFlags.USER_CACHING]: {
313
- boolValue: true,
314
- },
315
- },
316
- experimentIds: [],
317
- },
318
- });
319
- expect(await config.getUserCaching()).toBe(true);
320
- });
321
- it('should return false when the remote flag is false', async () => {
322
- const config = new Config({
323
- ...baseParams,
324
- experiments: {
325
- flags: {
326
- [ExperimentFlags.USER_CACHING]: {
327
- boolValue: false,
328
- },
329
- },
330
- experimentIds: [],
331
- },
332
- });
333
- expect(await config.getUserCaching()).toBe(false);
334
- });
335
- it('should return undefined if there are no experiments', async () => {
336
- const config = new Config(baseParams);
337
- expect(await config.getUserCaching()).toBeUndefined();
338
- });
339
- });
340
- });
341
- describe('refreshAuth', () => {
342
- it('should refresh auth and update config', async () => {
343
- const config = new Config(baseParams);
344
- const authType = AuthType.USE_GEMINI;
345
- const mockContentConfig = {
346
- apiKey: 'test-key',
347
- };
348
- vi.mocked(createContentGeneratorConfig).mockResolvedValue(mockContentConfig);
349
- await config.refreshAuth(authType);
350
- expect(createContentGeneratorConfig).toHaveBeenCalledWith(config, authType);
351
- // Verify that contentGeneratorConfig is updated
352
- expect(config.getContentGeneratorConfig()).toEqual(mockContentConfig);
353
- expect(GeminiClient).toHaveBeenCalledWith(config);
354
- });
355
- it('should reset model availability status', async () => {
356
- const config = new Config(baseParams);
357
- const service = config.getModelAvailabilityService();
358
- const spy = vi.spyOn(service, 'reset');
359
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
360
- await config.refreshAuth(AuthType.USE_GEMINI);
361
- expect(spy).toHaveBeenCalled();
362
- });
363
- it('should strip thoughts when switching from GenAI to Vertex', async () => {
364
- const config = new Config(baseParams);
365
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
366
- await config.refreshAuth(AuthType.USE_GEMINI);
367
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
368
- expect(config.getGeminiClient().stripThoughtsFromHistory).toHaveBeenCalledWith();
369
- });
370
- it('should strip thoughts when switching from GenAI to Vertex AI', async () => {
371
- const config = new Config(baseParams);
372
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
373
- await config.refreshAuth(AuthType.USE_GEMINI);
374
- await config.refreshAuth(AuthType.USE_VERTEX_AI);
375
- expect(config.getGeminiClient().stripThoughtsFromHistory).toHaveBeenCalledWith();
376
- });
377
- it('should not strip thoughts when switching from Vertex to GenAI', async () => {
378
- const config = new Config(baseParams);
379
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
380
- await config.refreshAuth(AuthType.USE_VERTEX_AI);
381
- await config.refreshAuth(AuthType.USE_GEMINI);
382
- expect(config.getGeminiClient().stripThoughtsFromHistory).not.toHaveBeenCalledWith();
383
- });
384
- });
385
- describe('Preview Features Logic in refreshAuth', () => {
386
- beforeEach(() => {
387
- // Set up default mock behavior for these functions before each test
388
- vi.mocked(getCodeAssistServer).mockReturnValue(undefined);
389
- vi.mocked(getExperiments).mockResolvedValue({
390
- flags: {},
391
- experimentIds: [],
392
- });
393
- });
394
- it('should enable preview features for Google auth when remote flag is true', async () => {
395
- // Override the default mock for this specific test
396
- vi.mocked(getCodeAssistServer).mockReturnValue({}); // Simulate Google auth by returning a truthy value
397
- vi.mocked(getExperiments).mockResolvedValue({
398
- flags: {
399
- [ExperimentFlags.ENABLE_PREVIEW]: { boolValue: true },
400
- },
401
- experimentIds: [],
402
- });
403
- const config = new Config({ ...baseParams, previewFeatures: undefined });
404
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
405
- expect(config.getPreviewFeatures()).toBe(true);
406
- });
407
- it('should disable preview features for Google auth when remote flag is false', async () => {
408
- // Override the default mock
409
- vi.mocked(getCodeAssistServer).mockReturnValue({});
410
- vi.mocked(getExperiments).mockResolvedValue({
411
- flags: {
412
- [ExperimentFlags.ENABLE_PREVIEW]: { boolValue: false },
413
- },
414
- experimentIds: [],
415
- });
416
- const config = new Config({ ...baseParams, previewFeatures: undefined });
417
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
418
- expect(config.getPreviewFeatures()).toBe(undefined);
419
- });
420
- it('should disable preview features for Google auth when remote flag is missing', async () => {
421
- // Override the default mock for getCodeAssistServer, the getExperiments mock is already correct
422
- vi.mocked(getCodeAssistServer).mockReturnValue({});
423
- const config = new Config({ ...baseParams, previewFeatures: undefined });
424
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
425
- expect(config.getPreviewFeatures()).toBe(undefined);
426
- });
427
- it('should not change preview features or model if it is already set to true', async () => {
428
- const initialModel = 'some-other-model';
429
- const config = new Config({
430
- ...baseParams,
431
- previewFeatures: true,
432
- model: initialModel,
433
- });
434
- // It doesn't matter which auth method we use here, the logic should exit early
435
- await config.refreshAuth(AuthType.USE_GEMINI);
436
- expect(config.getPreviewFeatures()).toBe(true);
437
- expect(config.getModel()).toBe(initialModel);
438
- });
439
- it('should not change preview features or model if it is already set to false', async () => {
440
- const initialModel = 'some-other-model';
441
- const config = new Config({
442
- ...baseParams,
443
- previewFeatures: false,
444
- model: initialModel,
445
- });
446
- await config.refreshAuth(AuthType.USE_GEMINI);
447
- expect(config.getPreviewFeatures()).toBe(false);
448
- expect(config.getModel()).toBe(initialModel);
449
- });
450
- });
451
- it('Config constructor should store userMemory correctly', () => {
452
- const config = new Config(baseParams);
453
- expect(config.getUserMemory()).toBe(USER_MEMORY);
454
- // Verify other getters if needed
455
- expect(config.getTargetDir()).toBe(path.resolve(TARGET_DIR)); // Check resolved path
456
- });
457
- it('Config constructor should default userMemory to empty string if not provided', () => {
458
- const paramsWithoutMemory = { ...baseParams };
459
- delete paramsWithoutMemory.userMemory;
460
- const config = new Config(paramsWithoutMemory);
461
- expect(config.getUserMemory()).toBe('');
462
- });
463
- it('Config constructor should call setGeminiMdFilename with contextFileName if provided', () => {
464
- const contextFileName = 'CUSTOM_AGENTS.md';
465
- const paramsWithContextFile = {
466
- ...baseParams,
467
- contextFileName,
468
- };
469
- new Config(paramsWithContextFile);
470
- expect(mockSetGeminiMdFilename).toHaveBeenCalledWith(contextFileName);
471
- });
472
- it('Config constructor should not call setGeminiMdFilename if contextFileName is not provided', () => {
473
- new Config(baseParams); // baseParams does not have contextFileName
474
- expect(mockSetGeminiMdFilename).not.toHaveBeenCalled();
475
- });
476
- it('should set default file filtering settings when not provided', () => {
477
- const config = new Config(baseParams);
478
- expect(config.getFileFilteringRespectGitIgnore()).toBe(DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore);
479
- });
480
- it('should set custom file filtering settings when provided', () => {
481
- const paramsWithFileFiltering = {
482
- ...baseParams,
483
- fileFiltering: {
484
- respectGitIgnore: false,
485
- },
486
- };
487
- const config = new Config(paramsWithFileFiltering);
488
- expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
489
- });
490
- it('should initialize WorkspaceContext with includeDirectories', () => {
491
- const includeDirectories = ['dir1', 'dir2'];
492
- const paramsWithIncludeDirs = {
493
- ...baseParams,
494
- includeDirectories,
495
- };
496
- const config = new Config(paramsWithIncludeDirs);
497
- const workspaceContext = config.getWorkspaceContext();
498
- const directories = workspaceContext.getDirectories();
499
- // Should include only the target directory initially
500
- expect(directories).toHaveLength(1);
501
- expect(directories).toContain(path.resolve(baseParams.targetDir));
502
- // The other directories should be in the pending list
503
- expect(config.getPendingIncludeDirectories()).toEqual(includeDirectories);
504
- });
505
- it('Config constructor should set telemetry to true when provided as true', () => {
506
- const paramsWithTelemetry = {
507
- ...baseParams,
508
- telemetry: { enabled: true },
509
- };
510
- const config = new Config(paramsWithTelemetry);
511
- expect(config.getTelemetryEnabled()).toBe(true);
512
- });
513
- it('Config constructor should set telemetry to false when provided as false', () => {
514
- const paramsWithTelemetry = {
515
- ...baseParams,
516
- telemetry: { enabled: false },
517
- };
518
- const config = new Config(paramsWithTelemetry);
519
- expect(config.getTelemetryEnabled()).toBe(false);
520
- });
521
- it('Config constructor should default telemetry to default value if not provided', () => {
522
- const paramsWithoutTelemetry = { ...baseParams };
523
- delete paramsWithoutTelemetry.telemetry;
524
- const config = new Config(paramsWithoutTelemetry);
525
- expect(config.getTelemetryEnabled()).toBe(TELEMETRY_SETTINGS.enabled);
526
- });
527
- it('Config constructor should set telemetry useCollector to true when provided', () => {
528
- const paramsWithTelemetry = {
529
- ...baseParams,
530
- telemetry: { enabled: true, useCollector: true },
531
- };
532
- const config = new Config(paramsWithTelemetry);
533
- expect(config.getTelemetryUseCollector()).toBe(true);
534
- });
535
- it('Config constructor should set telemetry useCollector to false when provided', () => {
536
- const paramsWithTelemetry = {
537
- ...baseParams,
538
- telemetry: { enabled: true, useCollector: false },
539
- };
540
- const config = new Config(paramsWithTelemetry);
541
- expect(config.getTelemetryUseCollector()).toBe(false);
542
- });
543
- it('Config constructor should default telemetry useCollector to false if not provided', () => {
544
- const paramsWithTelemetry = {
545
- ...baseParams,
546
- telemetry: { enabled: true },
547
- };
548
- const config = new Config(paramsWithTelemetry);
549
- expect(config.getTelemetryUseCollector()).toBe(false);
550
- });
551
- it('should have a getFileService method that returns FileDiscoveryService', () => {
552
- const config = new Config(baseParams);
553
- const fileService = config.getFileService();
554
- expect(fileService).toBeDefined();
555
- });
556
- describe('Usage Statistics', () => {
557
- it('defaults usage statistics to enabled if not specified', () => {
558
- const config = new Config({
559
- ...baseParams,
560
- usageStatisticsEnabled: undefined,
561
- });
562
- expect(config.getUsageStatisticsEnabled()).toBe(true);
563
- });
564
- it.each([{ enabled: true }, { enabled: false }])('sets usage statistics based on the provided value (enabled: $enabled)', ({ enabled }) => {
565
- const config = new Config({
566
- ...baseParams,
567
- usageStatisticsEnabled: enabled,
568
- });
569
- expect(config.getUsageStatisticsEnabled()).toBe(enabled);
570
- });
571
- });
572
- describe('Telemetry Settings', () => {
573
- it('should return default telemetry target if not provided', () => {
574
- const params = {
575
- ...baseParams,
576
- telemetry: { enabled: true },
577
- };
578
- const config = new Config(params);
579
- expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
580
- });
581
- it('should return provided OTLP endpoint', () => {
582
- const endpoint = 'http://custom.otel.collector:4317';
583
- const params = {
584
- ...baseParams,
585
- telemetry: { enabled: true, otlpEndpoint: endpoint },
586
- };
587
- const config = new Config(params);
588
- expect(config.getTelemetryOtlpEndpoint()).toBe(endpoint);
589
- });
590
- it('should return default OTLP endpoint if not provided', () => {
591
- const params = {
592
- ...baseParams,
593
- telemetry: { enabled: true },
594
- };
595
- const config = new Config(params);
596
- expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
597
- });
598
- it('should return provided logPrompts setting', () => {
599
- const params = {
600
- ...baseParams,
601
- telemetry: { enabled: true, logPrompts: false },
602
- };
603
- const config = new Config(params);
604
- expect(config.getTelemetryLogPromptsEnabled()).toBe(false);
605
- });
606
- it('should return default logPrompts setting (true) if not provided', () => {
607
- const params = {
608
- ...baseParams,
609
- telemetry: { enabled: true },
610
- };
611
- const config = new Config(params);
612
- expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
613
- });
614
- it('should return default logPrompts setting (true) if telemetry object is not provided', () => {
615
- const paramsWithoutTelemetry = { ...baseParams };
616
- delete paramsWithoutTelemetry.telemetry;
617
- const config = new Config(paramsWithoutTelemetry);
618
- expect(config.getTelemetryLogPromptsEnabled()).toBe(true);
619
- });
620
- it('should return default telemetry target if telemetry object is not provided', () => {
621
- const paramsWithoutTelemetry = { ...baseParams };
622
- delete paramsWithoutTelemetry.telemetry;
623
- const config = new Config(paramsWithoutTelemetry);
624
- expect(config.getTelemetryTarget()).toBe(DEFAULT_TELEMETRY_TARGET);
625
- });
626
- it('should return default OTLP endpoint if telemetry object is not provided', () => {
627
- const paramsWithoutTelemetry = { ...baseParams };
628
- delete paramsWithoutTelemetry.telemetry;
629
- const config = new Config(paramsWithoutTelemetry);
630
- expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
631
- });
632
- it('should return provided OTLP protocol', () => {
633
- const params = {
634
- ...baseParams,
635
- telemetry: { enabled: true, otlpProtocol: 'http' },
636
- };
637
- const config = new Config(params);
638
- expect(config.getTelemetryOtlpProtocol()).toBe('http');
639
- });
640
- it('should return default OTLP protocol if not provided', () => {
641
- const params = {
642
- ...baseParams,
643
- telemetry: { enabled: true },
644
- };
645
- const config = new Config(params);
646
- expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
647
- });
648
- it('should return default OTLP protocol if telemetry object is not provided', () => {
649
- const paramsWithoutTelemetry = { ...baseParams };
650
- delete paramsWithoutTelemetry.telemetry;
651
- const config = new Config(paramsWithoutTelemetry);
652
- expect(config.getTelemetryOtlpProtocol()).toBe('grpc');
653
- });
654
- });
655
- describe('UseRipgrep Configuration', () => {
656
- it('should default useRipgrep to true when not provided', () => {
657
- const config = new Config(baseParams);
658
- expect(config.getUseRipgrep()).toBe(true);
659
- });
660
- it('should set useRipgrep to false when provided as false', () => {
661
- const paramsWithRipgrep = {
662
- ...baseParams,
663
- useRipgrep: false,
664
- };
665
- const config = new Config(paramsWithRipgrep);
666
- expect(config.getUseRipgrep()).toBe(false);
667
- });
668
- it('should set useRipgrep to true when explicitly provided as true', () => {
669
- const paramsWithRipgrep = {
670
- ...baseParams,
671
- useRipgrep: true,
672
- };
673
- const config = new Config(paramsWithRipgrep);
674
- expect(config.getUseRipgrep()).toBe(true);
675
- });
676
- it('should default useRipgrep to true when undefined', () => {
677
- const paramsWithUndefinedRipgrep = {
678
- ...baseParams,
679
- useRipgrep: undefined,
680
- };
681
- const config = new Config(paramsWithUndefinedRipgrep);
682
- expect(config.getUseRipgrep()).toBe(true);
683
- });
684
- });
685
- describe('UseWriteTodos Configuration', () => {
686
- it('should default useWriteTodos to true when not provided', () => {
687
- const config = new Config(baseParams);
688
- expect(config.getUseWriteTodos()).toBe(true);
689
- });
690
- it('should set useWriteTodos to false when provided as false', () => {
691
- const params = {
692
- ...baseParams,
693
- useWriteTodos: false,
694
- };
695
- const config = new Config(params);
696
- expect(config.getUseWriteTodos()).toBe(false);
697
- });
698
- it('should disable useWriteTodos for preview models', () => {
699
- const params = {
700
- ...baseParams,
701
- model: 'gemini-3-pro-preview',
702
- };
703
- const config = new Config(params);
704
- expect(config.getUseWriteTodos()).toBe(false);
705
- });
706
- it('should NOT disable useWriteTodos for non-preview models', () => {
707
- const params = {
708
- ...baseParams,
709
- model: 'gemini-2.5-pro',
710
- };
711
- const config = new Config(params);
712
- expect(config.getUseWriteTodos()).toBe(true);
713
- });
714
- });
715
- describe('Event Driven Scheduler Configuration', () => {
716
- it('should default enableEventDrivenScheduler to true when not provided', () => {
717
- const config = new Config(baseParams);
718
- expect(config.isEventDrivenSchedulerEnabled()).toBe(true);
719
- });
720
- it('should set enableEventDrivenScheduler to false when provided as false', () => {
721
- const params = {
722
- ...baseParams,
723
- enableEventDrivenScheduler: false,
724
- };
725
- const config = new Config(params);
726
- expect(config.isEventDrivenSchedulerEnabled()).toBe(false);
727
- });
728
- });
729
- describe('Shell Tool Inactivity Timeout', () => {
730
- it('should default to 300000ms (300 seconds) when not provided', () => {
731
- const config = new Config(baseParams);
732
- expect(config.getShellToolInactivityTimeout()).toBe(300000);
733
- });
734
- it('should convert provided seconds to milliseconds', () => {
735
- const params = {
736
- ...baseParams,
737
- shellToolInactivityTimeout: 10, // 10 seconds
738
- };
739
- const config = new Config(params);
740
- expect(config.getShellToolInactivityTimeout()).toBe(10000);
741
- });
742
- });
743
- describe('ContinueOnFailedApiCall Configuration', () => {
744
- it('should default continueOnFailedApiCall to false when not provided', () => {
745
- const config = new Config(baseParams);
746
- expect(config.getContinueOnFailedApiCall()).toBe(true);
747
- });
748
- it('should set continueOnFailedApiCall to true when provided as true', () => {
749
- const paramsWithContinueOnFailedApiCall = {
750
- ...baseParams,
751
- continueOnFailedApiCall: true,
752
- };
753
- const config = new Config(paramsWithContinueOnFailedApiCall);
754
- expect(config.getContinueOnFailedApiCall()).toBe(true);
755
- });
756
- it('should set continueOnFailedApiCall to false when explicitly provided as false', () => {
757
- const paramsWithContinueOnFailedApiCall = {
758
- ...baseParams,
759
- continueOnFailedApiCall: false,
760
- };
761
- const config = new Config(paramsWithContinueOnFailedApiCall);
762
- expect(config.getContinueOnFailedApiCall()).toBe(false);
763
- });
764
- });
765
- describe('createToolRegistry', () => {
766
- it('should register a tool if coreTools contains an argument-specific pattern', async () => {
767
- const params = {
768
- ...baseParams,
769
- coreTools: ['ShellTool(git status)'],
770
- };
771
- const config = new Config(params);
772
- await config.initialize();
773
- // The ToolRegistry class is mocked, so we can inspect its prototype's methods.
774
- const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
775
- // Check that registerTool was called for ShellTool
776
- const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
777
- expect(wasShellToolRegistered).toBe(true);
778
- // Check that registerTool was NOT called for ReadFileTool
779
- const wasReadFileToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ReadFileTool));
780
- expect(wasReadFileToolRegistered).toBe(false);
781
- });
782
- it('should register subagents as tools when agents.overrides.codebase_investigator.enabled is true', async () => {
783
- const params = {
784
- ...baseParams,
785
- agents: {
786
- overrides: {
787
- codebase_investigator: { enabled: true },
788
- },
789
- },
790
- };
791
- const config = new Config(params);
792
- const mockAgentDefinition = {
793
- name: 'codebase-investigator',
794
- description: 'Agent 1',
795
- instructions: 'Inst 1',
796
- };
797
- const AgentRegistryMock = (await vi.importMock('../agents/registry.js')).AgentRegistry;
798
- AgentRegistryMock.prototype.getDefinition.mockReturnValue(mockAgentDefinition);
799
- AgentRegistryMock.prototype.getAllDefinitions.mockReturnValue([
800
- mockAgentDefinition,
801
- ]);
802
- const SubAgentToolMock = (await vi.importMock('../agents/subagent-tool.js')).SubagentTool;
803
- await config.initialize();
804
- const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
805
- expect(SubAgentToolMock).toHaveBeenCalledTimes(1);
806
- expect(SubAgentToolMock).toHaveBeenCalledWith(expect.anything(), // AgentRegistry
807
- config, expect.anything());
808
- const calls = registerToolMock.mock.calls;
809
- const registeredWrappers = calls.filter((call) => call[0] instanceof SubAgentToolMock);
810
- expect(registeredWrappers).toHaveLength(1);
811
- });
812
- it('should not register subagents as tools when agents are disabled', async () => {
813
- const params = {
814
- ...baseParams,
815
- agents: {
816
- overrides: {
817
- codebase_investigator: { enabled: false },
818
- cli_help: { enabled: false },
819
- },
820
- },
821
- };
822
- const config = new Config(params);
823
- const SubAgentToolMock = (await vi.importMock('../agents/subagent-tool.js')).SubagentTool;
824
- await config.initialize();
825
- expect(SubAgentToolMock).not.toHaveBeenCalled();
826
- });
827
- describe('with minified tool class names', () => {
828
- beforeEach(() => {
829
- Object.defineProperty(vi.mocked(ShellTool).prototype.constructor, 'name', {
830
- value: '_ShellTool',
831
- configurable: true,
832
- });
833
- });
834
- afterEach(() => {
835
- Object.defineProperty(vi.mocked(ShellTool).prototype.constructor, 'name', {
836
- value: 'ShellTool',
837
- });
838
- });
839
- it('should register a tool if coreTools contains the non-minified class name', async () => {
840
- const params = {
841
- ...baseParams,
842
- coreTools: ['ShellTool'],
843
- };
844
- const config = new Config(params);
845
- await config.initialize();
846
- const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
847
- const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
848
- expect(wasShellToolRegistered).toBe(true);
849
- });
850
- it('should register a tool if coreTools contains an argument-specific pattern with the non-minified class name', async () => {
851
- const params = {
852
- ...baseParams,
853
- coreTools: ['ShellTool(git status)'],
854
- };
855
- const config = new Config(params);
856
- await config.initialize();
857
- const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
858
- const wasShellToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ShellTool));
859
- expect(wasShellToolRegistered).toBe(true);
860
- });
861
- });
862
- });
863
- describe('getTruncateToolOutputThreshold', () => {
864
- beforeEach(() => {
865
- vi.clearAllMocks();
866
- });
867
- it('should return the calculated threshold when it is smaller than the default', () => {
868
- const config = new Config(baseParams);
869
- vi.mocked(tokenLimit).mockReturnValue(32000);
870
- vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(1000);
871
- // 4 * (32000 - 1000) = 4 * 31000 = 124000
872
- // default is 4_000_000
873
- expect(config.getTruncateToolOutputThreshold()).toBe(124000);
874
- });
875
- it('should return the default threshold when the calculated value is larger', () => {
876
- const config = new Config(baseParams);
877
- vi.mocked(tokenLimit).mockReturnValue(2_000_000);
878
- vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(500_000);
879
- // 4 * (2_000_000 - 500_000) = 4 * 1_500_000 = 6_000_000
880
- // default is 4_000_000
881
- expect(config.getTruncateToolOutputThreshold()).toBe(4_000_000);
882
- });
883
- it('should use a custom truncateToolOutputThreshold if provided', () => {
884
- const customParams = {
885
- ...baseParams,
886
- truncateToolOutputThreshold: 50000,
887
- };
888
- const config = new Config(customParams);
889
- vi.mocked(tokenLimit).mockReturnValue(8000);
890
- vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(2000);
891
- // 4 * (8000 - 2000) = 4 * 6000 = 24000
892
- // custom threshold is 50000
893
- expect(config.getTruncateToolOutputThreshold()).toBe(24000);
894
- vi.mocked(tokenLimit).mockReturnValue(32000);
895
- vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(1000);
896
- // 4 * (32000 - 1000) = 124000
897
- // custom threshold is 50000
898
- expect(config.getTruncateToolOutputThreshold()).toBe(50000);
899
- });
900
- });
901
- describe('Proxy Configuration Error Handling', () => {
902
- beforeEach(() => {
903
- vi.clearAllMocks();
904
- });
905
- it('should call setGlobalProxy when proxy is configured', () => {
906
- const paramsWithProxy = {
907
- ...baseParams,
908
- proxy: 'http://proxy.example.com:8080',
909
- };
910
- new Config(paramsWithProxy);
911
- expect(mockSetGlobalProxy).toHaveBeenCalledWith('http://proxy.example.com:8080');
912
- });
913
- it('should not call setGlobalProxy when proxy is not configured', () => {
914
- new Config(baseParams);
915
- expect(mockSetGlobalProxy).not.toHaveBeenCalled();
916
- });
917
- it('should emit error feedback when setGlobalProxy throws an error', () => {
918
- const proxyError = new Error('Invalid proxy URL');
919
- mockSetGlobalProxy.mockImplementation(() => {
920
- throw proxyError;
921
- });
922
- const paramsWithProxy = {
923
- ...baseParams,
924
- proxy: 'invalid-proxy',
925
- };
926
- new Config(paramsWithProxy);
927
- expect(mockCoreEvents.emitFeedback).toHaveBeenCalledWith('error', 'Invalid proxy configuration detected. Check debug drawer for more details (F12)', proxyError);
928
- });
929
- it('should not emit error feedback when setGlobalProxy succeeds', () => {
930
- mockSetGlobalProxy.mockImplementation(() => {
931
- // Success - no error thrown
932
- });
933
- const paramsWithProxy = {
934
- ...baseParams,
935
- proxy: 'http://proxy.example.com:8080',
936
- };
937
- new Config(paramsWithProxy);
938
- expect(mockCoreEvents.emitFeedback).not.toHaveBeenCalled();
939
- });
940
- });
941
- });
942
- describe('setApprovalMode with folder trust', () => {
943
- const baseParams = {
944
- sessionId: 'test',
945
- targetDir: '.',
946
- debugMode: false,
947
- model: 'test-model',
948
- cwd: '.',
949
- };
950
- it('should throw an error when setting YOLO mode in an untrusted folder', () => {
951
- const config = new Config(baseParams);
952
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
953
- expect(() => config.setApprovalMode(ApprovalMode.YOLO)).toThrow('Cannot enable privileged approval modes in an untrusted folder.');
954
- });
955
- it('should throw an error when setting AUTO_EDIT mode in an untrusted folder', () => {
956
- const config = new Config(baseParams);
957
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
958
- expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).toThrow('Cannot enable privileged approval modes in an untrusted folder.');
959
- });
960
- it('should NOT throw an error when setting DEFAULT mode in an untrusted folder', () => {
961
- const config = new Config(baseParams);
962
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
963
- expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
964
- });
965
- it('should NOT throw an error when setting any mode in a trusted folder', () => {
966
- const config = new Config(baseParams);
967
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
968
- expect(() => config.setApprovalMode(ApprovalMode.YOLO)).not.toThrow();
969
- expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
970
- expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
971
- });
972
- it('should NOT throw an error when setting any mode if trustedFolder is undefined', () => {
973
- const config = new Config(baseParams);
974
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true); // isTrustedFolder defaults to true
975
- expect(() => config.setApprovalMode(ApprovalMode.YOLO)).not.toThrow();
976
- expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
977
- expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
978
- });
979
- it('should update system instruction when entering Plan mode', () => {
980
- const config = new Config(baseParams);
981
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
982
- const updateSpy = vi.spyOn(config, 'updateSystemInstructionIfInitialized');
983
- config.setApprovalMode(ApprovalMode.PLAN);
984
- expect(updateSpy).toHaveBeenCalled();
985
- });
986
- it('should update system instruction when leaving Plan mode', () => {
987
- const config = new Config({
988
- ...baseParams,
989
- approvalMode: ApprovalMode.PLAN,
990
- });
991
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
992
- const updateSpy = vi.spyOn(config, 'updateSystemInstructionIfInitialized');
993
- config.setApprovalMode(ApprovalMode.DEFAULT);
994
- expect(updateSpy).toHaveBeenCalled();
995
- });
996
- it('should not update system instruction when switching between non-Plan modes', () => {
997
- const config = new Config(baseParams);
998
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
999
- const updateSpy = vi.spyOn(config, 'updateSystemInstructionIfInitialized');
1000
- config.setApprovalMode(ApprovalMode.AUTO_EDIT);
1001
- expect(updateSpy).not.toHaveBeenCalled();
1002
- });
1003
- describe('registerCoreTools', () => {
1004
- beforeEach(() => {
1005
- vi.clearAllMocks();
1006
- });
1007
- it('should register RipGrepTool when useRipgrep is true and it is available', async () => {
1008
- canUseRipgrep.mockResolvedValue(true);
1009
- const config = new Config({ ...baseParams, useRipgrep: true });
1010
- await config.initialize();
1011
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1012
- const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
1013
- const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
1014
- expect(wasRipGrepRegistered).toBe(true);
1015
- expect(wasGrepRegistered).toBe(false);
1016
- expect(logRipgrepFallback).not.toHaveBeenCalled();
1017
- });
1018
- it('should register GrepTool as a fallback when useRipgrep is true but it is not available', async () => {
1019
- canUseRipgrep.mockResolvedValue(false);
1020
- const config = new Config({ ...baseParams, useRipgrep: true });
1021
- await config.initialize();
1022
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1023
- const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
1024
- const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
1025
- expect(wasRipGrepRegistered).toBe(false);
1026
- expect(wasGrepRegistered).toBe(true);
1027
- expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
1028
- const event = logRipgrepFallback.mock.calls[0][1];
1029
- expect(event.error).toBeUndefined();
1030
- });
1031
- it('should register GrepTool as a fallback when canUseRipgrep throws an error', async () => {
1032
- const error = new Error('ripGrep check failed');
1033
- canUseRipgrep.mockRejectedValue(error);
1034
- const config = new Config({ ...baseParams, useRipgrep: true });
1035
- await config.initialize();
1036
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1037
- const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
1038
- const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
1039
- expect(wasRipGrepRegistered).toBe(false);
1040
- expect(wasGrepRegistered).toBe(true);
1041
- expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
1042
- const event = logRipgrepFallback.mock.calls[0][1];
1043
- expect(event.error).toBe(String(error));
1044
- });
1045
- it('should register GrepTool when useRipgrep is false', async () => {
1046
- const config = new Config({ ...baseParams, useRipgrep: false });
1047
- await config.initialize();
1048
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1049
- const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
1050
- const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
1051
- expect(wasRipGrepRegistered).toBe(false);
1052
- expect(wasGrepRegistered).toBe(true);
1053
- expect(canUseRipgrep).not.toHaveBeenCalled();
1054
- expect(logRipgrepFallback).not.toHaveBeenCalled();
1055
- });
1056
- });
1057
- });
1058
- describe('isYoloModeDisabled', () => {
1059
- const baseParams = {
1060
- sessionId: 'test',
1061
- targetDir: '.',
1062
- debugMode: false,
1063
- model: 'test-model',
1064
- cwd: '.',
1065
- };
1066
- it('should return false when yolo mode is not disabled and folder is trusted', () => {
1067
- const config = new Config(baseParams);
1068
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
1069
- expect(config.isYoloModeDisabled()).toBe(false);
1070
- });
1071
- it('should return true when yolo mode is disabled by parameter', () => {
1072
- const config = new Config({ ...baseParams, disableYoloMode: true });
1073
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
1074
- expect(config.isYoloModeDisabled()).toBe(true);
1075
- });
1076
- it('should return true when folder is untrusted', () => {
1077
- const config = new Config(baseParams);
1078
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
1079
- expect(config.isYoloModeDisabled()).toBe(true);
1080
- });
1081
- it('should return true when yolo is disabled and folder is untrusted', () => {
1082
- const config = new Config({ ...baseParams, disableYoloMode: true });
1083
- vi.spyOn(config, 'isTrustedFolder').mockReturnValue(false);
1084
- expect(config.isYoloModeDisabled()).toBe(true);
1085
- });
1086
- });
1087
- describe('BaseLlmClient Lifecycle', () => {
1088
- const MODEL = 'gemini-pro';
1089
- const SANDBOX = {
1090
- command: 'docker',
1091
- image: 'gemini-cli-sandbox',
1092
- };
1093
- const TARGET_DIR = '/path/to/target';
1094
- const DEBUG_MODE = false;
1095
- const QUESTION = 'test question';
1096
- const USER_MEMORY = 'Test User Memory';
1097
- const TELEMETRY_SETTINGS = { enabled: false };
1098
- const EMBEDDING_MODEL = 'gemini-embedding';
1099
- const SESSION_ID = 'test-session-id';
1100
- const baseParams = {
1101
- cwd: '/tmp',
1102
- embeddingModel: EMBEDDING_MODEL,
1103
- sandbox: SANDBOX,
1104
- targetDir: TARGET_DIR,
1105
- debugMode: DEBUG_MODE,
1106
- question: QUESTION,
1107
- userMemory: USER_MEMORY,
1108
- telemetry: TELEMETRY_SETTINGS,
1109
- sessionId: SESSION_ID,
1110
- model: MODEL,
1111
- usageStatisticsEnabled: false,
1112
- };
1113
- it('should throw an error if getBaseLlmClient is called before refreshAuth', () => {
1114
- const config = new Config(baseParams);
1115
- expect(() => config.getBaseLlmClient()).toThrow('BaseLlmClient not initialized. Ensure authentication has occurred and ContentGenerator is ready.');
1116
- });
1117
- it('should successfully initialize BaseLlmClient after refreshAuth is called', async () => {
1118
- const config = new Config(baseParams);
1119
- const authType = AuthType.USE_GEMINI;
1120
- const mockContentConfig = { model: 'gemini-flash', apiKey: 'test-key' };
1121
- vi.mocked(createContentGeneratorConfig).mockResolvedValue(mockContentConfig);
1122
- await config.refreshAuth(authType);
1123
- // Should not throw
1124
- const llmService = config.getBaseLlmClient();
1125
- expect(llmService).toBeDefined();
1126
- expect(BaseLlmClient).toHaveBeenCalledWith(config.getContentGenerator(), config);
1127
- });
1128
- });
1129
- describe('Generation Config Merging (HACK)', () => {
1130
- const MODEL = 'gemini-pro';
1131
- const SANDBOX = {
1132
- command: 'docker',
1133
- image: 'gemini-cli-sandbox',
1134
- };
1135
- const TARGET_DIR = '/path/to/target';
1136
- const DEBUG_MODE = false;
1137
- const QUESTION = 'test question';
1138
- const USER_MEMORY = 'Test User Memory';
1139
- const TELEMETRY_SETTINGS = { enabled: false };
1140
- const EMBEDDING_MODEL = 'gemini-embedding';
1141
- const SESSION_ID = 'test-session-id';
1142
- const baseParams = {
1143
- cwd: '/tmp',
1144
- embeddingModel: EMBEDDING_MODEL,
1145
- sandbox: SANDBOX,
1146
- targetDir: TARGET_DIR,
1147
- debugMode: DEBUG_MODE,
1148
- question: QUESTION,
1149
- userMemory: USER_MEMORY,
1150
- telemetry: TELEMETRY_SETTINGS,
1151
- sessionId: SESSION_ID,
1152
- model: MODEL,
1153
- usageStatisticsEnabled: false,
1154
- };
1155
- it('should merge default aliases when user provides only overrides', () => {
1156
- const userOverrides = [
1157
- {
1158
- match: { model: 'test-model' },
1159
- modelConfig: { generateContentConfig: { temperature: 0.1 } },
1160
- },
1161
- ];
1162
- const params = {
1163
- ...baseParams,
1164
- modelConfigServiceConfig: {
1165
- overrides: userOverrides,
1166
- },
1167
- };
1168
- const config = new Config(params);
1169
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1170
- const serviceConfig = config.modelConfigService.config;
1171
- // Assert that the default aliases are present
1172
- expect(serviceConfig.aliases).toEqual(DEFAULT_MODEL_CONFIGS.aliases);
1173
- // Assert that the user's overrides are present
1174
- expect(serviceConfig.overrides).toEqual(userOverrides);
1175
- });
1176
- it('should merge default overrides when user provides only aliases', () => {
1177
- const userAliases = {
1178
- 'my-alias': {
1179
- modelConfig: { model: 'my-model' },
1180
- },
1181
- };
1182
- const params = {
1183
- ...baseParams,
1184
- modelConfigServiceConfig: {
1185
- aliases: userAliases,
1186
- },
1187
- };
1188
- const config = new Config(params);
1189
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1190
- const serviceConfig = config.modelConfigService.config;
1191
- // Assert that the user's aliases are present
1192
- expect(serviceConfig.aliases).toEqual(userAliases);
1193
- // Assert that the default overrides are present
1194
- expect(serviceConfig.overrides).toEqual(DEFAULT_MODEL_CONFIGS.overrides);
1195
- });
1196
- it('should use user-provided aliases if they exist', () => {
1197
- const userAliases = {
1198
- 'my-alias': {
1199
- modelConfig: { model: 'my-model' },
1200
- },
1201
- };
1202
- const params = {
1203
- ...baseParams,
1204
- modelConfigServiceConfig: {
1205
- aliases: userAliases,
1206
- },
1207
- };
1208
- const config = new Config(params);
1209
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1210
- const serviceConfig = config.modelConfigService.config;
1211
- // Assert that the user's aliases are used, not the defaults
1212
- expect(serviceConfig.aliases).toEqual(userAliases);
1213
- });
1214
- it('should use default generation config if none is provided', () => {
1215
- const params = { ...baseParams };
1216
- const config = new Config(params);
1217
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1218
- const serviceConfig = config.modelConfigService.config;
1219
- // Assert that the full default config is used
1220
- expect(serviceConfig).toEqual(DEFAULT_MODEL_CONFIGS);
1221
- });
1222
- });
1223
- describe('Config getHooks', () => {
1224
- const baseParams = {
1225
- cwd: '/tmp',
1226
- targetDir: '/path/to/target',
1227
- debugMode: false,
1228
- sessionId: 'test-session-id',
1229
- model: 'gemini-pro',
1230
- usageStatisticsEnabled: false,
1231
- };
1232
- it('should return undefined when no hooks are provided', () => {
1233
- const config = new Config(baseParams);
1234
- expect(config.getHooks()).toBeUndefined();
1235
- });
1236
- it('should return empty object when empty hooks are provided', () => {
1237
- const configWithEmptyHooks = new Config({
1238
- ...baseParams,
1239
- hooks: {},
1240
- });
1241
- expect(configWithEmptyHooks.getHooks()).toEqual({});
1242
- });
1243
- it('should return the hooks configuration when provided', () => {
1244
- const mockHooks = {
1245
- BeforeTool: [
1246
- {
1247
- hooks: [{ type: HookType.Command, command: 'echo 1' }],
1248
- },
1249
- ],
1250
- };
1251
- const config = new Config({ ...baseParams, hooks: mockHooks });
1252
- const retrievedHooks = config.getHooks();
1253
- expect(retrievedHooks).toEqual(mockHooks);
1254
- });
1255
- it('should return hooks with all supported event types', () => {
1256
- const allEventHooks = {
1257
- [HookEventName.BeforeAgent]: [
1258
- { hooks: [{ type: HookType.Command, command: 'test1' }] },
1259
- ],
1260
- [HookEventName.AfterAgent]: [
1261
- { hooks: [{ type: HookType.Command, command: 'test2' }] },
1262
- ],
1263
- [HookEventName.BeforeTool]: [
1264
- { hooks: [{ type: HookType.Command, command: 'test3' }] },
1265
- ],
1266
- [HookEventName.AfterTool]: [
1267
- { hooks: [{ type: HookType.Command, command: 'test4' }] },
1268
- ],
1269
- [HookEventName.BeforeModel]: [
1270
- { hooks: [{ type: HookType.Command, command: 'test5' }] },
1271
- ],
1272
- [HookEventName.AfterModel]: [
1273
- { hooks: [{ type: HookType.Command, command: 'test6' }] },
1274
- ],
1275
- [HookEventName.BeforeToolSelection]: [
1276
- { hooks: [{ type: HookType.Command, command: 'test7' }] },
1277
- ],
1278
- [HookEventName.Notification]: [
1279
- { hooks: [{ type: HookType.Command, command: 'test8' }] },
1280
- ],
1281
- [HookEventName.SessionStart]: [
1282
- { hooks: [{ type: HookType.Command, command: 'test9' }] },
1283
- ],
1284
- [HookEventName.SessionEnd]: [
1285
- { hooks: [{ type: HookType.Command, command: 'test10' }] },
1286
- ],
1287
- [HookEventName.PreCompress]: [
1288
- { hooks: [{ type: HookType.Command, command: 'test11' }] },
1289
- ],
1290
- };
1291
- const config = new Config({
1292
- ...baseParams,
1293
- hooks: allEventHooks,
1294
- });
1295
- const retrievedHooks = config.getHooks();
1296
- expect(retrievedHooks).toEqual(allEventHooks);
1297
- expect(Object.keys(retrievedHooks)).toHaveLength(11); // All hook event types
1298
- });
1299
- describe('setModel', () => {
1300
- it('should allow setting a pro (any) model and reset availability', () => {
1301
- const config = new Config(baseParams);
1302
- const service = config.getModelAvailabilityService();
1303
- const spy = vi.spyOn(service, 'reset');
1304
- const proModel = 'gemini-2.5-pro';
1305
- config.setModel(proModel);
1306
- expect(config.getModel()).toBe(proModel);
1307
- expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith(proModel);
1308
- expect(spy).toHaveBeenCalled();
1309
- });
1310
- it('should allow setting auto model from non-auto model and reset availability', () => {
1311
- const config = new Config(baseParams);
1312
- const service = config.getModelAvailabilityService();
1313
- const spy = vi.spyOn(service, 'reset');
1314
- config.setModel('auto');
1315
- expect(config.getModel()).toBe('auto');
1316
- expect(mockCoreEvents.emitModelChanged).toHaveBeenCalledWith('auto');
1317
- expect(spy).toHaveBeenCalled();
1318
- });
1319
- it('should allow setting auto model from auto model and reset availability', () => {
1320
- const config = new Config({
1321
- cwd: '/tmp',
1322
- targetDir: '/path/to/target',
1323
- debugMode: false,
1324
- sessionId: 'test-session-id',
1325
- model: 'auto',
1326
- usageStatisticsEnabled: false,
1327
- });
1328
- const service = config.getModelAvailabilityService();
1329
- const spy = vi.spyOn(service, 'reset');
1330
- config.setModel('auto');
1331
- expect(config.getModel()).toBe('auto');
1332
- expect(spy).toHaveBeenCalled();
1333
- });
1334
- it('should reset active model when setModel is called with the current model after a fallback', () => {
1335
- const config = new Config(baseParams);
1336
- const originalModel = config.getModel();
1337
- const fallbackModel = 'fallback-model';
1338
- config.setActiveModel(fallbackModel);
1339
- expect(config.getActiveModel()).toBe(fallbackModel);
1340
- config.setModel(originalModel);
1341
- expect(config.getModel()).toBe(originalModel);
1342
- expect(config.getActiveModel()).toBe(originalModel);
1343
- });
1344
- it('should call onModelChange when a new model is set and should persist', () => {
1345
- const onModelChange = vi.fn();
1346
- const config = new Config({
1347
- ...baseParams,
1348
- onModelChange,
1349
- });
1350
- config.setModel(DEFAULT_GEMINI_MODEL, false);
1351
- expect(onModelChange).toHaveBeenCalledWith(DEFAULT_GEMINI_MODEL);
1352
- });
1353
- it('should NOT call onModelChange when a new model is temporary', () => {
1354
- const onModelChange = vi.fn();
1355
- const config = new Config({
1356
- ...baseParams,
1357
- onModelChange,
1358
- });
1359
- config.setModel(DEFAULT_GEMINI_MODEL, true);
1360
- expect(onModelChange).not.toHaveBeenCalled();
1361
- });
1362
- });
1363
- });
1364
- describe('Config getExperiments', () => {
1365
- const baseParams = {
1366
- cwd: '/tmp',
1367
- targetDir: '/path/to/target',
1368
- debugMode: false,
1369
- sessionId: 'test-session-id',
1370
- model: 'gemini-pro',
1371
- usageStatisticsEnabled: false,
1372
- };
1373
- it('should return undefined when no experiments are provided', () => {
1374
- const config = new Config(baseParams);
1375
- expect(config.getExperiments()).toBeUndefined();
1376
- });
1377
- it('should return empty object when empty experiments are provided', () => {
1378
- const configWithEmptyExps = new Config({
1379
- ...baseParams,
1380
- experiments: { flags: {}, experimentIds: [] },
1381
- });
1382
- expect(configWithEmptyExps.getExperiments()).toEqual({
1383
- flags: {},
1384
- experimentIds: [],
1385
- });
1386
- });
1387
- it('should return the experiments configuration when provided', () => {
1388
- const mockExps = {
1389
- flags: {
1390
- testFlag: { boolValue: true },
1391
- },
1392
- experimentIds: [],
1393
- };
1394
- const config = new Config({
1395
- ...baseParams,
1396
- experiments: mockExps,
1397
- });
1398
- const retrievedExps = config.getExperiments();
1399
- expect(retrievedExps).toEqual(mockExps);
1400
- expect(retrievedExps).toBe(mockExps); // Should return the same reference
1401
- });
1402
- });
1403
- describe('Config setExperiments logging', () => {
1404
- const baseParams = {
1405
- cwd: '/tmp',
1406
- targetDir: '/path/to/target',
1407
- debugMode: false,
1408
- sessionId: 'test-session-id',
1409
- model: 'gemini-pro',
1410
- usageStatisticsEnabled: false,
1411
- };
1412
- it('logs a sorted, non-truncated summary of experiments when they are set', () => {
1413
- const config = new Config(baseParams);
1414
- const debugSpy = vi
1415
- .spyOn(debugLogger, 'debug')
1416
- .mockImplementation(() => { });
1417
- const experiments = {
1418
- flags: {
1419
- ZetaFlag: {
1420
- boolValue: true,
1421
- stringValue: 'zeta',
1422
- int32ListValue: { values: [1, 2] },
1423
- },
1424
- AlphaFlag: {
1425
- boolValue: false,
1426
- stringValue: 'alpha',
1427
- stringListValue: { values: ['a', 'b', 'c'] },
1428
- },
1429
- MiddleFlag: {
1430
- // Intentionally sparse to ensure undefined values are omitted
1431
- floatValue: 0.42,
1432
- int32ListValue: { values: [] },
1433
- },
1434
- },
1435
- experimentIds: [101, 99],
1436
- };
1437
- config.setExperiments(experiments);
1438
- const logCall = debugSpy.mock.calls.find(([message]) => message === 'Experiments loaded');
1439
- expect(logCall).toBeDefined();
1440
- const loggedSummary = logCall?.[1];
1441
- expect(typeof loggedSummary).toBe('string');
1442
- expect(loggedSummary).toContain('experimentIds');
1443
- expect(loggedSummary).toContain('101');
1444
- expect(loggedSummary).toContain('AlphaFlag');
1445
- expect(loggedSummary).toContain('ZetaFlag');
1446
- const alphaIndex = loggedSummary.indexOf('AlphaFlag');
1447
- const zetaIndex = loggedSummary.indexOf('ZetaFlag');
1448
- expect(alphaIndex).toBeGreaterThan(-1);
1449
- expect(zetaIndex).toBeGreaterThan(-1);
1450
- expect(alphaIndex).toBeLessThan(zetaIndex);
1451
- expect(loggedSummary).toContain('\n');
1452
- expect(loggedSummary).not.toContain('stringListLength: 0');
1453
- expect(loggedSummary).not.toContain('int32ListLength: 0');
1454
- debugSpy.mockRestore();
1455
- });
1456
- });
1457
- describe('Availability Service Integration', () => {
1458
- const baseModel = 'test-model';
1459
- const baseParams = {
1460
- sessionId: 'test',
1461
- targetDir: '.',
1462
- debugMode: false,
1463
- model: baseModel,
1464
- cwd: '.',
1465
- };
1466
- it('setActiveModel updates active model', async () => {
1467
- const config = new Config(baseParams);
1468
- const model1 = 'model1';
1469
- const model2 = 'model2';
1470
- config.setActiveModel(model1);
1471
- expect(config.getActiveModel()).toBe(model1);
1472
- config.setActiveModel(model2);
1473
- expect(config.getActiveModel()).toBe(model2);
1474
- });
1475
- it('getActiveModel defaults to configured model if not set', () => {
1476
- const config = new Config(baseParams);
1477
- expect(config.getActiveModel()).toBe(baseModel);
1478
- });
1479
- it('resetTurn delegates to availability service', () => {
1480
- const config = new Config(baseParams);
1481
- const service = config.getModelAvailabilityService();
1482
- const spy = vi.spyOn(service, 'resetTurn');
1483
- config.resetTurn();
1484
- expect(spy).toHaveBeenCalled();
1485
- });
1486
- });
1487
- describe('Hooks configuration', () => {
1488
- const baseParams = {
1489
- sessionId: 'test',
1490
- targetDir: '.',
1491
- debugMode: false,
1492
- model: 'test-model',
1493
- cwd: '.',
1494
- disabledHooks: ['initial-hook'],
1495
- };
1496
- it('updateDisabledHooks should update the disabled list', () => {
1497
- const config = new Config(baseParams);
1498
- expect(config.getDisabledHooks()).toEqual(['initial-hook']);
1499
- const newDisabled = ['new-hook-1', 'new-hook-2'];
1500
- config.updateDisabledHooks(newDisabled);
1501
- expect(config.getDisabledHooks()).toEqual(['new-hook-1', 'new-hook-2']);
1502
- });
1503
- it('updateDisabledHooks should only update disabled list and not definitions', () => {
1504
- const initialHooks = {
1505
- BeforeAgent: [
1506
- {
1507
- hooks: [{ type: HookType.Command, command: 'initial' }],
1508
- },
1509
- ],
1510
- };
1511
- const config = new Config({ ...baseParams, hooks: initialHooks });
1512
- config.updateDisabledHooks(['some-hook']);
1513
- expect(config.getDisabledHooks()).toEqual(['some-hook']);
1514
- expect(config.getHooks()).toEqual(initialHooks);
1515
- });
1516
- });
1517
- describe('Config Quota & Preview Model Access', () => {
1518
- let config;
1519
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1520
- let mockCodeAssistServer;
1521
- const baseParams = {
1522
- cwd: '/tmp',
1523
- targetDir: '/tmp',
1524
- debugMode: false,
1525
- sessionId: 'test-session',
1526
- model: 'gemini-pro',
1527
- usageStatisticsEnabled: false,
1528
- embeddingModel: 'gemini-embedding',
1529
- sandbox: {
1530
- command: 'docker',
1531
- image: 'gemini-cli-sandbox',
1532
- },
1533
- };
1534
- beforeEach(() => {
1535
- vi.clearAllMocks();
1536
- mockCodeAssistServer = {
1537
- projectId: 'test-project',
1538
- retrieveUserQuota: vi.fn(),
1539
- };
1540
- vi.mocked(getCodeAssistServer).mockReturnValue(mockCodeAssistServer);
1541
- config = new Config(baseParams);
1542
- });
1543
- describe('refreshUserQuota', () => {
1544
- it('should update hasAccessToPreviewModel to true if quota includes preview model', async () => {
1545
- mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1546
- buckets: [{ modelId: PREVIEW_GEMINI_MODEL }],
1547
- });
1548
- await config.refreshUserQuota();
1549
- expect(config.getHasAccessToPreviewModel()).toBe(true);
1550
- });
1551
- it('should update hasAccessToPreviewModel to false if quota does not include preview model', async () => {
1552
- mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1553
- buckets: [{ modelId: 'some-other-model' }],
1554
- });
1555
- await config.refreshUserQuota();
1556
- expect(config.getHasAccessToPreviewModel()).toBe(false);
1557
- });
1558
- it('should update hasAccessToPreviewModel to false if buckets are undefined', async () => {
1559
- mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({});
1560
- await config.refreshUserQuota();
1561
- expect(config.getHasAccessToPreviewModel()).toBe(false);
1562
- });
1563
- it('should return undefined and not update if codeAssistServer is missing', async () => {
1564
- vi.mocked(getCodeAssistServer).mockReturnValue(undefined);
1565
- const result = await config.refreshUserQuota();
1566
- expect(result).toBeUndefined();
1567
- expect(config.getHasAccessToPreviewModel()).toBe(false);
1568
- });
1569
- it('should return undefined if retrieveUserQuota fails', async () => {
1570
- mockCodeAssistServer.retrieveUserQuota.mockRejectedValue(new Error('Network error'));
1571
- const result = await config.refreshUserQuota();
1572
- expect(result).toBeUndefined();
1573
- // Should remain default (false)
1574
- expect(config.getHasAccessToPreviewModel()).toBe(false);
1575
- });
1576
- });
1577
- describe('setPreviewFeatures', () => {
1578
- it('should reset model to default auto if disabling preview features while using a preview model', () => {
1579
- config.setPreviewFeatures(true);
1580
- config.setModel(PREVIEW_GEMINI_MODEL);
1581
- config.setPreviewFeatures(false);
1582
- expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
1583
- });
1584
- it('should NOT reset model if disabling preview features while NOT using a preview model', () => {
1585
- config.setPreviewFeatures(true);
1586
- const nonPreviewModel = 'gemini-1.5-pro';
1587
- config.setModel(nonPreviewModel);
1588
- config.setPreviewFeatures(false);
1589
- expect(config.getModel()).toBe(nonPreviewModel);
1590
- });
1591
- it('should switch to preview auto model if enabling preview features while using default auto model', () => {
1592
- config.setPreviewFeatures(false);
1593
- config.setModel(DEFAULT_GEMINI_MODEL_AUTO);
1594
- config.setPreviewFeatures(true);
1595
- expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL_AUTO);
1596
- });
1597
- it('should NOT reset model if enabling preview features', () => {
1598
- config.setPreviewFeatures(false);
1599
- config.setModel(PREVIEW_GEMINI_MODEL); // Just pretending it was set somehow
1600
- config.setPreviewFeatures(true);
1601
- expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL);
1602
- });
1603
- });
1604
- describe('isPlanEnabled', () => {
1605
- it('should return false by default', () => {
1606
- const config = new Config(baseParams);
1607
- expect(config.isPlanEnabled()).toBe(false);
1608
- });
1609
- it('should return true when plan is enabled', () => {
1610
- const config = new Config({
1611
- ...baseParams,
1612
- plan: true,
1613
- });
1614
- expect(config.isPlanEnabled()).toBe(true);
1615
- });
1616
- it('should return false when plan is explicitly disabled', () => {
1617
- const config = new Config({
1618
- ...baseParams,
1619
- plan: false,
1620
- });
1621
- expect(config.isPlanEnabled()).toBe(false);
1622
- });
1623
- });
1624
- });
1625
- describe('Config JIT Initialization', () => {
1626
- let config;
1627
- let mockContextManager;
1628
- beforeEach(() => {
1629
- vi.clearAllMocks();
1630
- mockContextManager = {
1631
- refresh: vi.fn(),
1632
- getGlobalMemory: vi.fn().mockReturnValue('Global Memory'),
1633
- getEnvironmentMemory: vi
1634
- .fn()
1635
- .mockReturnValue('Environment Memory\n\nMCP Instructions'),
1636
- getLoadedPaths: vi.fn().mockReturnValue(new Set(['/path/to/GEMINI.md'])),
1637
- };
1638
- ContextManager.mockImplementation(() => mockContextManager);
1639
- });
1640
- it('should initialize ContextManager, load memory, and delegate to it when experimentalJitContext is enabled', async () => {
1641
- const params = {
1642
- sessionId: 'test-session',
1643
- targetDir: '/tmp/test',
1644
- debugMode: false,
1645
- model: 'test-model',
1646
- experimentalJitContext: true,
1647
- userMemory: 'Initial Memory',
1648
- cwd: '/tmp/test',
1649
- };
1650
- config = new Config(params);
1651
- await config.initialize();
1652
- expect(ContextManager).toHaveBeenCalledWith(config);
1653
- expect(mockContextManager.refresh).toHaveBeenCalled();
1654
- expect(config.getUserMemory()).toBe('Global Memory\n\nEnvironment Memory\n\nMCP Instructions');
1655
- // Verify state update (delegated to ContextManager)
1656
- expect(config.getGeminiMdFileCount()).toBe(1);
1657
- expect(config.getGeminiMdFilePaths()).toEqual(['/path/to/GEMINI.md']);
1658
- });
1659
- it('should NOT initialize ContextManager when experimentalJitContext is disabled', async () => {
1660
- const params = {
1661
- sessionId: 'test-session',
1662
- targetDir: '/tmp/test',
1663
- debugMode: false,
1664
- model: 'test-model',
1665
- experimentalJitContext: false,
1666
- userMemory: 'Initial Memory',
1667
- cwd: '/tmp/test',
1668
- };
1669
- config = new Config(params);
1670
- await config.initialize();
1671
- expect(ContextManager).not.toHaveBeenCalled();
1672
- expect(config.getUserMemory()).toBe('Initial Memory');
1673
- });
1674
- describe('reloadSkills', () => {
1675
- it('should refresh disabledSkills and re-register ActivateSkillTool when skills exist', async () => {
1676
- const mockOnReload = vi.fn().mockResolvedValue({
1677
- disabledSkills: ['skill2'],
1678
- });
1679
- const params = {
1680
- sessionId: 'test-session',
1681
- targetDir: '/tmp/test',
1682
- debugMode: false,
1683
- model: 'test-model',
1684
- cwd: '/tmp/test',
1685
- skillsSupport: true,
1686
- onReload: mockOnReload,
1687
- };
1688
- config = new Config(params);
1689
- await config.initialize();
1690
- const skillManager = config.getSkillManager();
1691
- const toolRegistry = config.getToolRegistry();
1692
- vi.spyOn(skillManager, 'discoverSkills').mockResolvedValue(undefined);
1693
- vi.spyOn(skillManager, 'setDisabledSkills');
1694
- vi.spyOn(toolRegistry, 'registerTool');
1695
- vi.spyOn(toolRegistry, 'unregisterTool');
1696
- const mockSkills = [{ name: 'skill1' }];
1697
- vi.spyOn(skillManager, 'getSkills').mockReturnValue(mockSkills);
1698
- await config.reloadSkills();
1699
- expect(mockOnReload).toHaveBeenCalled();
1700
- expect(skillManager.setDisabledSkills).toHaveBeenCalledWith(['skill2']);
1701
- expect(toolRegistry.registerTool).toHaveBeenCalled();
1702
- expect(toolRegistry.unregisterTool).toHaveBeenCalledWith(ACTIVATE_SKILL_TOOL_NAME);
1703
- });
1704
- it('should unregister ActivateSkillTool when no skills exist after reload', async () => {
1705
- const params = {
1706
- sessionId: 'test-session',
1707
- targetDir: '/tmp/test',
1708
- debugMode: false,
1709
- model: 'test-model',
1710
- cwd: '/tmp/test',
1711
- skillsSupport: true,
1712
- };
1713
- config = new Config(params);
1714
- await config.initialize();
1715
- const skillManager = config.getSkillManager();
1716
- const toolRegistry = config.getToolRegistry();
1717
- vi.spyOn(skillManager, 'discoverSkills').mockResolvedValue(undefined);
1718
- vi.spyOn(toolRegistry, 'registerTool');
1719
- vi.spyOn(toolRegistry, 'unregisterTool');
1720
- vi.spyOn(skillManager, 'getSkills').mockReturnValue([]);
1721
- await config.reloadSkills();
1722
- expect(toolRegistry.unregisterTool).toHaveBeenCalledWith(ACTIVATE_SKILL_TOOL_NAME);
1723
- });
1724
- it('should clear disabledSkills when onReload returns undefined for them', async () => {
1725
- const mockOnReload = vi.fn().mockResolvedValue({
1726
- disabledSkills: undefined,
1727
- });
1728
- const params = {
1729
- sessionId: 'test-session',
1730
- targetDir: '/tmp/test',
1731
- debugMode: false,
1732
- model: 'test-model',
1733
- cwd: '/tmp/test',
1734
- skillsSupport: true,
1735
- onReload: mockOnReload,
1736
- };
1737
- config = new Config(params);
1738
- // Initially set some disabled skills
1739
- // @ts-expect-error - accessing private
1740
- config.disabledSkills = ['skill1'];
1741
- await config.initialize();
1742
- const skillManager = config.getSkillManager();
1743
- vi.spyOn(skillManager, 'discoverSkills').mockResolvedValue(undefined);
1744
- vi.spyOn(skillManager, 'setDisabledSkills');
1745
- await config.reloadSkills();
1746
- expect(skillManager.setDisabledSkills).toHaveBeenCalledWith([]);
1747
- });
1748
- it('should update admin settings from onReload', async () => {
1749
- const mockOnReload = vi.fn().mockResolvedValue({
1750
- adminSkillsEnabled: false,
1751
- });
1752
- const params = {
1753
- sessionId: 'test-session',
1754
- targetDir: '/tmp/test',
1755
- debugMode: false,
1756
- model: 'test-model',
1757
- cwd: '/tmp/test',
1758
- skillsSupport: true,
1759
- onReload: mockOnReload,
1760
- };
1761
- config = new Config(params);
1762
- await config.initialize();
1763
- const skillManager = config.getSkillManager();
1764
- vi.spyOn(skillManager, 'setAdminSettings');
1765
- await config.reloadSkills();
1766
- expect(skillManager.setAdminSettings).toHaveBeenCalledWith(false);
1767
- });
1768
- });
1769
- });
1770
- describe('Plans Directory Initialization', () => {
1771
- const baseParams = {
1772
- sessionId: 'test-session',
1773
- targetDir: '/tmp/test',
1774
- debugMode: false,
1775
- model: 'test-model',
1776
- cwd: '/tmp/test',
1777
- };
1778
- beforeEach(() => {
1779
- vi.spyOn(fs.promises, 'mkdir').mockResolvedValue(undefined);
1780
- });
1781
- afterEach(() => {
1782
- vi.mocked(fs.promises.mkdir).mockRestore();
1783
- });
1784
- it('should create plans directory and add it to workspace context when plan is enabled', async () => {
1785
- const config = new Config({
1786
- ...baseParams,
1787
- plan: true,
1788
- });
1789
- await config.initialize();
1790
- const plansDir = config.storage.getProjectTempPlansDir();
1791
- expect(fs.promises.mkdir).toHaveBeenCalledWith(plansDir, {
1792
- recursive: true,
1793
- });
1794
- const context = config.getWorkspaceContext();
1795
- expect(context.getDirectories()).toContain(plansDir);
1796
- });
1797
- it('should NOT create plans directory or add it to workspace context when plan is disabled', async () => {
1798
- const config = new Config({
1799
- ...baseParams,
1800
- plan: false,
1801
- });
1802
- await config.initialize();
1803
- const plansDir = config.storage.getProjectTempPlansDir();
1804
- expect(fs.promises.mkdir).not.toHaveBeenCalledWith(plansDir, {
1805
- recursive: true,
1806
- });
1807
- const context = config.getWorkspaceContext();
1808
- expect(context.getDirectories()).not.toContain(plansDir);
1809
- });
1810
- });
1811
- //# sourceMappingURL=config.test.js.map