@didim365/agent-cli-core 0.1.1 → 0.1.2

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 (1076) hide show
  1. package/package.json +6 -2
  2. package/dist/docs/00_project/ai_adapter/01-overview.md +0 -172
  3. package/dist/docs/00_project/ai_adapter/02-architecture.md +0 -448
  4. package/dist/docs/00_project/ai_adapter/03-technical-design.md +0 -1470
  5. package/dist/docs/00_project/ai_adapter/04-integration-design.md +0 -1934
  6. package/dist/docs/00_project/ai_adapter/05-implementation-plan.md +0 -336
  7. package/dist/docs/00_project/ai_adapter/06-didiaistudio-plan.md +0 -559
  8. package/dist/docs/00_project/ai_adapter/README.md +0 -145
  9. package/dist/docs/00_project/ai_adapter/agent_service_openapi.json +0 -1
  10. 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
  11. package/dist/docs/00_project/ai_adapter/event-mapping-matrix.md +0 -148
  12. package/dist/docs/00_project/ai_adapter/migration-plan.md +0 -205
  13. package/dist/docs/00_project/ai_adapter/template/00_vibecoding_workflow.md +0 -627
  14. package/dist/docs/00_project/ai_adapter/template/01_todolist_performance_template.md +0 -436
  15. package/dist/docs/00_project/ai_adapter/template/02_code_review_template.md +0 -248
  16. package/dist/docs/00_project/ai_adapter/template/03_work_result_report_template.md +0 -133
  17. package/dist/docs/00_project/ai_adapter/template/100_Python_Performance_Guide.md +0 -472
  18. package/dist/docs/00_project/ai_adapter/template/99_TDD_plan.md +0 -123
  19. package/dist/docs/00_project/ai_adapter/todolist/00_master_implementation_plan.md +0 -433
  20. package/dist/docs/00_project/ai_adapter/todolist/phase1_foundation_todolist.md +0 -726
  21. package/dist/docs/00_project/ai_adapter/todolist/phase2_core_refactoring_todolist.md +0 -974
  22. package/dist/docs/00_project/ai_adapter/todolist/phase3_handoff.md +0 -203
  23. package/dist/docs/00_project/ai_adapter/todolist/phase3_provider_extension_todolist.md +0 -1382
  24. package/dist/docs/00_project/ai_adapter/utility-migration.md +0 -237
  25. package/dist/docs/00_project/ai_adapter/working_history/.gitkeep +0 -0
  26. 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
  27. 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
  28. 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
  29. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.3_Provider/354/204/240/355/203/235_20260206.md +0 -269
  30. 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
  31. 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
  32. 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
  33. 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
  34. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.2_EventMapper/352/265/254/355/230/204_20260207.md +0 -372
  35. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.3_GeminiAdapter/352/265/254/355/230/204_20260208.md +0 -205
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.1_ClaudeAdapter/352/265/254/355/230/204_20260209.md +0 -225
  47. 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
  48. 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
  49. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.4_ClaudeErrorMapping_20260209.md +0 -98
  50. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.2.A_OpenAIAdapterCore_20260210.md +0 -264
  51. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.2.B_OpenAIStreamConverter_20260210.md +0 -204
  52. 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
  53. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.3_OpenAICompatibleAdapter_20260211.md +0 -251
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. package/dist/docs/00_project/ai_adapter/working_history/phase2_tradeoff_EventType/354/240/204/355/231/230_20260208.md +0 -286
  60. package/dist/docs/00_project/white_labeling/template/00_vibecoding_workflow.md +0 -627
  61. package/dist/docs/00_project/white_labeling/template/01_todolist_performance_template.md +0 -400
  62. package/dist/docs/00_project/white_labeling/template/02_code_review_template.md +0 -248
  63. package/dist/docs/00_project/white_labeling/template/03_work_result_report_template.md +0 -133
  64. package/dist/docs/00_project/white_labeling/template/100_Python_Performance_Guide.md +0 -472
  65. package/dist/docs/00_project/white_labeling/template/99_TDD_plan.md +0 -123
  66. 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
  67. 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
  68. package/dist/docs/00_project/white_labeling//354/225/261/352/265/254/354/241/260.md +0 -310
  69. package/dist/docs/CONTRIBUTING.md +0 -554
  70. package/dist/docs/ai_adapter/01-overview.md +0 -155
  71. package/dist/docs/ai_adapter/02-architecture.md +0 -452
  72. package/dist/docs/ai_adapter/03-technical-design.md +0 -1470
  73. package/dist/docs/ai_adapter/04-integration-design.md +0 -1904
  74. package/dist/docs/ai_adapter/05-implementation-plan.md +0 -312
  75. package/dist/docs/ai_adapter/06-didiaistudio-plan.md +0 -559
  76. package/dist/docs/ai_adapter/README.md +0 -118
  77. package/dist/docs/ai_adapter/agent_service_openapi.json +0 -1
  78. 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
  79. package/dist/docs/ai_adapter/event-mapping-matrix.md +0 -140
  80. package/dist/docs/ai_adapter/migration-plan.md +0 -205
  81. package/dist/docs/ai_adapter/template/00_vibecoding_workflow.md +0 -636
  82. package/dist/docs/ai_adapter/template/01_todolist_performance_template.md +0 -372
  83. package/dist/docs/ai_adapter/template/02_code_review_template.md +0 -220
  84. package/dist/docs/ai_adapter/template/03_work_result_report_template.md +0 -120
  85. package/dist/docs/ai_adapter/template/100_Python_Performance_Guide.md +0 -453
  86. package/dist/docs/ai_adapter/template/99_TDD_plan.md +0 -111
  87. package/dist/docs/ai_adapter/todolist/00_master_implementation_plan.md +0 -433
  88. package/dist/docs/ai_adapter/todolist/phase1_foundation_todolist.md +0 -726
  89. package/dist/docs/ai_adapter/todolist/phase2_core_refactoring_todolist.md +0 -974
  90. package/dist/docs/ai_adapter/todolist/phase3_handoff.md +0 -203
  91. package/dist/docs/ai_adapter/todolist/phase3_provider_extension_todolist.md +0 -1382
  92. package/dist/docs/ai_adapter/utility-migration.md +0 -237
  93. package/dist/docs/ai_adapter/working_history/.gitkeep +0 -0
  94. 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
  95. 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
  96. package/dist/docs/ai_adapter/working_history/Phase1_M1.2_Adapter/354/235/270/355/224/204/353/235/274_20260203.md +0 -378
  97. package/dist/docs/ai_adapter/working_history/Phase1_M1.3_Provider/354/204/240/355/203/235_20260206.md +0 -269
  98. 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
  99. 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
  100. 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
  101. 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
  102. package/dist/docs/ai_adapter/working_history/Phase2_M2.2_EventMapper/352/265/254/355/230/204_20260207.md +0 -372
  103. package/dist/docs/ai_adapter/working_history/Phase2_M2.3_GeminiAdapter/352/265/254/355/230/204_20260208.md +0 -205
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.1_ClaudeAdapter/352/265/254/355/230/204_20260209.md +0 -225
  115. 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
  116. 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
  117. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.4_ClaudeErrorMapping_20260209.md +0 -98
  118. package/dist/docs/ai_adapter/working_history/Phase3_M3.2.A_OpenAIAdapterCore_20260210.md +0 -264
  119. package/dist/docs/ai_adapter/working_history/Phase3_M3.2.B_OpenAIStreamConverter_20260210.md +0 -204
  120. 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
  121. package/dist/docs/ai_adapter/working_history/Phase3_M3.3_OpenAICompatibleAdapter_20260211.md +0 -251
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. package/dist/docs/ai_adapter/working_history/phase2_tradeoff_EventType/354/240/204/355/231/230_20260208.md +0 -286
  128. package/dist/docs/api/index.md +0 -5
  129. package/dist/docs/api/providers.md +0 -56
  130. package/dist/docs/architecture.md +0 -80
  131. package/dist/docs/assets/connected_devtools.png +0 -0
  132. package/dist/docs/assets/gemini-screenshot.png +0 -0
  133. package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
  134. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  135. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  136. package/dist/docs/assets/release_patch.png +0 -0
  137. package/dist/docs/assets/theme-ansi-light.png +0 -0
  138. package/dist/docs/assets/theme-ansi.png +0 -0
  139. package/dist/docs/assets/theme-atom-one.png +0 -0
  140. package/dist/docs/assets/theme-ayu-light.png +0 -0
  141. package/dist/docs/assets/theme-ayu.png +0 -0
  142. package/dist/docs/assets/theme-custom.png +0 -0
  143. package/dist/docs/assets/theme-default-light.png +0 -0
  144. package/dist/docs/assets/theme-default.png +0 -0
  145. package/dist/docs/assets/theme-dracula.png +0 -0
  146. package/dist/docs/assets/theme-github-light.png +0 -0
  147. package/dist/docs/assets/theme-github.png +0 -0
  148. package/dist/docs/assets/theme-google-light.png +0 -0
  149. package/dist/docs/assets/theme-xcode-light.png +0 -0
  150. package/dist/docs/change_model/model_command_multi_provider_plan.md +0 -221
  151. package/dist/docs/change_model/model_command_multi_provider_todolist.md +0 -206
  152. package/dist/docs/changelogs/index.md +0 -726
  153. package/dist/docs/changelogs/latest.md +0 -370
  154. package/dist/docs/changelogs/preview.md +0 -332
  155. package/dist/docs/cli/authentication.md +0 -3
  156. package/dist/docs/cli/checkpointing.md +0 -94
  157. package/dist/docs/cli/commands.md +0 -375
  158. package/dist/docs/cli/custom-commands.md +0 -315
  159. package/dist/docs/cli/enterprise.md +0 -565
  160. package/dist/docs/cli/gemini-ignore.md +0 -71
  161. package/dist/docs/cli/gemini-md.md +0 -108
  162. package/dist/docs/cli/generation-settings.md +0 -210
  163. package/dist/docs/cli/headless.md +0 -388
  164. package/dist/docs/cli/index.md +0 -65
  165. package/dist/docs/cli/keyboard-shortcuts.md +0 -129
  166. package/dist/docs/cli/model-routing.md +0 -42
  167. package/dist/docs/cli/model.md +0 -62
  168. package/dist/docs/cli/sandbox.md +0 -171
  169. package/dist/docs/cli/session-management.md +0 -158
  170. package/dist/docs/cli/settings.md +0 -130
  171. package/dist/docs/cli/skills.md +0 -188
  172. package/dist/docs/cli/system-prompt.md +0 -125
  173. package/dist/docs/cli/telemetry.md +0 -826
  174. package/dist/docs/cli/themes.md +0 -235
  175. package/dist/docs/cli/token-caching.md +0 -20
  176. package/dist/docs/cli/trusted-folders.md +0 -95
  177. package/dist/docs/cli/tutorials/skills-getting-started.md +0 -124
  178. package/dist/docs/cli/tutorials.md +0 -87
  179. package/dist/docs/cli/uninstall.md +0 -65
  180. package/dist/docs/configuration.md +0 -108
  181. package/dist/docs/core/index.md +0 -105
  182. package/dist/docs/core/long-term-memory-design.md +0 -254
  183. package/dist/docs/core/long-term-memory-proposal.md +0 -112
  184. package/dist/docs/core/memport.md +0 -246
  185. package/dist/docs/core/policy-engine.md +0 -300
  186. package/dist/docs/core/tools-api.md +0 -131
  187. package/dist/docs/examples/proxy-script.md +0 -83
  188. package/dist/docs/extensions/best-practices.md +0 -139
  189. package/dist/docs/extensions/index.md +0 -44
  190. package/dist/docs/extensions/reference.md +0 -312
  191. package/dist/docs/extensions/releasing.md +0 -183
  192. package/dist/docs/extensions/writing-extensions.md +0 -283
  193. package/dist/docs/faq.md +0 -154
  194. package/dist/docs/get-started/authentication.md +0 -321
  195. package/dist/docs/get-started/configuration-v1.md +0 -888
  196. package/dist/docs/get-started/configuration.md +0 -1567
  197. package/dist/docs/get-started/examples.md +0 -219
  198. package/dist/docs/get-started/gemini-3.md +0 -101
  199. package/dist/docs/get-started/index.md +0 -71
  200. package/dist/docs/get-started/installation.md +0 -141
  201. package/dist/docs/hooks/best-practices.md +0 -677
  202. package/dist/docs/hooks/index.md +0 -178
  203. package/dist/docs/hooks/reference.md +0 -322
  204. package/dist/docs/hooks/writing-hooks.md +0 -450
  205. package/dist/docs/ide-integration/ide-companion-spec.md +0 -267
  206. package/dist/docs/ide-integration/index.md +0 -202
  207. package/dist/docs/index.md +0 -153
  208. package/dist/docs/integration-tests.md +0 -211
  209. package/dist/docs/issue-and-pr-automation.md +0 -134
  210. package/dist/docs/local-development.md +0 -128
  211. package/dist/docs/mermaid/context.mmd +0 -103
  212. package/dist/docs/mermaid/render-path.mmd +0 -64
  213. package/dist/docs/migration.md +0 -78
  214. package/dist/docs/npm.md +0 -62
  215. package/dist/docs/providers.md +0 -136
  216. package/dist/docs/quota-and-pricing.md +0 -158
  217. package/dist/docs/release-confidence.md +0 -164
  218. package/dist/docs/releases.md +0 -539
  219. package/dist/docs/sidebar.json +0 -140
  220. package/dist/docs/tools/file-system.md +0 -217
  221. package/dist/docs/tools/index.md +0 -98
  222. package/dist/docs/tools/mcp-server.md +0 -1068
  223. package/dist/docs/tools/memory.md +0 -54
  224. package/dist/docs/tools/shell.md +0 -260
  225. package/dist/docs/tools/todos.md +0 -57
  226. package/dist/docs/tools/web-fetch.md +0 -59
  227. package/dist/docs/tools/web-search.md +0 -42
  228. package/dist/docs/tos-privacy.md +0 -96
  229. package/dist/docs/troubleshooting.md +0 -173
  230. package/dist/src/agents/a2a-client-manager.test.d.ts +0 -6
  231. package/dist/src/agents/a2a-client-manager.test.js +0 -220
  232. package/dist/src/agents/a2a-client-manager.test.js.map +0 -1
  233. package/dist/src/agents/a2aUtils.test.d.ts +0 -6
  234. package/dist/src/agents/a2aUtils.test.js +0 -147
  235. package/dist/src/agents/a2aUtils.test.js.map +0 -1
  236. package/dist/src/agents/acknowledgedAgents.test.d.ts +0 -6
  237. package/dist/src/agents/acknowledgedAgents.test.js +0 -70
  238. package/dist/src/agents/acknowledgedAgents.test.js.map +0 -1
  239. package/dist/src/agents/agent-scheduler.test.d.ts +0 -6
  240. package/dist/src/agents/agent-scheduler.test.js +0 -56
  241. package/dist/src/agents/agent-scheduler.test.js.map +0 -1
  242. package/dist/src/agents/agentLoader.test.d.ts +0 -6
  243. package/dist/src/agents/agentLoader.test.js +0 -304
  244. package/dist/src/agents/agentLoader.test.js.map +0 -1
  245. package/dist/src/agents/cli-help-agent.test.d.ts +0 -6
  246. package/dist/src/agents/cli-help-agent.test.js +0 -67
  247. package/dist/src/agents/cli-help-agent.test.js.map +0 -1
  248. package/dist/src/agents/codebase-investigator.test.d.ts +0 -6
  249. package/dist/src/agents/codebase-investigator.test.js +0 -42
  250. package/dist/src/agents/codebase-investigator.test.js.map +0 -1
  251. package/dist/src/agents/generalist-agent.test.d.ts +0 -6
  252. package/dist/src/agents/generalist-agent.test.js +0 -31
  253. package/dist/src/agents/generalist-agent.test.js.map +0 -1
  254. package/dist/src/agents/local-executor.test.d.ts +0 -6
  255. package/dist/src/agents/local-executor.test.js +0 -1577
  256. package/dist/src/agents/local-executor.test.js.map +0 -1
  257. package/dist/src/agents/local-invocation.test.d.ts +0 -6
  258. package/dist/src/agents/local-invocation.test.js +0 -228
  259. package/dist/src/agents/local-invocation.test.js.map +0 -1
  260. package/dist/src/agents/registry.test.d.ts +0 -6
  261. package/dist/src/agents/registry.test.js +0 -773
  262. package/dist/src/agents/registry.test.js.map +0 -1
  263. package/dist/src/agents/registry_acknowledgement.test.d.ts +0 -6
  264. package/dist/src/agents/registry_acknowledgement.test.js +0 -130
  265. package/dist/src/agents/registry_acknowledgement.test.js.map +0 -1
  266. package/dist/src/agents/remote-invocation.test.d.ts +0 -6
  267. package/dist/src/agents/remote-invocation.test.js +0 -213
  268. package/dist/src/agents/remote-invocation.test.js.map +0 -1
  269. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +0 -6
  270. package/dist/src/agents/subagent-tool-wrapper.test.js +0 -109
  271. package/dist/src/agents/subagent-tool-wrapper.test.js.map +0 -1
  272. package/dist/src/agents/utils.test.d.ts +0 -6
  273. package/dist/src/agents/utils.test.js +0 -87
  274. package/dist/src/agents/utils.test.js.map +0 -1
  275. package/dist/src/availability/fallbackIntegration.test.d.ts +0 -6
  276. package/dist/src/availability/fallbackIntegration.test.js +0 -58
  277. package/dist/src/availability/fallbackIntegration.test.js.map +0 -1
  278. package/dist/src/availability/modelAvailabilityService.test.d.ts +0 -6
  279. package/dist/src/availability/modelAvailabilityService.test.js +0 -140
  280. package/dist/src/availability/modelAvailabilityService.test.js.map +0 -1
  281. package/dist/src/availability/policyCatalog.test.d.ts +0 -6
  282. package/dist/src/availability/policyCatalog.test.js +0 -70
  283. package/dist/src/availability/policyCatalog.test.js.map +0 -1
  284. package/dist/src/availability/policyHelpers.test.d.ts +0 -6
  285. package/dist/src/availability/policyHelpers.test.js +0 -220
  286. package/dist/src/availability/policyHelpers.test.js.map +0 -1
  287. package/dist/src/code_assist/admin/admin_controls.test.d.ts +0 -6
  288. package/dist/src/code_assist/admin/admin_controls.test.js +0 -200
  289. package/dist/src/code_assist/admin/admin_controls.test.js.map +0 -1
  290. package/dist/src/code_assist/codeAssist.test.d.ts +0 -6
  291. package/dist/src/code_assist/codeAssist.test.js +0 -102
  292. package/dist/src/code_assist/codeAssist.test.js.map +0 -1
  293. package/dist/src/code_assist/converter.test.d.ts +0 -6
  294. package/dist/src/code_assist/converter.test.js +0 -391
  295. package/dist/src/code_assist/converter.test.js.map +0 -1
  296. package/dist/src/code_assist/experiments/client_metadata.test.d.ts +0 -6
  297. package/dist/src/code_assist/experiments/client_metadata.test.js +0 -96
  298. package/dist/src/code_assist/experiments/client_metadata.test.js.map +0 -1
  299. package/dist/src/code_assist/experiments/experiments.test.d.ts +0 -6
  300. package/dist/src/code_assist/experiments/experiments.test.js +0 -93
  301. package/dist/src/code_assist/experiments/experiments.test.js.map +0 -1
  302. package/dist/src/code_assist/experiments/experiments_local.test.d.ts +0 -6
  303. package/dist/src/code_assist/experiments/experiments_local.test.js +0 -115
  304. package/dist/src/code_assist/experiments/experiments_local.test.js.map +0 -1
  305. package/dist/src/code_assist/oauth-credential-storage.test.d.ts +0 -6
  306. package/dist/src/code_assist/oauth-credential-storage.test.js +0 -198
  307. package/dist/src/code_assist/oauth-credential-storage.test.js.map +0 -1
  308. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  309. package/dist/src/code_assist/oauth2.test.js +0 -1065
  310. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  311. package/dist/src/code_assist/server.test.d.ts +0 -6
  312. package/dist/src/code_assist/server.test.js +0 -453
  313. package/dist/src/code_assist/server.test.js.map +0 -1
  314. package/dist/src/code_assist/setup.test.d.ts +0 -6
  315. package/dist/src/code_assist/setup.test.js +0 -517
  316. package/dist/src/code_assist/setup.test.js.map +0 -1
  317. package/dist/src/code_assist/telemetry.test.d.ts +0 -6
  318. package/dist/src/code_assist/telemetry.test.js +0 -301
  319. package/dist/src/code_assist/telemetry.test.js.map +0 -1
  320. package/dist/src/commands/extensions.test.d.ts +0 -6
  321. package/dist/src/commands/extensions.test.js +0 -19
  322. package/dist/src/commands/extensions.test.js.map +0 -1
  323. package/dist/src/commands/init.test.d.ts +0 -6
  324. package/dist/src/commands/init.test.js +0 -25
  325. package/dist/src/commands/init.test.js.map +0 -1
  326. package/dist/src/commands/memory.test.d.ts +0 -6
  327. package/dist/src/commands/memory.test.js +0 -182
  328. package/dist/src/commands/memory.test.js.map +0 -1
  329. package/dist/src/commands/restore.test.d.ts +0 -6
  330. package/dist/src/commands/restore.test.js +0 -137
  331. package/dist/src/commands/restore.test.js.map +0 -1
  332. package/dist/src/config/config.test.d.ts +0 -6
  333. package/dist/src/config/config.test.js +0 -1811
  334. package/dist/src/config/config.test.js.map +0 -1
  335. package/dist/src/config/flashFallback.test.d.ts +0 -6
  336. package/dist/src/config/flashFallback.test.js +0 -63
  337. package/dist/src/config/flashFallback.test.js.map +0 -1
  338. package/dist/src/config/models.test.d.ts +0 -6
  339. package/dist/src/config/models.test.js +0 -146
  340. package/dist/src/config/models.test.js.map +0 -1
  341. package/dist/src/config/storage.test.d.ts +0 -6
  342. package/dist/src/config/storage.test.js +0 -115
  343. package/dist/src/config/storage.test.js.map +0 -1
  344. package/dist/src/confirmation-bus/message-bus.test.d.ts +0 -6
  345. package/dist/src/confirmation-bus/message-bus.test.js +0 -170
  346. package/dist/src/confirmation-bus/message-bus.test.js.map +0 -1
  347. package/dist/src/core/apiKeyCredentialStorage.test.d.ts +0 -6
  348. package/dist/src/core/apiKeyCredentialStorage.test.js +0 -71
  349. package/dist/src/core/apiKeyCredentialStorage.test.js.map +0 -1
  350. package/dist/src/core/baseLlmClient.test.d.ts +0 -6
  351. package/dist/src/core/baseLlmClient.test.js +0 -569
  352. package/dist/src/core/baseLlmClient.test.js.map +0 -1
  353. package/dist/src/core/baseLlmClient_new_types.test.d.ts +0 -1
  354. package/dist/src/core/baseLlmClient_new_types.test.js +0 -387
  355. package/dist/src/core/baseLlmClient_new_types.test.js.map +0 -1
  356. package/dist/src/core/client.test.d.ts +0 -6
  357. package/dist/src/core/client.test.js +0 -2654
  358. package/dist/src/core/client.test.js.map +0 -1
  359. package/dist/src/core/contentGenerator.multiProvider.test.d.ts +0 -6
  360. package/dist/src/core/contentGenerator.multiProvider.test.js +0 -314
  361. package/dist/src/core/contentGenerator.multiProvider.test.js.map +0 -1
  362. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  363. package/dist/src/core/contentGenerator.test.js +0 -299
  364. package/dist/src/core/contentGenerator.test.js.map +0 -1
  365. package/dist/src/core/contentGenerator_new_types.test.d.ts +0 -6
  366. package/dist/src/core/contentGenerator_new_types.test.js +0 -292
  367. package/dist/src/core/contentGenerator_new_types.test.js.map +0 -1
  368. package/dist/src/core/coreToolHookTriggers.test.d.ts +0 -6
  369. package/dist/src/core/coreToolHookTriggers.test.js +0 -159
  370. package/dist/src/core/coreToolHookTriggers.test.js.map +0 -1
  371. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  372. package/dist/src/core/coreToolScheduler.test.js +0 -1684
  373. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  374. package/dist/src/core/fakeContentGenerator.test.d.ts +0 -6
  375. package/dist/src/core/fakeContentGenerator.test.js +0 -127
  376. package/dist/src/core/fakeContentGenerator.test.js.map +0 -1
  377. package/dist/src/core/geminiChat.test.d.ts +0 -6
  378. package/dist/src/core/geminiChat.test.js +0 -1773
  379. package/dist/src/core/geminiChat.test.js.map +0 -1
  380. package/dist/src/core/geminiChat_network_retry.test.d.ts +0 -6
  381. package/dist/src/core/geminiChat_network_retry.test.js +0 -201
  382. package/dist/src/core/geminiChat_network_retry.test.js.map +0 -1
  383. package/dist/src/core/logger.test.d.ts +0 -6
  384. package/dist/src/core/logger.test.js +0 -550
  385. package/dist/src/core/logger.test.js.map +0 -1
  386. package/dist/src/core/loggingContentGenerator.test.d.ts +0 -6
  387. package/dist/src/core/loggingContentGenerator.test.js +0 -221
  388. package/dist/src/core/loggingContentGenerator.test.js.map +0 -1
  389. package/dist/src/core/prompts-substitution.test.d.ts +0 -6
  390. package/dist/src/core/prompts-substitution.test.js +0 -101
  391. package/dist/src/core/prompts-substitution.test.js.map +0 -1
  392. package/dist/src/core/prompts.test.d.ts +0 -6
  393. package/dist/src/core/prompts.test.js +0 -391
  394. package/dist/src/core/prompts.test.js.map +0 -1
  395. package/dist/src/core/recordingContentGenerator.test.d.ts +0 -6
  396. package/dist/src/core/recordingContentGenerator.test.js +0 -101
  397. package/dist/src/core/recordingContentGenerator.test.js.map +0 -1
  398. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  399. package/dist/src/core/tokenLimits.test.js +0 -30
  400. package/dist/src/core/tokenLimits.test.js.map +0 -1
  401. package/dist/src/core/turn.test.d.ts +0 -6
  402. package/dist/src/core/turn.test.js +0 -739
  403. package/dist/src/core/turn.test.js.map +0 -1
  404. package/dist/src/fallback/handler.test.d.ts +0 -6
  405. package/dist/src/fallback/handler.test.js +0 -242
  406. package/dist/src/fallback/handler.test.js.map +0 -1
  407. package/dist/src/hooks/hookAggregator.test.d.ts +0 -6
  408. package/dist/src/hooks/hookAggregator.test.js +0 -387
  409. package/dist/src/hooks/hookAggregator.test.js.map +0 -1
  410. package/dist/src/hooks/hookEventHandler.test.d.ts +0 -6
  411. package/dist/src/hooks/hookEventHandler.test.js +0 -603
  412. package/dist/src/hooks/hookEventHandler.test.js.map +0 -1
  413. package/dist/src/hooks/hookPlanner.test.d.ts +0 -6
  414. package/dist/src/hooks/hookPlanner.test.js +0 -315
  415. package/dist/src/hooks/hookPlanner.test.js.map +0 -1
  416. package/dist/src/hooks/hookRegistry.test.d.ts +0 -6
  417. package/dist/src/hooks/hookRegistry.test.js +0 -529
  418. package/dist/src/hooks/hookRegistry.test.js.map +0 -1
  419. package/dist/src/hooks/hookRunner.test.d.ts +0 -6
  420. package/dist/src/hooks/hookRunner.test.js +0 -606
  421. package/dist/src/hooks/hookRunner.test.js.map +0 -1
  422. package/dist/src/hooks/hookSystem.test.d.ts +0 -6
  423. package/dist/src/hooks/hookSystem.test.js +0 -330
  424. package/dist/src/hooks/hookSystem.test.js.map +0 -1
  425. package/dist/src/hooks/hookSystem_new_types.test.d.ts +0 -6
  426. package/dist/src/hooks/hookSystem_new_types.test.js +0 -243
  427. package/dist/src/hooks/hookSystem_new_types.test.js.map +0 -1
  428. package/dist/src/hooks/hookTranslator.test.d.ts +0 -6
  429. package/dist/src/hooks/hookTranslator.test.js +0 -192
  430. package/dist/src/hooks/hookTranslator.test.js.map +0 -1
  431. package/dist/src/hooks/trustedHooks.test.d.ts +0 -6
  432. package/dist/src/hooks/trustedHooks.test.js +0 -154
  433. package/dist/src/hooks/trustedHooks.test.js.map +0 -1
  434. package/dist/src/hooks/types.test.d.ts +0 -6
  435. package/dist/src/hooks/types.test.js +0 -278
  436. package/dist/src/hooks/types.test.js.map +0 -1
  437. package/dist/src/ide/detect-ide.test.d.ts +0 -6
  438. package/dist/src/ide/detect-ide.test.js +0 -195
  439. package/dist/src/ide/detect-ide.test.js.map +0 -1
  440. package/dist/src/ide/ide-client.test.d.ts +0 -6
  441. package/dist/src/ide/ide-client.test.js +0 -753
  442. package/dist/src/ide/ide-client.test.js.map +0 -1
  443. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  444. package/dist/src/ide/ide-installer.test.js +0 -193
  445. package/dist/src/ide/ide-installer.test.js.map +0 -1
  446. package/dist/src/ide/ideContext.test.d.ts +0 -6
  447. package/dist/src/ide/ideContext.test.js +0 -393
  448. package/dist/src/ide/ideContext.test.js.map +0 -1
  449. package/dist/src/ide/process-utils.test.d.ts +0 -6
  450. package/dist/src/ide/process-utils.test.js +0 -151
  451. package/dist/src/ide/process-utils.test.js.map +0 -1
  452. package/dist/src/index.test.d.ts +0 -6
  453. package/dist/src/index.test.js +0 -53
  454. package/dist/src/index.test.js.map +0 -1
  455. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  456. package/dist/src/mcp/google-auth-provider.test.js +0 -167
  457. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  458. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  459. package/dist/src/mcp/oauth-provider.test.js +0 -1355
  460. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  461. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  462. package/dist/src/mcp/oauth-token-storage.test.js +0 -305
  463. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  464. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  465. package/dist/src/mcp/oauth-utils.test.js +0 -289
  466. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  467. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +0 -6
  468. package/dist/src/mcp/sa-impersonation-provider.test.js +0 -117
  469. package/dist/src/mcp/sa-impersonation-provider.test.js.map +0 -1
  470. package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +0 -6
  471. package/dist/src/mcp/token-storage/base-token-storage.test.js +0 -151
  472. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +0 -1
  473. package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +0 -6
  474. package/dist/src/mcp/token-storage/file-token-storage.test.js +0 -238
  475. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +0 -1
  476. package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +0 -6
  477. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +0 -193
  478. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +0 -1
  479. package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +0 -6
  480. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +0 -305
  481. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +0 -1
  482. package/dist/src/output/json-formatter.test.d.ts +0 -6
  483. package/dist/src/output/json-formatter.test.js +0 -294
  484. package/dist/src/output/json-formatter.test.js.map +0 -1
  485. package/dist/src/output/stream-json-formatter.test.d.ts +0 -6
  486. package/dist/src/output/stream-json-formatter.test.js +0 -477
  487. package/dist/src/output/stream-json-formatter.test.js.map +0 -1
  488. package/dist/src/policy/config.test.d.ts +0 -6
  489. package/dist/src/policy/config.test.js +0 -598
  490. package/dist/src/policy/config.test.js.map +0 -1
  491. package/dist/src/policy/persistence.test.d.ts +0 -6
  492. package/dist/src/policy/persistence.test.js +0 -154
  493. package/dist/src/policy/persistence.test.js.map +0 -1
  494. package/dist/src/policy/policy-engine.test.d.ts +0 -6
  495. package/dist/src/policy/policy-engine.test.js +0 -1299
  496. package/dist/src/policy/policy-engine.test.js.map +0 -1
  497. package/dist/src/policy/policy-updater.test.d.ts +0 -6
  498. package/dist/src/policy/policy-updater.test.js +0 -116
  499. package/dist/src/policy/policy-updater.test.js.map +0 -1
  500. package/dist/src/policy/shell-safety.test.d.ts +0 -6
  501. package/dist/src/policy/shell-safety.test.js +0 -438
  502. package/dist/src/policy/shell-safety.test.js.map +0 -1
  503. package/dist/src/policy/toml-loader.test.d.ts +0 -6
  504. package/dist/src/policy/toml-loader.test.js +0 -409
  505. package/dist/src/policy/toml-loader.test.js.map +0 -1
  506. package/dist/src/policy/utils.test.d.ts +0 -6
  507. package/dist/src/policy/utils.test.js +0 -92
  508. package/dist/src/policy/utils.test.js.map +0 -1
  509. package/dist/src/prompts/mcp-prompts.test.d.ts +0 -6
  510. package/dist/src/prompts/mcp-prompts.test.js +0 -39
  511. package/dist/src/prompts/mcp-prompts.test.js.map +0 -1
  512. package/dist/src/prompts/prompt-registry.test.d.ts +0 -6
  513. package/dist/src/prompts/prompt-registry.test.js +0 -96
  514. package/dist/src/prompts/prompt-registry.test.js.map +0 -1
  515. package/dist/src/providers/__tests__/bundleSize.test.d.ts +0 -6
  516. package/dist/src/providers/__tests__/bundleSize.test.js +0 -75
  517. package/dist/src/providers/__tests__/bundleSize.test.js.map +0 -1
  518. package/dist/src/providers/__tests__/errorHandling.integration.test.d.ts +0 -6
  519. package/dist/src/providers/__tests__/errorHandling.integration.test.js +0 -339
  520. package/dist/src/providers/__tests__/errorHandling.integration.test.js.map +0 -1
  521. package/dist/src/providers/__tests__/multiProvider.integration.test.d.ts +0 -6
  522. package/dist/src/providers/__tests__/multiProvider.integration.test.js +0 -419
  523. package/dist/src/providers/__tests__/multiProvider.integration.test.js.map +0 -1
  524. package/dist/src/providers/__tests__/performance.test.d.ts +0 -6
  525. package/dist/src/providers/__tests__/performance.test.js +0 -270
  526. package/dist/src/providers/__tests__/performance.test.js.map +0 -1
  527. package/dist/src/providers/__tests__/providerConfigIntegration.test.d.ts +0 -6
  528. package/dist/src/providers/__tests__/providerConfigIntegration.test.js +0 -245
  529. package/dist/src/providers/__tests__/providerConfigIntegration.test.js.map +0 -1
  530. package/dist/src/providers/baseAdapter.test.d.ts +0 -1
  531. package/dist/src/providers/baseAdapter.test.js +0 -142
  532. package/dist/src/providers/baseAdapter.test.js.map +0 -1
  533. package/dist/src/providers/claude/adapter.test.d.ts +0 -6
  534. package/dist/src/providers/claude/adapter.test.js +0 -628
  535. package/dist/src/providers/claude/adapter.test.js.map +0 -1
  536. package/dist/src/providers/claude/bootstrap.test.d.ts +0 -6
  537. package/dist/src/providers/claude/bootstrap.test.js +0 -74
  538. package/dist/src/providers/claude/bootstrap.test.js.map +0 -1
  539. package/dist/src/providers/claude/converter.test.d.ts +0 -6
  540. package/dist/src/providers/claude/converter.test.js +0 -1002
  541. package/dist/src/providers/claude/converter.test.js.map +0 -1
  542. package/dist/src/providers/claude/exports.test.d.ts +0 -6
  543. package/dist/src/providers/claude/exports.test.js +0 -40
  544. package/dist/src/providers/claude/exports.test.js.map +0 -1
  545. package/dist/src/providers/configAdapter.test.d.ts +0 -1
  546. package/dist/src/providers/configAdapter.test.js +0 -150
  547. package/dist/src/providers/configAdapter.test.js.map +0 -1
  548. package/dist/src/providers/contentResolver.test.d.ts +0 -1
  549. package/dist/src/providers/contentResolver.test.js +0 -89
  550. package/dist/src/providers/contentResolver.test.js.map +0 -1
  551. package/dist/src/providers/factory.test.d.ts +0 -1
  552. package/dist/src/providers/factory.test.js +0 -151
  553. package/dist/src/providers/factory.test.js.map +0 -1
  554. package/dist/src/providers/gemini/adapterBridge.test.d.ts +0 -6
  555. package/dist/src/providers/gemini/adapterBridge.test.js +0 -164
  556. package/dist/src/providers/gemini/adapterBridge.test.js.map +0 -1
  557. package/dist/src/providers/gemini/bootstrap.test.d.ts +0 -6
  558. package/dist/src/providers/gemini/bootstrap.test.js +0 -72
  559. package/dist/src/providers/gemini/bootstrap.test.js.map +0 -1
  560. package/dist/src/providers/gemini/configConverter.test.d.ts +0 -6
  561. package/dist/src/providers/gemini/configConverter.test.js +0 -218
  562. package/dist/src/providers/gemini/configConverter.test.js.map +0 -1
  563. package/dist/src/providers/gemini/errorClassifier.test.d.ts +0 -6
  564. package/dist/src/providers/gemini/errorClassifier.test.js +0 -83
  565. package/dist/src/providers/gemini/errorClassifier.test.js.map +0 -1
  566. package/dist/src/providers/gemini/eventMapper.test.d.ts +0 -6
  567. package/dist/src/providers/gemini/eventMapper.test.js +0 -502
  568. package/dist/src/providers/gemini/eventMapper.test.js.map +0 -1
  569. package/dist/src/providers/gemini/exports.test.d.ts +0 -6
  570. package/dist/src/providers/gemini/exports.test.js +0 -90
  571. package/dist/src/providers/gemini/exports.test.js.map +0 -1
  572. package/dist/src/providers/gemini/featureFlag.test.d.ts +0 -6
  573. package/dist/src/providers/gemini/featureFlag.test.js +0 -139
  574. package/dist/src/providers/gemini/featureFlag.test.js.map +0 -1
  575. package/dist/src/providers/gemini/geminiAdapter.test.d.ts +0 -6
  576. package/dist/src/providers/gemini/geminiAdapter.test.js +0 -279
  577. package/dist/src/providers/gemini/geminiAdapter.test.js.map +0 -1
  578. package/dist/src/providers/gemini/geminiConverter.test.d.ts +0 -6
  579. package/dist/src/providers/gemini/geminiConverter.test.js +0 -474
  580. package/dist/src/providers/gemini/geminiConverter.test.js.map +0 -1
  581. package/dist/src/providers/gemini/geminiParity.test.d.ts +0 -6
  582. package/dist/src/providers/gemini/geminiParity.test.js +0 -754
  583. package/dist/src/providers/gemini/geminiParity.test.js.map +0 -1
  584. package/dist/src/providers/gemini/geminiStream.test.d.ts +0 -6
  585. package/dist/src/providers/gemini/geminiStream.test.js +0 -391
  586. package/dist/src/providers/gemini/geminiStream.test.js.map +0 -1
  587. package/dist/src/providers/gemini/historyBuilder.test.d.ts +0 -6
  588. package/dist/src/providers/gemini/historyBuilder.test.js +0 -207
  589. package/dist/src/providers/gemini/historyBuilder.test.js.map +0 -1
  590. package/dist/src/providers/gemini/requestBuilder.test.d.ts +0 -6
  591. package/dist/src/providers/gemini/requestBuilder.test.js +0 -358
  592. package/dist/src/providers/gemini/requestBuilder.test.js.map +0 -1
  593. package/dist/src/providers/gemini/streamConverter.test.d.ts +0 -6
  594. package/dist/src/providers/gemini/streamConverter.test.js +0 -131
  595. package/dist/src/providers/gemini/streamConverter.test.js.map +0 -1
  596. package/dist/src/providers/modelSpec.test.d.ts +0 -1
  597. package/dist/src/providers/modelSpec.test.js +0 -119
  598. package/dist/src/providers/modelSpec.test.js.map +0 -1
  599. package/dist/src/providers/openai/adapter.test.d.ts +0 -6
  600. package/dist/src/providers/openai/adapter.test.js +0 -274
  601. package/dist/src/providers/openai/adapter.test.js.map +0 -1
  602. package/dist/src/providers/openai/bootstrap.test.d.ts +0 -6
  603. package/dist/src/providers/openai/bootstrap.test.js +0 -76
  604. package/dist/src/providers/openai/bootstrap.test.js.map +0 -1
  605. package/dist/src/providers/openai/converter.test.d.ts +0 -6
  606. package/dist/src/providers/openai/converter.test.js +0 -1133
  607. package/dist/src/providers/openai/converter.test.js.map +0 -1
  608. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.d.ts +0 -6
  609. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.js +0 -356
  610. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.js.map +0 -1
  611. package/dist/src/providers/openai-compatible/adapter.test.d.ts +0 -6
  612. package/dist/src/providers/openai-compatible/adapter.test.js +0 -240
  613. package/dist/src/providers/openai-compatible/adapter.test.js.map +0 -1
  614. package/dist/src/providers/openai-compatible/bootstrap.test.d.ts +0 -6
  615. package/dist/src/providers/openai-compatible/bootstrap.test.js +0 -145
  616. package/dist/src/providers/openai-compatible/bootstrap.test.js.map +0 -1
  617. package/dist/src/providers/openai-compatible/promptBuilder.test.d.ts +0 -6
  618. package/dist/src/providers/openai-compatible/promptBuilder.test.js +0 -154
  619. package/dist/src/providers/openai-compatible/promptBuilder.test.js.map +0 -1
  620. package/dist/src/providers/providerConfig.test.d.ts +0 -1
  621. package/dist/src/providers/providerConfig.test.js +0 -145
  622. package/dist/src/providers/providerConfig.test.js.map +0 -1
  623. package/dist/src/providers/providerConfigIntegration.test.d.ts +0 -6
  624. package/dist/src/providers/providerConfigIntegration.test.js +0 -187
  625. package/dist/src/providers/providerConfigIntegration.test.js.map +0 -1
  626. package/dist/src/providers/providerSelector.test.d.ts +0 -1
  627. package/dist/src/providers/providerSelector.test.js +0 -199
  628. package/dist/src/providers/providerSelector.test.js.map +0 -1
  629. package/dist/src/providers/providerTypes.test.d.ts +0 -1
  630. package/dist/src/providers/providerTypes.test.js +0 -95
  631. package/dist/src/providers/providerTypes.test.js.map +0 -1
  632. package/dist/src/providers/registry.test.d.ts +0 -1
  633. package/dist/src/providers/registry.test.js +0 -207
  634. package/dist/src/providers/registry.test.js.map +0 -1
  635. package/dist/src/providers/streamAssembler.test.d.ts +0 -1
  636. package/dist/src/providers/streamAssembler.test.js +0 -247
  637. package/dist/src/providers/streamAssembler.test.js.map +0 -1
  638. package/dist/src/providers/telemetryBridge.test.d.ts +0 -6
  639. package/dist/src/providers/telemetryBridge.test.js +0 -235
  640. package/dist/src/providers/telemetryBridge.test.js.map +0 -1
  641. package/dist/src/providers/types.test.d.ts +0 -6
  642. package/dist/src/providers/types.test.js +0 -253
  643. package/dist/src/providers/types.test.js.map +0 -1
  644. package/dist/src/resources/resource-registry.test.d.ts +0 -6
  645. package/dist/src/resources/resource-registry.test.js +0 -54
  646. package/dist/src/resources/resource-registry.test.js.map +0 -1
  647. package/dist/src/routing/modelRouterService.test.d.ts +0 -6
  648. package/dist/src/routing/modelRouterService.test.js +0 -106
  649. package/dist/src/routing/modelRouterService.test.js.map +0 -1
  650. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +0 -6
  651. package/dist/src/routing/strategies/classifierStrategy.test.js +0 -249
  652. package/dist/src/routing/strategies/classifierStrategy.test.js.map +0 -1
  653. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +0 -6
  654. package/dist/src/routing/strategies/compositeStrategy.test.js +0 -124
  655. package/dist/src/routing/strategies/compositeStrategy.test.js.map +0 -1
  656. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +0 -6
  657. package/dist/src/routing/strategies/defaultStrategy.test.js +0 -102
  658. package/dist/src/routing/strategies/defaultStrategy.test.js.map +0 -1
  659. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +0 -6
  660. package/dist/src/routing/strategies/fallbackStrategy.test.js +0 -96
  661. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +0 -1
  662. package/dist/src/routing/strategies/numericalClassifierStrategy.test.d.ts +0 -6
  663. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +0 -367
  664. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +0 -1
  665. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +0 -6
  666. package/dist/src/routing/strategies/overrideStrategy.test.js +0 -59
  667. package/dist/src/routing/strategies/overrideStrategy.test.js.map +0 -1
  668. package/dist/src/safety/built-in.test.d.ts +0 -6
  669. package/dist/src/safety/built-in.test.js +0 -199
  670. package/dist/src/safety/built-in.test.js.map +0 -1
  671. package/dist/src/safety/checker-runner.test.d.ts +0 -6
  672. package/dist/src/safety/checker-runner.test.js +0 -238
  673. package/dist/src/safety/checker-runner.test.js.map +0 -1
  674. package/dist/src/safety/context-builder.test.d.ts +0 -6
  675. package/dist/src/safety/context-builder.test.js +0 -49
  676. package/dist/src/safety/context-builder.test.js.map +0 -1
  677. package/dist/src/safety/registry.test.d.ts +0 -6
  678. package/dist/src/safety/registry.test.js +0 -31
  679. package/dist/src/safety/registry.test.js.map +0 -1
  680. package/dist/src/scheduler/confirmation.test.d.ts +0 -6
  681. package/dist/src/scheduler/confirmation.test.js +0 -325
  682. package/dist/src/scheduler/confirmation.test.js.map +0 -1
  683. package/dist/src/scheduler/policy.test.d.ts +0 -6
  684. package/dist/src/scheduler/policy.test.js +0 -299
  685. package/dist/src/scheduler/policy.test.js.map +0 -1
  686. package/dist/src/scheduler/scheduler.test.d.ts +0 -6
  687. package/dist/src/scheduler/scheduler.test.js +0 -822
  688. package/dist/src/scheduler/scheduler.test.js.map +0 -1
  689. package/dist/src/scheduler/state-manager.test.d.ts +0 -6
  690. package/dist/src/scheduler/state-manager.test.js +0 -429
  691. package/dist/src/scheduler/state-manager.test.js.map +0 -1
  692. package/dist/src/scheduler/tool-executor.test.d.ts +0 -6
  693. package/dist/src/scheduler/tool-executor.test.js +0 -232
  694. package/dist/src/scheduler/tool-executor.test.js.map +0 -1
  695. package/dist/src/scheduler/tool-modifier.test.d.ts +0 -6
  696. package/dist/src/scheduler/tool-modifier.test.js +0 -159
  697. package/dist/src/scheduler/tool-modifier.test.js.map +0 -1
  698. package/dist/src/services/chatCompressionService.test.d.ts +0 -6
  699. package/dist/src/services/chatCompressionService.test.js +0 -573
  700. package/dist/src/services/chatCompressionService.test.js.map +0 -1
  701. package/dist/src/services/chatRecordingService.test.d.ts +0 -6
  702. package/dist/src/services/chatRecordingService.test.js +0 -486
  703. package/dist/src/services/chatRecordingService.test.js.map +0 -1
  704. package/dist/src/services/contextManager.test.d.ts +0 -6
  705. package/dist/src/services/contextManager.test.js +0 -104
  706. package/dist/src/services/contextManager.test.js.map +0 -1
  707. package/dist/src/services/environmentSanitization.test.d.ts +0 -6
  708. package/dist/src/services/environmentSanitization.test.js +0 -284
  709. package/dist/src/services/environmentSanitization.test.js.map +0 -1
  710. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  711. package/dist/src/services/fileDiscoveryService.test.js +0 -223
  712. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  713. package/dist/src/services/fileSystemService.test.d.ts +0 -6
  714. package/dist/src/services/fileSystemService.test.js +0 -41
  715. package/dist/src/services/fileSystemService.test.js.map +0 -1
  716. package/dist/src/services/gitService.test.d.ts +0 -6
  717. package/dist/src/services/gitService.test.js +0 -264
  718. package/dist/src/services/gitService.test.js.map +0 -1
  719. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  720. package/dist/src/services/loopDetectionService.test.js +0 -881
  721. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  722. package/dist/src/services/modelConfig.golden.test.d.ts +0 -6
  723. package/dist/src/services/modelConfig.golden.test.js +0 -74
  724. package/dist/src/services/modelConfig.golden.test.js.map +0 -1
  725. package/dist/src/services/modelConfig.integration.test.d.ts +0 -6
  726. package/dist/src/services/modelConfig.integration.test.js +0 -247
  727. package/dist/src/services/modelConfig.integration.test.js.map +0 -1
  728. package/dist/src/services/modelConfigBridge.test.d.ts +0 -6
  729. package/dist/src/services/modelConfigBridge.test.js +0 -410
  730. package/dist/src/services/modelConfigBridge.test.js.map +0 -1
  731. package/dist/src/services/modelConfigService.test.d.ts +0 -6
  732. package/dist/src/services/modelConfigService.test.js +0 -868
  733. package/dist/src/services/modelConfigService.test.js.map +0 -1
  734. package/dist/src/services/sessionSummaryService.test.d.ts +0 -6
  735. package/dist/src/services/sessionSummaryService.test.js +0 -785
  736. package/dist/src/services/sessionSummaryService.test.js.map +0 -1
  737. package/dist/src/services/sessionSummaryUtils.test.d.ts +0 -6
  738. package/dist/src/services/sessionSummaryUtils.test.js +0 -160
  739. package/dist/src/services/sessionSummaryUtils.test.js.map +0 -1
  740. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  741. package/dist/src/services/shellExecutionService.test.js +0 -1080
  742. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  743. package/dist/src/skills/skillLoader.test.d.ts +0 -6
  744. package/dist/src/skills/skillLoader.test.js +0 -185
  745. package/dist/src/skills/skillLoader.test.js.map +0 -1
  746. package/dist/src/skills/skillManager.test.d.ts +0 -6
  747. package/dist/src/skills/skillManager.test.js +0 -297
  748. package/dist/src/skills/skillManager.test.js.map +0 -1
  749. package/dist/src/telemetry/activity-detector.test.d.ts +0 -6
  750. package/dist/src/telemetry/activity-detector.test.js +0 -136
  751. package/dist/src/telemetry/activity-detector.test.js.map +0 -1
  752. package/dist/src/telemetry/activity-monitor.test.d.ts +0 -6
  753. package/dist/src/telemetry/activity-monitor.test.js +0 -251
  754. package/dist/src/telemetry/activity-monitor.test.js.map +0 -1
  755. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -19
  756. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -964
  757. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  758. package/dist/src/telemetry/config.test.d.ts +0 -6
  759. package/dist/src/telemetry/config.test.js +0 -149
  760. package/dist/src/telemetry/config.test.js.map +0 -1
  761. package/dist/src/telemetry/gcp-exporters.test.d.ts +0 -6
  762. package/dist/src/telemetry/gcp-exporters.test.js +0 -318
  763. package/dist/src/telemetry/gcp-exporters.test.js.map +0 -1
  764. package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +0 -6
  765. package/dist/src/telemetry/high-water-mark-tracker.test.js +0 -152
  766. package/dist/src/telemetry/high-water-mark-tracker.test.js.map +0 -1
  767. package/dist/src/telemetry/integration.test.circular.d.ts +0 -6
  768. package/dist/src/telemetry/integration.test.circular.js +0 -54
  769. package/dist/src/telemetry/integration.test.circular.js.map +0 -1
  770. package/dist/src/telemetry/loggers.test.circular.d.ts +0 -6
  771. package/dist/src/telemetry/loggers.test.circular.js +0 -107
  772. package/dist/src/telemetry/loggers.test.circular.js.map +0 -1
  773. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  774. package/dist/src/telemetry/loggers.test.js +0 -1618
  775. package/dist/src/telemetry/loggers.test.js.map +0 -1
  776. package/dist/src/telemetry/memory-monitor.test.d.ts +0 -6
  777. package/dist/src/telemetry/memory-monitor.test.js +0 -472
  778. package/dist/src/telemetry/memory-monitor.test.js.map +0 -1
  779. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  780. package/dist/src/telemetry/metrics.test.js +0 -1176
  781. package/dist/src/telemetry/metrics.test.js.map +0 -1
  782. package/dist/src/telemetry/rate-limiter.test.d.ts +0 -6
  783. package/dist/src/telemetry/rate-limiter.test.js +0 -207
  784. package/dist/src/telemetry/rate-limiter.test.js.map +0 -1
  785. package/dist/src/telemetry/sanitize.test.d.ts +0 -6
  786. package/dist/src/telemetry/sanitize.test.js +0 -279
  787. package/dist/src/telemetry/sanitize.test.js.map +0 -1
  788. package/dist/src/telemetry/sdk.test.d.ts +0 -6
  789. package/dist/src/telemetry/sdk.test.js +0 -360
  790. package/dist/src/telemetry/sdk.test.js.map +0 -1
  791. package/dist/src/telemetry/semantic.test.d.ts +0 -6
  792. package/dist/src/telemetry/semantic.test.js +0 -387
  793. package/dist/src/telemetry/semantic.test.js.map +0 -1
  794. package/dist/src/telemetry/semantic.truncation.test.d.ts +0 -1
  795. package/dist/src/telemetry/semantic.truncation.test.js +0 -92
  796. package/dist/src/telemetry/semantic.truncation.test.js.map +0 -1
  797. package/dist/src/telemetry/startupProfiler.test.d.ts +0 -6
  798. package/dist/src/telemetry/startupProfiler.test.js +0 -285
  799. package/dist/src/telemetry/startupProfiler.test.js.map +0 -1
  800. package/dist/src/telemetry/telemetry-utils.test.d.ts +0 -6
  801. package/dist/src/telemetry/telemetry-utils.test.js +0 -41
  802. package/dist/src/telemetry/telemetry-utils.test.js.map +0 -1
  803. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  804. package/dist/src/telemetry/telemetry.test.js +0 -57
  805. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  806. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  807. package/dist/src/telemetry/uiTelemetry.test.js +0 -584
  808. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  809. package/dist/src/tools/activate-skill.test.d.ts +0 -6
  810. package/dist/src/tools/activate-skill.test.js +0 -113
  811. package/dist/src/tools/activate-skill.test.js.map +0 -1
  812. package/dist/src/tools/ask-user.test.d.ts +0 -6
  813. package/dist/src/tools/ask-user.test.js +0 -187
  814. package/dist/src/tools/ask-user.test.js.map +0 -1
  815. package/dist/src/tools/base-tool-invocation.test.d.ts +0 -6
  816. package/dist/src/tools/base-tool-invocation.test.js +0 -85
  817. package/dist/src/tools/base-tool-invocation.test.js.map +0 -1
  818. package/dist/src/tools/confirmation-policy.test.d.ts +0 -6
  819. package/dist/src/tools/confirmation-policy.test.js +0 -143
  820. package/dist/src/tools/confirmation-policy.test.js.map +0 -1
  821. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  822. package/dist/src/tools/diffOptions.test.js +0 -172
  823. package/dist/src/tools/diffOptions.test.js.map +0 -1
  824. package/dist/src/tools/edit.test.d.ts +0 -6
  825. package/dist/src/tools/edit.test.js +0 -729
  826. package/dist/src/tools/edit.test.js.map +0 -1
  827. package/dist/src/tools/get-internal-docs.test.d.ts +0 -6
  828. package/dist/src/tools/get-internal-docs.test.js +0 -57
  829. package/dist/src/tools/get-internal-docs.test.js.map +0 -1
  830. package/dist/src/tools/glob.test.d.ts +0 -6
  831. package/dist/src/tools/glob.test.js +0 -433
  832. package/dist/src/tools/glob.test.js.map +0 -1
  833. package/dist/src/tools/grep.test.d.ts +0 -6
  834. package/dist/src/tools/grep.test.js +0 -328
  835. package/dist/src/tools/grep.test.js.map +0 -1
  836. package/dist/src/tools/ls.test.d.ts +0 -6
  837. package/dist/src/tools/ls.test.js +0 -242
  838. package/dist/src/tools/ls.test.js.map +0 -1
  839. package/dist/src/tools/mcp-client-manager.test.d.ts +0 -6
  840. package/dist/src/tools/mcp-client-manager.test.js +0 -251
  841. package/dist/src/tools/mcp-client-manager.test.js.map +0 -1
  842. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  843. package/dist/src/tools/mcp-client.test.js +0 -1346
  844. package/dist/src/tools/mcp-client.test.js.map +0 -1
  845. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  846. package/dist/src/tools/mcp-tool.test.js +0 -657
  847. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  848. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  849. package/dist/src/tools/memoryTool.test.js +0 -302
  850. package/dist/src/tools/memoryTool.test.js.map +0 -1
  851. package/dist/src/tools/message-bus-integration.test.d.ts +0 -6
  852. package/dist/src/tools/message-bus-integration.test.js +0 -169
  853. package/dist/src/tools/message-bus-integration.test.js.map +0 -1
  854. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  855. package/dist/src/tools/modifiable-tool.test.js +0 -237
  856. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  857. package/dist/src/tools/read-file.test.d.ts +0 -6
  858. package/dist/src/tools/read-file.test.js +0 -376
  859. package/dist/src/tools/read-file.test.js.map +0 -1
  860. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  861. package/dist/src/tools/read-many-files.test.js +0 -567
  862. package/dist/src/tools/read-many-files.test.js.map +0 -1
  863. package/dist/src/tools/ripGrep.test.d.ts +0 -6
  864. package/dist/src/tools/ripGrep.test.js +0 -1139
  865. package/dist/src/tools/ripGrep.test.js.map +0 -1
  866. package/dist/src/tools/shell.test.d.ts +0 -6
  867. package/dist/src/tools/shell.test.js +0 -526
  868. package/dist/src/tools/shell.test.js.map +0 -1
  869. package/dist/src/tools/tool-names.test.d.ts +0 -6
  870. package/dist/src/tools/tool-names.test.js +0 -43
  871. package/dist/src/tools/tool-names.test.js.map +0 -1
  872. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  873. package/dist/src/tools/tool-registry.test.js +0 -461
  874. package/dist/src/tools/tool-registry.test.js.map +0 -1
  875. package/dist/src/tools/tools.test.d.ts +0 -6
  876. package/dist/src/tools/tools.test.js +0 -207
  877. package/dist/src/tools/tools.test.js.map +0 -1
  878. package/dist/src/tools/web-fetch.test.d.ts +0 -6
  879. package/dist/src/tools/web-fetch.test.js +0 -442
  880. package/dist/src/tools/web-fetch.test.js.map +0 -1
  881. package/dist/src/tools/web-search.test.d.ts +0 -6
  882. package/dist/src/tools/web-search.test.js +0 -214
  883. package/dist/src/tools/web-search.test.js.map +0 -1
  884. package/dist/src/tools/write-file.test.d.ts +0 -6
  885. package/dist/src/tools/write-file.test.js +0 -681
  886. package/dist/src/tools/write-file.test.js.map +0 -1
  887. package/dist/src/tools/write-todos.test.d.ts +0 -6
  888. package/dist/src/tools/write-todos.test.js +0 -90
  889. package/dist/src/tools/write-todos.test.js.map +0 -1
  890. package/dist/src/utils/apiConversionUtils.test.d.ts +0 -6
  891. package/dist/src/utils/apiConversionUtils.test.js +0 -150
  892. package/dist/src/utils/apiConversionUtils.test.js.map +0 -1
  893. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  894. package/dist/src/utils/bfsFileSearch.test.js +0 -227
  895. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  896. package/dist/src/utils/channel.test.d.ts +0 -6
  897. package/dist/src/utils/channel.test.js +0 -170
  898. package/dist/src/utils/channel.test.js.map +0 -1
  899. package/dist/src/utils/checkpointUtils.test.d.ts +0 -6
  900. package/dist/src/utils/checkpointUtils.test.js +0 -229
  901. package/dist/src/utils/checkpointUtils.test.js.map +0 -1
  902. package/dist/src/utils/customHeaderUtils.test.d.ts +0 -6
  903. package/dist/src/utils/customHeaderUtils.test.js +0 -77
  904. package/dist/src/utils/customHeaderUtils.test.js.map +0 -1
  905. package/dist/src/utils/debugLogger.test.d.ts +0 -6
  906. package/dist/src/utils/debugLogger.test.js +0 -69
  907. package/dist/src/utils/debugLogger.test.js.map +0 -1
  908. package/dist/src/utils/delay.test.d.ts +0 -6
  909. package/dist/src/utils/delay.test.js +0 -88
  910. package/dist/src/utils/delay.test.js.map +0 -1
  911. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  912. package/dist/src/utils/editCorrector.test.js +0 -533
  913. package/dist/src/utils/editCorrector.test.js.map +0 -1
  914. package/dist/src/utils/editor.test.d.ts +0 -6
  915. package/dist/src/utils/editor.test.js +0 -429
  916. package/dist/src/utils/editor.test.js.map +0 -1
  917. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  918. package/dist/src/utils/environmentContext.test.js +0 -114
  919. package/dist/src/utils/environmentContext.test.js.map +0 -1
  920. package/dist/src/utils/errorParsing.test.d.ts +0 -6
  921. package/dist/src/utils/errorParsing.test.js +0 -84
  922. package/dist/src/utils/errorParsing.test.js.map +0 -1
  923. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  924. package/dist/src/utils/errorReporting.test.js +0 -133
  925. package/dist/src/utils/errorReporting.test.js.map +0 -1
  926. package/dist/src/utils/errors.test.d.ts +0 -6
  927. package/dist/src/utils/errors.test.js +0 -155
  928. package/dist/src/utils/errors.test.js.map +0 -1
  929. package/dist/src/utils/events.test.d.ts +0 -6
  930. package/dist/src/utils/events.test.js +0 -237
  931. package/dist/src/utils/events.test.js.map +0 -1
  932. package/dist/src/utils/extensionLoader.test.d.ts +0 -6
  933. package/dist/src/utils/extensionLoader.test.js +0 -176
  934. package/dist/src/utils/extensionLoader.test.js.map +0 -1
  935. package/dist/src/utils/fileDiffUtils.test.d.ts +0 -6
  936. package/dist/src/utils/fileDiffUtils.test.js +0 -84
  937. package/dist/src/utils/fileDiffUtils.test.js.map +0 -1
  938. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  939. package/dist/src/utils/fileUtils.test.js +0 -780
  940. package/dist/src/utils/fileUtils.test.js.map +0 -1
  941. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  942. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  943. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  944. package/dist/src/utils/filesearch/crawler.test.d.ts +0 -6
  945. package/dist/src/utils/filesearch/crawler.test.js +0 -495
  946. package/dist/src/utils/filesearch/crawler.test.js.map +0 -1
  947. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  948. package/dist/src/utils/filesearch/fileSearch.test.js +0 -663
  949. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  950. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  951. package/dist/src/utils/filesearch/ignore.test.js +0 -144
  952. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  953. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  954. package/dist/src/utils/filesearch/result-cache.test.js +0 -46
  955. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  956. package/dist/src/utils/flashFallback.test.d.ts +0 -6
  957. package/dist/src/utils/flashFallback.test.js +0 -103
  958. package/dist/src/utils/flashFallback.test.js.map +0 -1
  959. package/dist/src/utils/formatters.test.d.ts +0 -6
  960. package/dist/src/utils/formatters.test.js +0 -26
  961. package/dist/src/utils/formatters.test.js.map +0 -1
  962. package/dist/src/utils/geminiIgnoreParser.test.d.ts +0 -6
  963. package/dist/src/utils/geminiIgnoreParser.test.js +0 -98
  964. package/dist/src/utils/geminiIgnoreParser.test.js.map +0 -1
  965. package/dist/src/utils/geminiTypeConversion.test.d.ts +0 -6
  966. package/dist/src/utils/geminiTypeConversion.test.js +0 -310
  967. package/dist/src/utils/geminiTypeConversion.test.js.map +0 -1
  968. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  969. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -512
  970. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  971. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  972. package/dist/src/utils/getFolderStructure.test.js +0 -283
  973. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  974. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  975. package/dist/src/utils/gitIgnoreParser.test.js +0 -243
  976. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  977. package/dist/src/utils/googleErrors.test.d.ts +0 -6
  978. package/dist/src/utils/googleErrors.test.js +0 -309
  979. package/dist/src/utils/googleErrors.test.js.map +0 -1
  980. package/dist/src/utils/googleQuotaErrors.test.d.ts +0 -6
  981. package/dist/src/utils/googleQuotaErrors.test.js +0 -548
  982. package/dist/src/utils/googleQuotaErrors.test.js.map +0 -1
  983. package/dist/src/utils/ignorePatterns.test.d.ts +0 -6
  984. package/dist/src/utils/ignorePatterns.test.js +0 -246
  985. package/dist/src/utils/ignorePatterns.test.js.map +0 -1
  986. package/dist/src/utils/installationManager.test.d.ts +0 -6
  987. package/dist/src/utils/installationManager.test.js +0 -93
  988. package/dist/src/utils/installationManager.test.js.map +0 -1
  989. package/dist/src/utils/llm-edit-fixer.test.d.ts +0 -6
  990. package/dist/src/utils/llm-edit-fixer.test.js +0 -223
  991. package/dist/src/utils/llm-edit-fixer.test.js.map +0 -1
  992. package/dist/src/utils/llmUtils.test.d.ts +0 -6
  993. package/dist/src/utils/llmUtils.test.js +0 -196
  994. package/dist/src/utils/llmUtils.test.js.map +0 -1
  995. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  996. package/dist/src/utils/memoryDiscovery.test.js +0 -542
  997. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  998. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  999. package/dist/src/utils/memoryImportProcessor.test.js +0 -581
  1000. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  1001. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  1002. package/dist/src/utils/nextSpeakerChecker.test.js +0 -191
  1003. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  1004. package/dist/src/utils/partUtils.test.d.ts +0 -6
  1005. package/dist/src/utils/partUtils.test.js +0 -397
  1006. package/dist/src/utils/partUtils.test.js.map +0 -1
  1007. package/dist/src/utils/pathCorrector.test.d.ts +0 -6
  1008. package/dist/src/utils/pathCorrector.test.js +0 -87
  1009. package/dist/src/utils/pathCorrector.test.js.map +0 -1
  1010. package/dist/src/utils/pathReader.test.d.ts +0 -6
  1011. package/dist/src/utils/pathReader.test.js +0 -406
  1012. package/dist/src/utils/pathReader.test.js.map +0 -1
  1013. package/dist/src/utils/paths.test.d.ts +0 -6
  1014. package/dist/src/utils/paths.test.js +0 -402
  1015. package/dist/src/utils/paths.test.js.map +0 -1
  1016. package/dist/src/utils/retry.test.d.ts +0 -6
  1017. package/dist/src/utils/retry.test.js +0 -548
  1018. package/dist/src/utils/retry.test.js.map +0 -1
  1019. package/dist/src/utils/retry_llm_error.test.d.ts +0 -6
  1020. package/dist/src/utils/retry_llm_error.test.js +0 -280
  1021. package/dist/src/utils/retry_llm_error.test.js.map +0 -1
  1022. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  1023. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  1024. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  1025. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  1026. package/dist/src/utils/schemaValidator.test.js +0 -113
  1027. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  1028. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  1029. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  1030. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  1031. package/dist/src/utils/security.test.d.ts +0 -1
  1032. package/dist/src/utils/security.test.js +0 -121
  1033. package/dist/src/utils/security.test.js.map +0 -1
  1034. package/dist/src/utils/shell-utils.integration.test.d.ts +0 -1
  1035. package/dist/src/utils/shell-utils.integration.test.js +0 -58
  1036. package/dist/src/utils/shell-utils.integration.test.js.map +0 -1
  1037. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  1038. package/dist/src/utils/shell-utils.test.js +0 -437
  1039. package/dist/src/utils/shell-utils.test.js.map +0 -1
  1040. package/dist/src/utils/stdio.test.d.ts +0 -6
  1041. package/dist/src/utils/stdio.test.js +0 -47
  1042. package/dist/src/utils/stdio.test.js.map +0 -1
  1043. package/dist/src/utils/summarizer.test.d.ts +0 -6
  1044. package/dist/src/utils/summarizer.test.js +0 -152
  1045. package/dist/src/utils/summarizer.test.js.map +0 -1
  1046. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  1047. package/dist/src/utils/systemEncoding.test.js +0 -369
  1048. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  1049. package/dist/src/utils/terminalSerializer.test.d.ts +0 -6
  1050. package/dist/src/utils/terminalSerializer.test.js +0 -193
  1051. package/dist/src/utils/terminalSerializer.test.js.map +0 -1
  1052. package/dist/src/utils/textUtils.test.d.ts +0 -6
  1053. package/dist/src/utils/textUtils.test.js +0 -76
  1054. package/dist/src/utils/textUtils.test.js.map +0 -1
  1055. package/dist/src/utils/thoughtUtils.test.d.ts +0 -6
  1056. package/dist/src/utils/thoughtUtils.test.js +0 -78
  1057. package/dist/src/utils/thoughtUtils.test.js.map +0 -1
  1058. package/dist/src/utils/tokenCalculation.test.d.ts +0 -6
  1059. package/dist/src/utils/tokenCalculation.test.js +0 -184
  1060. package/dist/src/utils/tokenCalculation.test.js.map +0 -1
  1061. package/dist/src/utils/tool-utils.test.d.ts +0 -6
  1062. package/dist/src/utils/tool-utils.test.js +0 -84
  1063. package/dist/src/utils/tool-utils.test.js.map +0 -1
  1064. package/dist/src/utils/toolCallContext.test.d.ts +0 -6
  1065. package/dist/src/utils/toolCallContext.test.js +0 -68
  1066. package/dist/src/utils/toolCallContext.test.js.map +0 -1
  1067. package/dist/src/utils/userAccountManager.test.d.ts +0 -6
  1068. package/dist/src/utils/userAccountManager.test.js +0 -225
  1069. package/dist/src/utils/userAccountManager.test.js.map +0 -1
  1070. package/dist/src/utils/version.test.d.ts +0 -6
  1071. package/dist/src/utils/version.test.js +0 -39
  1072. package/dist/src/utils/version.test.js.map +0 -1
  1073. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  1074. package/dist/src/utils/workspaceContext.test.js +0 -374
  1075. package/dist/src/utils/workspaceContext.test.js.map +0 -1
  1076. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,1470 +0,0 @@
1
- # 03. 상세 기술 설계
2
-
3
- ## 3.1 프로바이더 독립적 타입 시스템
4
-
5
- ### 3.1.1 핵심 타입 정의
6
-
7
- ```typescript
8
- // packages/core/src/providers/types.ts
9
-
10
- /**
11
- * 프로바이더 독립적 메시지 타입
12
- */
13
- export interface LlmMessage {
14
- role: 'user' | 'assistant' | 'system' | 'tool';
15
- content: LlmContent[];
16
- name?: string; // 도구 호출 시 도구 이름
17
- toolCallId?: string; // 도구 응답 시 호출 ID
18
- }
19
-
20
- export type LlmContent =
21
- | LlmTextContent
22
- | LlmImageContent
23
- | LlmToolCallContent
24
- | LlmToolResultContent
25
- | LlmThoughtContent; // Gemini 사고 과정 데이터 지원
26
-
27
- export interface LlmTextContent {
28
- type: 'text';
29
- text: string;
30
- }
31
-
32
- export interface LlmImageContent {
33
- type: 'image';
34
- source: LlmImageSource;
35
- }
36
-
37
- // URL 타입과 base64 타입의 필드를 명확히 분리
38
- export type LlmImageSource =
39
- | { type: 'base64'; mediaType: string; data: string }
40
- | { type: 'url'; mediaType: string; url: string };
41
-
42
- export interface LlmToolCallContent {
43
- type: 'tool_call';
44
- id: string;
45
- name: string;
46
- arguments: Record<string, unknown>;
47
- }
48
-
49
- export interface LlmToolResultContent {
50
- type: 'tool_result';
51
- toolCallId: string;
52
- name?: string; // Gemini 등 일부 프로바이더를 위해 필요
53
- content: string | Record<string, unknown>; // Part[] 호환성을 위해 확장
54
- isError?: boolean;
55
- }
56
-
57
- /**
58
- * Gemini Thought (사고 과정) 데이터 지원
59
- * Gemini의 추론/계획 단계 출력을 저장하기 위한 타입
60
- * 다른 프로바이더에서도 유사 기능 지원 시 활용 가능
61
- */
62
- export interface LlmThoughtContent {
63
- type: 'thought';
64
- thought: string;
65
- metadata?: {
66
- step?: number; // 사고 단계 번호
67
- phase?: string; // 'planning' | 'reasoning' | 'reflection'
68
- provider?: string; // 프로바이더별 확장 가능
69
- [key: string]: unknown;
70
- };
71
- }
72
- ```
73
-
74
- ### 3.1.2 요청/응답 타입
75
-
76
- ```typescript
77
- // packages/core/src/providers/types.ts
78
-
79
- /**
80
- * 콘텐츠 생성 요청
81
- */
82
- export interface LlmGenerateRequest {
83
- model: string;
84
- messages: LlmMessage[];
85
- systemInstruction?: string;
86
- tools?: LlmToolDefinition[];
87
- toolChoice?: 'auto' | 'none' | 'required' | { name: string };
88
- temperature?: number;
89
- maxTokens?: number;
90
- stopSequences?: string[];
91
- topP?: number;
92
- topK?: number;
93
- responseFormat?: 'text' | 'json';
94
- }
95
-
96
- /**
97
- * 콘텐츠 생성 응답
98
- */
99
- export interface LlmGenerateResponse {
100
- id: string;
101
- content: LlmContent[];
102
- model: string;
103
- stopReason: LlmStopReason;
104
- usage: LlmTokenUsage;
105
-
106
- // 원본 응답 (디버깅용)
107
- rawResponse?: unknown;
108
- }
109
-
110
- export type LlmStopReason =
111
- | 'end_turn' // 정상 종료
112
- | 'max_tokens' // 토큰 한도 도달
113
- | 'stop_sequence' // 중지 시퀀스 발견
114
- | 'tool_use' // 도구 호출 필요
115
- | 'content_filter' // 콘텐츠 필터링
116
- | 'error'; // 에러
117
-
118
- export interface LlmTokenUsage {
119
- promptTokens: number;
120
- completionTokens: number;
121
- totalTokens: number;
122
- cachedTokens?: number;
123
- }
124
- ```
125
-
126
- ### 3.1.3 도구 정의 타입
127
-
128
- ```typescript
129
- // packages/core/src/providers/types.ts
130
-
131
- export interface LlmToolDefinition {
132
- name: string;
133
- description: string;
134
- parameters: LlmToolParameters;
135
- }
136
-
137
- export interface LlmToolParameters {
138
- type: 'object';
139
- properties: Record<string, LlmToolProperty>;
140
- required?: string[];
141
- }
142
-
143
- export interface LlmToolProperty {
144
- type: 'string' | 'number' | 'boolean' | 'array' | 'object';
145
- description?: string;
146
- enum?: string[];
147
- items?: LlmToolProperty; // array인 경우
148
- properties?: Record<string, LlmToolProperty>; // object인 경우
149
- }
150
- ```
151
-
152
- ```typescript
153
- // packages/core/src/providers/types.ts
154
-
155
- export interface LlmStreamEvent {
156
- type: 'content_delta' | 'tool_call_delta' | 'message_end' | 'error';
157
- delta?: {
158
- text?: string;
159
- toolCall?: Partial<LlmToolCallContent>;
160
- };
161
- usage?: LlmTokenUsage;
162
- error?: LlmError;
163
-
164
- // Provider-specific metadata (optional)
165
- metadata?: Record<string, unknown>;
166
-
167
- // Didim integration: conversation tracking
168
- threadId?: string; // 대화 스레드 ID (multi-turn)
169
- qaId?: string; // 개별 Q&A 세션 ID
170
- }
171
-
172
- export type LlmStream = AsyncGenerator<LlmStreamEvent, void, unknown>;
173
- ```
174
-
175
- ## 3.2 ContentGenerator 인터페이스 재정의
176
-
177
- ### 3.2.1 새 인터페이스
178
-
179
- ```typescript
180
- // packages/core/src/providers/types.ts
181
-
182
- export interface ContentGenerator {
183
- /**
184
- * 프로바이더 정보
185
- */
186
- readonly providerName: string;
187
- readonly capabilities: ProviderCapabilities;
188
-
189
- /**
190
- * 콘텐츠 생성 (비스트리밍)
191
- */
192
- generateContent(
193
- request: LlmGenerateRequest,
194
- options?: GenerateOptions,
195
- ): Promise<LlmGenerateResponse>;
196
-
197
- /**
198
- * 콘텐츠 생성 (스트리밍)
199
- */
200
- generateContentStream(
201
- request: LlmGenerateRequest,
202
- options?: GenerateOptions,
203
- ): Promise<LlmStream>;
204
-
205
- /**
206
- * 토큰 수 계산
207
- */
208
- countTokens(request: LlmGenerateRequest): Promise<LlmTokenCount>;
209
-
210
- /**
211
- * 임베딩 생성 (선택적)
212
- */
213
- embedContent?(request: LlmEmbedRequest): Promise<LlmEmbedResponse>;
214
- }
215
-
216
- export interface GenerateOptions {
217
- signal?: AbortSignal;
218
- timeout?: number;
219
- traceId?: string;
220
- }
221
-
222
- export interface LlmTokenCount {
223
- totalTokens: number;
224
- breakdown?: {
225
- messages: number;
226
- tools: number;
227
- system: number;
228
- };
229
- }
230
-
231
- export interface ProviderCapabilities {
232
- supportsStreaming: boolean;
233
- supportsToolCalls: boolean;
234
- supportsImageInput: boolean;
235
- supportsImageGeneration: boolean;
236
- supportsEmbedding: boolean;
237
- supportsTokenCount: boolean;
238
- supportsSystemMessage: boolean;
239
- maxContextLength: number;
240
- maxOutputTokens: number;
241
- }
242
- ```
243
-
244
- ## 3.3 어댑터 구현
245
-
246
- ### 3.3.1 기본 어댑터 추상 클래스
247
-
248
- ```typescript
249
- // packages/core/src/providers/baseAdapter.ts
250
-
251
- export abstract class BaseAdapter implements ContentGenerator {
252
- abstract readonly providerName: string;
253
- abstract readonly capabilities: ProviderCapabilities;
254
-
255
- constructor(protected config: AdapterConfig) {}
256
-
257
- abstract generateContent(
258
- request: LlmGenerateRequest,
259
- userPromptId: string,
260
- options?: GenerateOptions,
261
- ): Promise<LlmGenerateResponse>;
262
-
263
- abstract generateContentStream(
264
- request: LlmGenerateRequest,
265
- userPromptId: string,
266
- options?: GenerateOptions,
267
- ): Promise<LlmStream>;
268
-
269
- abstract countTokens(request: LlmGenerateRequest): Promise<LlmTokenCount>;
270
-
271
- // 기본 구현: 지원하지 않음
272
- embedContent(request: LlmEmbedRequest): Promise<LlmEmbedResponse> {
273
- throw new UnsupportedFeatureError(
274
- `Embedding is not supported by ${this.providerName}`,
275
- );
276
- }
277
-
278
- // 공통 유틸리티 메서드
279
- protected validateRequest(request: LlmGenerateRequest): void {
280
- if (!request.model) {
281
- throw new ValidationError('Model is required');
282
- }
283
- if (!request.messages || request.messages.length === 0) {
284
- throw new ValidationError('At least one message is required');
285
- }
286
- }
287
-
288
- protected handleError(error: unknown): never {
289
- if (error instanceof LlmError) {
290
- throw error;
291
- }
292
- throw new LlmError(
293
- LlmErrorType.UNKNOWN,
294
- `${this.providerName} error: ${error}`,
295
- );
296
- }
297
- }
298
-
299
- export interface AdapterConfig {
300
- apiKey?: string; // ADC 등 사용 시 선택적
301
- baseUrl?: string;
302
- timeout?: number;
303
- maxRetries?: number;
304
- // 프로바이더별 추가 설정 (예: googleAuthOptions)
305
- [key: string]: unknown;
306
- }
307
- ```
308
-
309
- ### 3.3.2 Gemini 어댑터
310
-
311
- ```typescript
312
- // packages/core/src/providers/gemini/adapter.ts
313
-
314
- import { GoogleGenAI, GenerateContentParameters } from '@google/genai';
315
- import { BaseAdapter, AdapterConfig } from '../baseAdapter';
316
- import {
317
- LlmGenerateRequest,
318
- LlmGenerateResponse,
319
- LlmStream,
320
- ProviderCapabilities,
321
- } from '../types';
322
- import { GeminiTypeConverter } from './converter';
323
-
324
- export class GeminiAdapter extends BaseAdapter {
325
- readonly providerName = 'gemini';
326
- readonly capabilities: ProviderCapabilities = {
327
- supportsStreaming: true,
328
- supportsToolCalls: true,
329
- supportsImageInput: true,
330
- supportsImageGeneration: true,
331
- supportsEmbedding: true,
332
- supportsTokenCount: true,
333
- supportsSystemMessage: true,
334
- maxContextLength: 1_000_000, // 모델별로 다를 수 있음 (구현 시 동적 처리 권장)
335
- maxOutputTokens: 8_192,
336
- };
337
-
338
- private client: GoogleGenAI;
339
- private converter: GeminiTypeConverter;
340
-
341
- constructor(config: AdapterConfig) {
342
- super(config);
343
- // apiKey가 없으면 ADC 등을 사용한다고 가정 (SDK 버전에 따라 처리)
344
- this.client = new GoogleGenAI({
345
- apiKey: config.apiKey || '',
346
- apiVersion: 'v1beta', // 예시
347
- });
348
- this.converter = new GeminiTypeConverter();
349
- }
350
-
351
- async generateContent(
352
- request: LlmGenerateRequest,
353
- userPromptId: string,
354
- options?: GenerateOptions,
355
- ): Promise<LlmGenerateResponse> {
356
- this.validateRequest(request);
357
-
358
- try {
359
- const geminiRequest = this.converter.toGeminiRequest(request);
360
-
361
- const modelParams = {
362
- model: request.model,
363
- ...this.config, // baseUrl 등 전달 가능한 경우
364
- };
365
-
366
- const response = await this.client
367
- .getGenerativeModel(modelParams)
368
- .generateContent(geminiRequest);
369
-
370
- return this.converter.fromGeminiResponse(response, request.model);
371
- } catch (error) {
372
- throw this.mapGeminiError(error);
373
- }
374
- }
375
-
376
- async generateContentStream(
377
- request: LlmGenerateRequest,
378
- userPromptId: string,
379
- options?: GenerateOptions,
380
- ): Promise<LlmStream> {
381
- this.validateRequest(request);
382
-
383
- const geminiRequest = this.converter.toGeminiRequest(request);
384
- const model = this.client.getGenerativeModel({ model: request.model });
385
-
386
- return this.createStream(model, geminiRequest, options);
387
- }
388
-
389
- // countTokens, embedContent ...
390
-
391
- private async *createStream(
392
- model: GenerativeModel,
393
- request: GenerateContentParameters,
394
- options?: GenerateOptions,
395
- ): LlmStream {
396
- const stream = await model.generateContentStream(request);
397
-
398
- // 스트리밍 중 도구 호출 ID 유지를 위한 상태
399
- let currentToolCallId: string | null = null;
400
- let currentFunctionName: string | null = null;
401
-
402
- for await (const chunk of stream) {
403
- // Chunk 내에 함수 호출이 있는지 확인하여 ID 관리
404
- const parts = chunk.candidates?.[0]?.content?.parts || [];
405
- const functionCallPart = parts.find((p) => 'functionCall' in p);
406
-
407
- if (functionCallPart && 'functionCall' in functionCallPart) {
408
- // 새로운 함수 호출 시작으로 간주하거나, 기존 호출의 연속일 수 있음
409
- // Gemini 스트림에서 functionCall이 나뉘어 오는지 확인 필요
410
- // 여기서는 단순화를 위해 매 호출마다 새로운 ID를 부여하지 않고,
411
- // 스트림 컨텍스트 내에서 관리하는 로직을 예시로 듦.
412
- if (
413
- !currentToolCallId ||
414
- currentFunctionName !== functionCallPart.functionCall.name
415
- ) {
416
- currentToolCallId = crypto.randomUUID();
417
- currentFunctionName = functionCallPart.functionCall.name;
418
- }
419
- } else {
420
- // 텍스트 청크나 기타 이벤트
421
- if (parts.some((p) => 'text' in p)) {
422
- // 텍스트 전환 시 도구 호출 컨텍스트 초기화 여부 결정
423
- }
424
- }
425
-
426
- yield this.converter.fromGeminiStreamChunk(chunk, currentToolCallId);
427
- }
428
- }
429
-
430
- // ... mapGeminiError
431
- }
432
- ```
433
-
434
- ### 3.3.3 Gemini 타입 변환기
435
-
436
- ```typescript
437
- // packages/core/src/providers/gemini/converter.ts
438
-
439
- import {
440
- GenerateContentParameters,
441
- GenerateContentResponse,
442
- Content,
443
- Part
444
- } from '@google/genai';
445
- import {
446
- LlmGenerateRequest,
447
- LlmGenerateResponse,
448
- LlmMessage,
449
- LlmContent,
450
- LlmStreamEvent
451
- } from '../types';
452
-
453
- export class GeminiTypeConverter {
454
- /**
455
- * 공통 요청 → Gemini 요청
456
- */
457
- toGeminiRequest(request: LlmGenerateRequest): GenerateContentParameters {
458
- const { contents, systemInstruction } = this.toGeminiContents(request.messages);
459
-
460
- // 요청의 systemInstruction이 있으면 우선 사용, 없으면 메시지에서 추출한 것 사용
461
- const finalSystemInstruction = request.systemInstruction
462
- ? (systemInstruction.length > 0 ? { parts: [{ text: `${request.systemInstruction}\n${systemInstruction}` }] } : { parts: [{ text: request.systemInstruction }] })
463
- : (systemInstruction.length > 0 ? { parts: [{ text: systemInstruction }] } : undefined);
464
-
465
- return {
466
- contents,
467
- systemInstruction: finalSystemInstruction,
468
- tools: request.tools
469
- ? this.toGeminiTools(request.tools)
470
- : undefined,
471
- toolConfig: request.toolChoice
472
- ? this.toGeminiToolConfig(request.toolChoice)
473
- : undefined,
474
- generationConfig: {
475
- temperature: request.temperature,
476
- maxOutputTokens: request.maxTokens,
477
- topP: request.topP,
478
- topK: request.topK,
479
- stopSequences: request.stopSequences,
480
- responseMimeType: request.responseFormat === 'json' ? 'application/json' : 'text/plain',
481
- },
482
- };
483
- }
484
-
485
- /**
486
- * Gemini 응답 → 공통 응답
487
- */
488
- fromGeminiResponse(response: GenerateContentResponse, model: string = 'unknown'): LlmGenerateResponse {
489
- const candidate = response.candidates?.[0];
490
-
491
- return {
492
- id: response.responseId || crypto.randomUUID(),
493
- content: this.fromGeminiParts(candidate?.content?.parts || []),
494
- model: response.modelVersion || model,
495
- stopReason: this.mapStopReason(candidate?.finishReason),
496
- usage: {
497
- promptTokens: response.usageMetadata?.promptTokenCount || 0,
498
- completionTokens: response.usageMetadata?.candidatesTokenCount || 0,
499
- totalTokens: response.usageMetadata?.totalTokenCount || 0,
500
- },
501
- rawResponse: response,
502
- };
503
- }
504
-
505
- /**
506
- * Gemini 스트림 청크 → 공통 스트림 이벤트
507
- */
508
- fromGeminiStreamChunk(chunk: GenerateContentResponse, forcedToolCallId?: string | null): LlmStreamEvent {
509
- const candidate = chunk.candidates?.[0];
510
- const parts = candidate?.content?.parts || [];
511
-
512
- // 텍스트 델타
513
- const textPart = parts.find(p => 'text' in p);
514
- if (textPart && 'text' in textPart) {
515
- return {
516
- type: 'content_delta',
517
- delta: { text: textPart.text },
518
- };
519
- }
520
-
521
- // 도구 호출 델타
522
- const functionPart = parts.find(p => 'functionCall' in p);
523
- if (functionPart && 'functionCall' in functionPart) {
524
- return {
525
- type: 'tool_call_delta',
526
- delta: {
527
- toolCall: {
528
- type: 'tool_call',
529
- id: forcedToolCallId || crypto.randomUUID(), // 외부에서 관리된 ID 사용 권장
530
- name: functionPart.functionCall.name,
531
- arguments: functionPart.functionCall.args,
532
- },
533
- },
534
- };
535
- }
536
-
537
- // 종료
538
- if (candidate?.finishReason) {
539
- return {
540
- type: 'message_end',
541
- usage: {
542
- promptTokens: chunk.usageMetadata?.promptTokenCount || 0,
543
- completionTokens: chunk.usageMetadata?.candidatesTokenCount || 0,
544
- totalTokens: chunk.usageMetadata?.totalTokenCount || 0,
545
- },
546
- // stopReason 추가 필요 (types.ts 정의 확인)
547
- };
548
- }
549
-
550
- return { type: 'content_delta', delta: {} };
551
- }
552
-
553
- private toGeminiContents(messages: LlmMessage[]): { contents: Content[], systemInstruction: string } {
554
- const contents: Content[] = [];
555
- let systemInstruction = '';
556
-
557
- for (const msg of messages) {
558
- if (msg.role === 'system') {
559
- const textParts = msg.content.filter(c => c.type === 'text') as LlmTextContent[];
560
- systemInstruction += textParts.map(c => c.text).join('\n') + '\n';
561
- continue;
562
- }
563
-
564
- const role = msg.role === 'assistant' ? 'model' : 'user';
565
- // tool role 메시지도 Gemini에서는 user role에 functionResponse Parts로 포함됨
566
-
567
- contents.push({
568
- role,
569
- parts: this.toGeminiParts(msg.content),
570
- });
571
- }
572
-
573
- return { contents, systemInstruction };
574
- }
575
-
576
- private toGeminiParts(contents: LlmContent[]): Part[] {
577
- return contents.map(content => {
578
- switch (content.type) {
579
- case 'text':
580
- return { text: content.text };
581
- case 'image':
582
- if (content.source.type === 'url') {
583
- // URL 이미지는 fileData로 처리 (Gemini File API가 지원하는 URI여야 함)
584
- // 일반 HTTP URL인 경우 Adapter 레벨에서 다운로드 후 base64 변환하거나
585
- // 5.x 버전 SDK의 fileData 처리 확인 필요.
586
- // 여기서는 설계를 위해 fileData로 매핑
587
- return {
588
- fileData: {
589
- mimeType: content.source.mediaType,
590
- fileUri: content.source.data,
591
- }
592
- };
593
- }
594
- return {
595
- inlineData: {
596
- mimeType: content.source.mediaType,
597
- data: content.source.data,
598
- },
599
- };
600
- case 'tool_call':
601
- return {
602
- functionCall: {
603
- name: content.name,
604
- args: content.arguments,
605
- },
606
- };
607
- case 'tool_result':
608
- return {
609
- functionResponse: {
610
- name: content.name || content.toolCallId, // name 필수
611
- response: { result: content.content },
612
- },
613
- };
614
- }
615
- });
616
- }
617
-
618
- private fromGeminiParts(parts: Part[]): LlmContent[] {
619
- return parts.map(part => {
620
- if ('text' in part) {
621
- return { type: 'text', text: part.text };
622
- }
623
- if ('functionCall' in part) {
624
- return {
625
- type: 'tool_call',
626
- id: crypto.randomUUID(), // 응답 객체에서 복원할 수 없는 경우 랜덤 생성 (Stateful 관리 필요하면 상위에서 처리)
627
- name: part.functionCall.name,
628
- arguments: part.functionCall.args,
629
- };
630
- }
631
- if ('inlineData' in part) {
632
- return {
633
- type: 'image',
634
- source: {
635
- type: 'base64',
636
- mediaType: part.inlineData.mimeType,
637
- data: part.inlineData.data
638
- }
639
- };
640
- }
641
- // 기타 타입 처리
642
- return { type: 'text', text: '' };
643
- });
644
- }
645
-
646
- // ... mapStopReason, toGeminiTools ...
647
-
648
- private toGeminiToolConfig(choice: any): ToolConfig {
649
- // 구현 필요
650
- return {};
651
- }
652
- }
653
-
654
- private mapStopReason(reason?: string): LlmStopReason {
655
- switch (reason) {
656
- case 'STOP': return 'end_turn';
657
- case 'MAX_TOKENS': return 'max_tokens';
658
- case 'SAFETY': return 'content_filter';
659
- case 'TOOL_USE': return 'tool_use';
660
- default: return 'end_turn';
661
- }
662
- }
663
-
664
- private toGeminiTools(tools: LlmToolDefinition[]): Tool[] {
665
- return [{
666
- functionDeclarations: tools.map(tool => ({
667
- name: tool.name,
668
- description: tool.description,
669
- parameters: tool.parameters,
670
- })),
671
- }];
672
- }
673
- }
674
- ```
675
-
676
- ### 3.3.4 Claude 어댑터
677
-
678
- ```typescript
679
- // packages/core/src/providers/claude/adapter.ts
680
-
681
- import Anthropic from '@anthropic-ai/sdk';
682
- import { BaseAdapter, AdapterConfig } from '../baseAdapter';
683
- import {
684
- LlmGenerateRequest,
685
- LlmGenerateResponse,
686
- LlmStream,
687
- ProviderCapabilities,
688
- } from '../types';
689
- import { ClaudeTypeConverter } from './converter';
690
-
691
- export class ClaudeAdapter extends BaseAdapter {
692
- readonly providerName = 'claude';
693
- readonly capabilities: ProviderCapabilities = {
694
- supportsStreaming: true,
695
- supportsToolCalls: true,
696
- supportsImageInput: true, // URL 이미지는 Converter에서 다운로드 처리 필요
697
- supportsImageGeneration: false,
698
- supportsEmbedding: false,
699
- supportsTokenCount: false,
700
- supportsSystemMessage: true,
701
- maxContextLength: 200_000,
702
- maxOutputTokens: 8_192,
703
- };
704
-
705
- private client: Anthropic;
706
- private converter: ClaudeTypeConverter;
707
-
708
- constructor(config: AdapterConfig) {
709
- super(config);
710
- this.client = new Anthropic({ apiKey: config.apiKey });
711
- this.converter = new ClaudeTypeConverter();
712
- }
713
-
714
- async generateContent(
715
- request: LlmGenerateRequest,
716
- userPromptId: string,
717
- options?: GenerateOptions,
718
- ): Promise<LlmGenerateResponse> {
719
- this.validateRequest(request);
720
-
721
- // 이미지 등 비동기 리소스 해결 (URL 다운로드)
722
- const resolvedRequest = await this.converter.resolveResources(request);
723
- const claudeRequest = this.converter.toClaudeRequest(
724
- resolvedRequest,
725
- false,
726
- );
727
-
728
- try {
729
- const response = await this.client.messages.create(claudeRequest);
730
- return this.converter.fromClaudeResponse(response);
731
- } catch (error) {
732
- throw this.mapClaudeError(error);
733
- }
734
- }
735
-
736
- async generateContentStream(
737
- request: LlmGenerateRequest,
738
- userPromptId: string,
739
- options?: GenerateOptions,
740
- ): Promise<LlmStream> {
741
- this.validateRequest(request);
742
-
743
- const resolvedRequest = await this.converter.resolveResources(request);
744
- const claudeRequest = this.converter.toClaudeRequest(resolvedRequest, true);
745
-
746
- return this.createStream(claudeRequest, options);
747
- }
748
-
749
- // ... (countTokens, createStream, mapClaudeError 구현은 기존과 동일하되 createStream 로직 보완 필요)
750
-
751
- private async *createStream(
752
- request: Anthropic.MessageCreateParams,
753
- options?: GenerateOptions,
754
- ): LlmStream {
755
- const stream = await this.client.messages.stream(request);
756
-
757
- // 스트림 어셈블러: 델타를 모아 완전한 툴 호출 등을 구성하는데 도움을 줄 수 있음
758
- // 여기서는 Converter가 Delta 이벤트를 직접 처리하도록 위임
759
- for await (const event of stream) {
760
- yield this.converter.fromClaudeStreamEvent(event);
761
- }
762
- }
763
-
764
- private mapClaudeError(error: unknown): LlmError {
765
- // ... (기존 에러 매핑 로직)
766
- return new LlmError(LlmErrorType.UNKNOWN, String(error));
767
- }
768
- }
769
- ```
770
-
771
- ### 3.3.5 Claude 타입 변환기 (추가)
772
-
773
- ```typescript
774
- // packages/core/src/providers/claude/converter.ts
775
-
776
- import Anthropic from '@anthropic-ai/sdk';
777
- import {
778
- LlmGenerateRequest,
779
- LlmGenerateResponse,
780
- LlmMessage,
781
- LlmContent,
782
- LlmStreamEvent,
783
- LlmStopReason,
784
- } from '../types';
785
-
786
- export class ClaudeTypeConverter {
787
- /**
788
- * 외부 리소스(이미지 URL 등) 다운로드 및 포맷팅
789
- */
790
- async resolveResources(
791
- request: LlmGenerateRequest,
792
- ): Promise<LlmGenerateRequest> {
793
- // 실제 구현 시:
794
- // 1. 메시지 내의 모든 Image Content 스캔
795
- // 2. URL 타입인 경우 fetch 후 base64 변환
796
- // 3. 변환된 데이터로 교체된 새 request 반환
797
- return request; // Placeholder
798
- }
799
-
800
- toClaudeRequest(
801
- request: LlmGenerateRequest,
802
- stream: boolean,
803
- ): Anthropic.MessageCreateParams {
804
- // System Instruction 병합 정책: Request 우선 + 메시지 내 System은 Prepend
805
- const { system, messages } = this.splitSystemMessage(request.messages);
806
- const finalSystem = request.systemInstruction
807
- ? system
808
- ? `${request.systemInstruction}\n${system}`
809
- : request.systemInstruction
810
- : system;
811
-
812
- return {
813
- model: request.model,
814
- system: finalSystem,
815
- messages: this.toClaudeMessages(messages),
816
- max_tokens: request.maxTokens || 4096,
817
- temperature: request.temperature,
818
- top_p: request.topP,
819
- top_k: request.topK,
820
- stop_sequences: request.stopSequences,
821
- tools: request.tools ? this.toClaudeTools(request.tools) : undefined,
822
- tool_choice: request.toolChoice
823
- ? this.toClaudeToolChoice(request.toolChoice)
824
- : undefined,
825
- stream,
826
- } as any; // stream 타입 호환성 위해 any 캐스팅 혹은 분기 처리
827
- }
828
-
829
- // ... (fromClaudeResponse, splitSystemMessage, toClaudeMessages, toClaudeContent 기존 유지)
830
-
831
- fromClaudeStreamEvent(event: Anthropic.MessageStreamEvent): LlmStreamEvent {
832
- if (
833
- event.type === 'content_block_delta' &&
834
- event.delta.type === 'text_delta'
835
- ) {
836
- return {
837
- type: 'content_delta',
838
- delta: { text: event.delta.text },
839
- };
840
- }
841
-
842
- // Tool Call Stream 지원
843
- if (
844
- event.type === 'content_block_start' &&
845
- event.content_block.type === 'tool_use'
846
- ) {
847
- return {
848
- type: 'tool_call_delta',
849
- delta: {
850
- toolCall: {
851
- type: 'tool_call',
852
- id: event.content_block.id,
853
- name: event.content_block.name,
854
- arguments: {}, // 시작 시점엔 빈 객체
855
- },
856
- },
857
- };
858
- }
859
-
860
- if (
861
- event.type === 'content_block_delta' &&
862
- event.delta.type === 'input_json_delta'
863
- ) {
864
- // 부분 JSON 전달.
865
- // 주의: 공통 인터페이스가 'arguments 문자열 델타'를 받는지 '파싱된 객체'를 받는지 정의 필요.
866
- // 여기서는 문자열 델타를 전달하거나, 상위에서 조립해야 함.
867
- // 임시적으로 arguments 필드에 partial string을 넣는 방식 사용 가능 (타입 정의 확인 필요)
868
- return {
869
- type: 'tool_call_delta',
870
- delta: {
871
- toolCall: {
872
- // 부분 문자열 전달 (LlmToolCallContent 정의가 string args 지원 시)
873
- // 현재 정의는 Record<string, unknown>이므로,
874
- // **StreamAssembler**가 필수적임.
875
- // 이 단계에서는 raw string 델타를 보낼 방법이 마땅치 않으므로
876
- // 임시로 무시하거나 별도 이벤트 타입 필요.
877
- },
878
- },
879
- };
880
- }
881
-
882
- if (event.type === 'message_stop') {
883
- // usage 정보가 event 내에 없을 수 있음 (message_delta 등에서 확인 필요)
884
- return { type: 'message_end' };
885
- }
886
-
887
- return { type: 'content_delta', delta: {} };
888
- }
889
-
890
- private toClaudeToolChoice(
891
- choice: NonNullable<LlmGenerateRequest['toolChoice']>,
892
- ): Anthropic.MessageCreateParams.ToolChoice {
893
- if (choice === 'auto') return { type: 'auto' };
894
- if (choice === 'none') return { type: 'any' }; // 주의: Claude는 'none' 명시가 없음, 툴을 안 보내거나 auto
895
- if (choice === 'required') return { type: 'any' };
896
- if (typeof choice === 'object' && choice.name) {
897
- return { type: 'tool', name: choice.name };
898
- }
899
- return { type: 'auto' };
900
- }
901
-
902
- // ... (기타 메서드)
903
- }
904
- ```
905
-
906
- ### 3.3.6 Claude 어댑터 (추가)
907
-
908
- ```typescript
909
- // packages/core/src/providers/claude/adapter.ts
910
-
911
- import Anthropic from '@anthropic-ai/sdk';
912
- import { BaseAdapter, AdapterConfig } from '../baseAdapter';
913
- import {
914
- LlmGenerateRequest,
915
- LlmGenerateResponse,
916
- LlmStream,
917
- ProviderCapabilities,
918
- LlmError,
919
- LlmErrorType,
920
- LlmTokenCount,
921
- } from '../types';
922
- import { ClaudeTypeConverter } from './converter';
923
- import { GenerateOptions } from '../contentGenerator';
924
-
925
- export class ClaudeAdapter extends BaseAdapter {
926
- readonly providerName = 'claude';
927
- readonly capabilities: ProviderCapabilities = {
928
- supportsStreaming: true,
929
- supportsToolCalls: true,
930
- supportsImageInput: true,
931
- supportsImageGeneration: false, // Claude는 이미지 생성 미지원
932
- supportsEmbedding: false, // Claude는 임베딩 미지원
933
- supportsTokenCount: false, // 토큰 카운트는 추정만 가능
934
- supportsSystemMessage: true,
935
- maxContextLength: 200_000,
936
- maxOutputTokens: 8_192,
937
- };
938
-
939
- private client: Anthropic;
940
- private converter: ClaudeTypeConverter;
941
-
942
- constructor(config: AdapterConfig) {
943
- super(config);
944
- this.client = new Anthropic({ apiKey: config.apiKey });
945
- this.converter = new ClaudeTypeConverter();
946
- }
947
-
948
- async generateContent(
949
- request: LlmGenerateRequest,
950
- userPromptId: string,
951
- options?: GenerateOptions,
952
- ): Promise<LlmGenerateResponse> {
953
- this.validateRequest(request);
954
-
955
- try {
956
- const claudeRequest = this.converter.toClaudeRequest(request, false);
957
- const response = await this.client.messages.create(claudeRequest);
958
- return this.converter.fromClaudeResponse(response);
959
- } catch (error) {
960
- throw this.mapClaudeError(error);
961
- }
962
- }
963
-
964
- async generateContentStream(
965
- request: LlmGenerateRequest,
966
- userPromptId: string,
967
- options?: GenerateOptions,
968
- ): Promise<LlmStream> {
969
- this.validateRequest(request);
970
-
971
- const claudeRequest = this.converter.toClaudeRequest(request, true);
972
-
973
- return this.createStream(claudeRequest, options);
974
- }
975
-
976
- async countTokens(request: LlmGenerateRequest): Promise<LlmTokenCount> {
977
- // Claude는 공식 토큰 카운트 API가 없으므로 추정
978
- // tiktoken 또는 간단한 휴리스틱 사용
979
- const text = request.messages
980
- .map((m) => m.content.map((c) => ('text' in c ? c.text : '')).join(''))
981
- .join('');
982
-
983
- // 대략적인 추정: 4자당 1토큰
984
- const estimatedTokens = Math.ceil(text.length / 4);
985
-
986
- return {
987
- totalTokens: estimatedTokens,
988
- };
989
- }
990
-
991
- private async *createStream(
992
- request: Anthropic.MessageCreateParams,
993
- options?: GenerateOptions,
994
- ): LlmStream {
995
- const stream = await this.client.messages.stream(request);
996
-
997
- for await (const event of stream) {
998
- yield this.converter.fromClaudeStreamEvent(event);
999
- }
1000
- }
1001
-
1002
- private mapClaudeError(error: unknown): LlmError {
1003
- if (error instanceof Anthropic.APIError) {
1004
- switch (error.status) {
1005
- case 429:
1006
- return new LlmError(LlmErrorType.RATE_LIMIT, error.message);
1007
- case 401:
1008
- case 403:
1009
- return new LlmError(LlmErrorType.AUTHENTICATION, error.message);
1010
- case 400:
1011
- return new LlmError(LlmErrorType.INVALID_REQUEST, error.message);
1012
- case 529:
1013
- return new LlmError(LlmErrorType.MODEL_OVERLOADED, error.message);
1014
- }
1015
- }
1016
- return new LlmError(LlmErrorType.UNKNOWN, String(error));
1017
- }
1018
- }
1019
- ```
1020
-
1021
- ### 3.3.7 OpenAI 어댑터 (구조 예시)
1022
-
1023
- ```typescript
1024
- // packages/core/src/providers/openai/adapter.ts
1025
-
1026
- import OpenAI from 'openai';
1027
- import { BaseAdapter, AdapterConfig } from '../baseAdapter';
1028
- import {
1029
- LlmGenerateRequest,
1030
- LlmGenerateResponse,
1031
- LlmStream,
1032
- ProviderCapabilities,
1033
- LlmTokenCount,
1034
- } from '../types';
1035
- import { OpenAITypeConverter } from './converter';
1036
- import { GenerateOptions } from '../contentGenerator';
1037
-
1038
- export class OpenAIAdapter extends BaseAdapter {
1039
- // ... (implementation as previously shown)
1040
- }
1041
- ```
1042
-
1043
- ### 3.3.8 OpenAI 타입 변환기 (추가)
1044
-
1045
- ```typescript
1046
- // packages/core/src/providers/openai/converter.ts
1047
-
1048
- import OpenAI from 'openai';
1049
- import {
1050
- LlmGenerateRequest,
1051
- LlmGenerateResponse,
1052
- LlmMessage,
1053
- LlmContent,
1054
- LlmStreamEvent,
1055
- LlmStopReason,
1056
- } from '../types';
1057
-
1058
- export class OpenAITypeConverter {
1059
- toOpenAIRequest(
1060
- request: LlmGenerateRequest,
1061
- ): OpenAI.Chat.ChatCompletionCreateParamsNonStreaming {
1062
- // OpenAI는 system role을 messages 배열 내에서 지원
1063
- const messages = this.toOpenAIMessages(
1064
- request.messages,
1065
- request.systemInstruction,
1066
- );
1067
-
1068
- return {
1069
- model: request.model,
1070
- messages,
1071
- max_tokens: request.maxTokens,
1072
- temperature: request.temperature,
1073
- top_p: request.topP,
1074
- stop: request.stopSequences,
1075
- tools: request.tools ? this.toOpenAITools(request.tools) : undefined,
1076
- tool_choice: request.toolChoice
1077
- ? this.toOpenAIToolChoice(request.toolChoice)
1078
- : undefined,
1079
- response_format:
1080
- request.responseFormat === 'json' ? { type: 'json_object' } : undefined,
1081
- };
1082
- }
1083
-
1084
- fromOpenAIResponse(
1085
- response: OpenAI.Chat.ChatCompletion,
1086
- ): LlmGenerateResponse {
1087
- const choice = response.choices[0];
1088
-
1089
- return {
1090
- id: response.id,
1091
- content: this.fromOpenAIMessage(choice.message),
1092
- model: response.model,
1093
- stopReason: this.mapStopReason(choice.finish_reason),
1094
- usage: {
1095
- promptTokens: response.usage?.prompt_tokens || 0,
1096
- completionTokens: response.usage?.completion_tokens || 0,
1097
- totalTokens: response.usage?.total_tokens || 0,
1098
- },
1099
- rawResponse: response,
1100
- };
1101
- }
1102
-
1103
- private toOpenAIMessages(
1104
- messages: LlmMessage[],
1105
- systemInstruction?: string,
1106
- ): OpenAI.Chat.ChatCompletionMessageParam[] {
1107
- const openaiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [];
1108
-
1109
- if (systemInstruction) {
1110
- openaiMessages.push({ role: 'system', content: systemInstruction });
1111
- }
1112
-
1113
- for (const msg of messages) {
1114
- if (msg.role === 'system') {
1115
- // 이미 systemInstruction으로 처리되었거나, 별도 system 메시지로 추가
1116
- const content = msg.content
1117
- .map((c) => ('text' in c ? c.text : ''))
1118
- .join('\n');
1119
- openaiMessages.push({ role: 'system', content });
1120
- continue;
1121
- }
1122
-
1123
- if (msg.role === 'tool') {
1124
- // role: tool -> tool result
1125
- for (const content of msg.content) {
1126
- if (content.type === 'tool_result') {
1127
- openaiMessages.push({
1128
- role: 'tool',
1129
- tool_call_id: content.toolCallId,
1130
- content: content.content,
1131
- });
1132
- }
1133
- }
1134
- continue;
1135
- }
1136
-
1137
- openaiMessages.push({
1138
- role: msg.role as 'user' | 'assistant',
1139
- content: this.toOpenAIContent(msg.content),
1140
- // assistant tool calls 처리 필요
1141
- tool_calls:
1142
- msg.role === 'assistant'
1143
- ? this.extractToolCalls(msg.content)
1144
- : undefined,
1145
- } as any);
1146
- }
1147
-
1148
- return openaiMessages;
1149
- }
1150
-
1151
- private toOpenAIContent(contents: LlmContent[]): any {
1152
- // 텍스트만 있는 경우 문자열로 반환 가능
1153
- const textOnly = contents.every((c) => c.type === 'text');
1154
- if (textOnly) {
1155
- return contents.map((c) => (c as any).text).join('');
1156
- }
1157
-
1158
- return contents
1159
- .map((content) => {
1160
- switch (content.type) {
1161
- case 'text':
1162
- return { type: 'text', text: content.text };
1163
- case 'image':
1164
- return {
1165
- type: 'image_url',
1166
- image_url: {
1167
- url:
1168
- content.source.type === 'url'
1169
- ? content.source.data
1170
- : `data:${content.source.mediaType};base64,${content.source.data}`,
1171
- },
1172
- };
1173
- // tool_call, tool_result는 message level에서 처리 (위 loop 참조)
1174
- }
1175
- })
1176
- .filter(Boolean);
1177
- }
1178
-
1179
- private extractToolCalls(
1180
- contents: LlmContent[],
1181
- ): OpenAI.Chat.ChatCompletionMessageToolCall[] | undefined {
1182
- const toolCalls = contents
1183
- .filter((c) => c.type === 'tool_call')
1184
- .map((c) => ({
1185
- id: (c as any).id,
1186
- type: 'function',
1187
- function: {
1188
- name: (c as any).name,
1189
- arguments: JSON.stringify((c as any).arguments),
1190
- },
1191
- }));
1192
- return toolCalls.length > 0 ? (toolCalls as any) : undefined;
1193
- }
1194
-
1195
- private fromOpenAIMessage(
1196
- message: OpenAI.Chat.ChatCompletionMessage,
1197
- ): LlmContent[] {
1198
- const contents: LlmContent[] = [];
1199
-
1200
- if (message.content) {
1201
- contents.push({ type: 'text', text: message.content });
1202
- }
1203
-
1204
- if (message.tool_calls) {
1205
- for (const tc of message.tool_calls) {
1206
- contents.push({
1207
- type: 'tool_call',
1208
- id: tc.id,
1209
- name: tc.function.name,
1210
- arguments: JSON.parse(tc.function.arguments),
1211
- });
1212
- }
1213
- }
1214
-
1215
- return contents;
1216
- }
1217
-
1218
- // ... mapStopReason, toOpenAITools ...
1219
- private toOpenAITools(tools: any[]): any[] {
1220
- return tools.map((t) => ({
1221
- type: 'function',
1222
- function: {
1223
- name: t.name,
1224
- description: t.description,
1225
- parameters: t.parameters,
1226
- },
1227
- }));
1228
- }
1229
-
1230
- private toOpenAIToolChoice(choice: any): any {
1231
- return choice;
1232
- }
1233
-
1234
- private mapStopReason(reason: any): LlmStopReason {
1235
- if (reason === 'stop') return 'end_turn';
1236
- if (reason === 'length') return 'max_tokens';
1237
- if (reason === 'tool_calls') return 'tool_use';
1238
- return 'end_turn';
1239
- }
1240
- }
1241
- ```
1242
-
1243
- ````
1244
-
1245
- ### 3.4 vLLM 및 기타 OpenAI 호환 프로바이더 확장
1246
-
1247
- vLLM, LM Studio 등 OpenAI API 규격을 따르는 다양한 sLM(small Language Models)을 지원하기 위해 `OpenAICompatibleAdapter`를 도입합니다.
1248
-
1249
- ```typescript
1250
- // packages/core/src/providers/openai/compatibleAdapter.ts
1251
-
1252
- import { OpenAIAdapter } from './adapter';
1253
- import { AdapterConfig } from '../baseAdapter';
1254
- import { ModelSpecification } from '../types';
1255
-
1256
- export interface OpenAICompatibleConfig extends AdapterConfig {
1257
- baseUrl: string; // 필수
1258
- modelSpec?: ModelSpecification; // 모델별 기능 명세
1259
- }
1260
-
1261
- export class OpenAICompatibleAdapter extends OpenAIAdapter {
1262
- constructor(config: OpenAICompatibleConfig) {
1263
- super(config);
1264
- // BaseUrl 등 오버라이딩 처리
1265
- }
1266
- }
1267
- ````
1268
-
1269
- ## 3.5 프로바이더 레지스트리 (제거됨)
1270
-
1271
- `ProviderRegistry`는 `Config` 시스템과의 충돌로 인해 제거되었습니다. 대신
1272
- `createContentGenerator` 팩토리를 확장하여 사용합니다.
1273
-
1274
- ```typescript
1275
- // packages/core/src/providers/registry.ts
1276
- // 파일 삭제
1277
- ```
1278
-
1279
- ### 3.6 통합 팩토리 (createContentGenerator 확장)
1280
-
1281
- 기존 `createContentGenerator` 함수를 확장하여 `LLM_PROVIDER` 설정에 따라 적절한
1282
- 어댑터를 인스턴스화하고, 로깅/레코딩/헤더 처리를 공통으로 적용합니다.
1283
-
1284
- ```typescript
1285
- // packages/core/src/core/contentGenerator.ts
1286
-
1287
- export async function createContentGenerator(
1288
- config: ContentGeneratorConfig,
1289
- gcConfig: Config,
1290
- sessionId?: string,
1291
- ): Promise<ContentGenerator> {
1292
- const providerName = process.env['LLM_PROVIDER'] || 'gemini';
1293
-
1294
- let generator: ContentGenerator;
1295
-
1296
- if (providerName === 'gemini') {
1297
- // 기존 Gemini 로직
1298
- const googleGenAI = new GoogleGenAI({ ... });
1299
- generator = new GeminiAdapter(googleGenAI, config);
1300
- } else if (providerName === 'claude') {
1301
- const apiKey = process.env['ANTHROPIC_API_KEY'];
1302
- if (!apiKey) throw new Error('ANTHROPIC_API_KEY required');
1303
- generator = new ClaudeAdapter({ apiKey });
1304
- } else if (providerName === 'openai') {
1305
- const apiKey = process.env['OPENAI_API_KEY'];
1306
- if (!apiKey) throw new Error('OPENAI_API_KEY required');
1307
- generator = new OpenAIAdapter({ apiKey });
1308
- } else {
1309
- throw new Error(`Unsupported provider: ${providerName}`);
1310
- }
1311
-
1312
- // Apply Common Wrappers
1313
- if (gcConfig.recordResponses) {
1314
- generator = new RecordingContentGenerator(generator, gcConfig.recordResponses);
1315
- }
1316
-
1317
- return generator;
1318
- }
1319
- ```
1320
-
1321
- ## 3.7 에러 처리
1322
-
1323
- ```typescript
1324
- // packages/core/src/providers/errors.ts
1325
-
1326
- export enum LlmErrorType {
1327
- RATE_LIMIT = 'rate_limit',
1328
- AUTHENTICATION = 'authentication',
1329
- INVALID_REQUEST = 'invalid_request',
1330
- MODEL_OVERLOADED = 'model_overloaded',
1331
- CONTEXT_LENGTH_EXCEEDED = 'context_length_exceeded',
1332
- CONTENT_FILTER = 'content_filter',
1333
- NETWORK = 'network',
1334
- TIMEOUT = 'timeout',
1335
- UNSUPPORTED_FEATURE = 'unsupported_feature',
1336
- UNKNOWN = 'unknown',
1337
- }
1338
-
1339
- export class LlmError extends Error {
1340
- constructor(
1341
- public readonly type: LlmErrorType,
1342
- message: string,
1343
- public readonly provider?: string,
1344
- public readonly cause?: Error,
1345
- ) {
1346
- super(message);
1347
- this.name = 'LlmError';
1348
- }
1349
-
1350
- get isRetryable(): boolean {
1351
- return [
1352
- LlmErrorType.RATE_LIMIT,
1353
- LlmErrorType.MODEL_OVERLOADED,
1354
- LlmErrorType.NETWORK,
1355
- LlmErrorType.TIMEOUT,
1356
- ].includes(this.type);
1357
- }
1358
- }
1359
-
1360
- export class UnsupportedFeatureError extends LlmError {
1361
- constructor(message: string, provider?: string) {
1362
- super(LlmErrorType.UNSUPPORTED_FEATURE, message, provider);
1363
- this.name = 'UnsupportedFeatureError';
1364
- }
1365
- }
1366
-
1367
- export class ValidationError extends LlmError {
1368
- constructor(message: string) {
1369
- super(LlmErrorType.INVALID_REQUEST, message);
1370
- this.name = 'ValidationError';
1371
- }
1372
- }
1373
- ```
1374
-
1375
- ## 3.8 기존 코드 마이그레이션
1376
-
1377
- ### 3.7.1 GeminiClient 수정
1378
-
1379
- ```typescript
1380
- // packages/core/src/core/client.ts
1381
-
1382
- // Before
1383
- import { GoogleGenAI } from '@google/genai';
1384
-
1385
- export class GeminiClient {
1386
- private generator: GoogleGenAI;
1387
-
1388
- constructor(apiKey: string) {
1389
- this.generator = new GoogleGenAI({ apiKey });
1390
- }
1391
- }
1392
-
1393
- // After
1394
- import { ContentGenerator } from '../providers/types';
1395
- import { ProviderRegistry } from '../providers/registry';
1396
-
1397
- export class GeminiClient {
1398
- private generator: ContentGenerator;
1399
-
1400
- constructor(generator?: ContentGenerator) {
1401
- // 의존성 주입이 없으면 활성 프로바이더 조회 시도, 없으면 기본값으로 초기화하거나 오류 발생
1402
- const registry = ProviderRegistry.getInstance();
1403
-
1404
- if (generator) {
1405
- this.generator = generator;
1406
- } else {
1407
- try {
1408
- this.generator = registry.getActive();
1409
- } catch (e) {
1410
- // Fallback: 환경 변수로 초기화 시도
1411
- this.generator = ProviderFactory.createFromEnv();
1412
- }
1413
- }
1414
- }
1415
- }
1416
- ```
1417
-
1418
- ### 3.7.2 하위 호환성 유지
1419
-
1420
- ````typescript
1421
- // packages/core/src/index.ts
1422
-
1423
- // 기존 API 유지 (deprecated 마킹)
1424
- // GoogleGenAI 내보내기 제거 또는 래퍼 제공
1425
- // export { GeminiAdapter as GoogleGenAI } from './providers/gemini/adapter'; // 삭제: Breaking Change
1426
-
1427
-
1428
- // 새 API
1429
- export {
1430
- ContentGenerator,
1431
- LlmGenerateRequest,
1432
- LlmGenerateResponse,
1433
- ProviderRegistry,
1434
- ProviderFactory,
1435
- } from './providers';
1436
-
1437
- ### 3.7.3 ModelRouterService 수정
1438
-
1439
- `ModelRouterService`는 이제 `ProviderRegistry`를 사용하여 동적으로 프로바이더를 선택해야 합니다.
1440
-
1441
- ```typescript
1442
- // packages/core/src/routing/modelRouterService.ts
1443
-
1444
- import { ProviderRegistry } from '../providers/registry';
1445
- import { detectProvider } from '../providers/utils'; // 새로 추가 (5.6.1 참조)
1446
-
1447
- export class ModelRouterService {
1448
- async route(request: LlmGenerateRequest): Promise<LlmGenerateResponse> {
1449
- // 1. 모델 이름으로 프로바이더 감지
1450
- const providerName = detectProvider(request.model);
1451
-
1452
- // 2. 레지스트리에서 프로바이더 조회 (없으면 활성 프로바이더 사용)
1453
- const registry = ProviderRegistry.getInstance();
1454
- let provider;
1455
-
1456
- try {
1457
- provider = registry.get(providerName);
1458
- } catch {
1459
- provider = registry.getActive();
1460
- }
1461
-
1462
- // 3. 요청 위임
1463
- return provider.generateContent(request);
1464
- }
1465
- }
1466
- ````
1467
-
1468
- ```
1469
-
1470
- ```