@didim365/agent-cli-core 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1081) hide show
  1. package/dist/src/core/apiKeyCredentialStorage.d.ts +23 -3
  2. package/dist/src/core/apiKeyCredentialStorage.js +56 -16
  3. package/dist/src/core/apiKeyCredentialStorage.js.map +1 -1
  4. package/dist/src/generated/git-commit.d.ts +1 -1
  5. package/dist/src/generated/git-commit.js +1 -1
  6. package/package.json +6 -2
  7. package/dist/docs/00_project/ai_adapter/01-overview.md +0 -172
  8. package/dist/docs/00_project/ai_adapter/02-architecture.md +0 -448
  9. package/dist/docs/00_project/ai_adapter/03-technical-design.md +0 -1470
  10. package/dist/docs/00_project/ai_adapter/04-integration-design.md +0 -1934
  11. package/dist/docs/00_project/ai_adapter/05-implementation-plan.md +0 -336
  12. package/dist/docs/00_project/ai_adapter/06-didiaistudio-plan.md +0 -559
  13. package/dist/docs/00_project/ai_adapter/README.md +0 -145
  14. package/dist/docs/00_project/ai_adapter/agent_service_openapi.json +0 -1
  15. package/dist/docs/00_project/ai_adapter/didimStudi-AISTUDIO /341/204/213/341/205/254/341/204/207/341/205/256 /341/204/211/341/205/245/341/204/207/341/205/265/341/204/211/341/205/263 /341/204/221/341/205/263/341/206/257/341/204/205/341/205/251/341/204/213/341/205/256 /341/204/213/341/205/247/341/206/253/341/204/200/341/205/247/341/206/257 /341/204/207/341/205/241/341/206/274/341/204/211/341/205/265/341/206/250-100226-093925.pdf +0 -0
  16. package/dist/docs/00_project/ai_adapter/event-mapping-matrix.md +0 -148
  17. package/dist/docs/00_project/ai_adapter/migration-plan.md +0 -205
  18. package/dist/docs/00_project/ai_adapter/template/00_vibecoding_workflow.md +0 -627
  19. package/dist/docs/00_project/ai_adapter/template/01_todolist_performance_template.md +0 -436
  20. package/dist/docs/00_project/ai_adapter/template/02_code_review_template.md +0 -248
  21. package/dist/docs/00_project/ai_adapter/template/03_work_result_report_template.md +0 -133
  22. package/dist/docs/00_project/ai_adapter/template/100_Python_Performance_Guide.md +0 -472
  23. package/dist/docs/00_project/ai_adapter/template/99_TDD_plan.md +0 -123
  24. package/dist/docs/00_project/ai_adapter/todolist/00_master_implementation_plan.md +0 -433
  25. package/dist/docs/00_project/ai_adapter/todolist/phase1_foundation_todolist.md +0 -726
  26. package/dist/docs/00_project/ai_adapter/todolist/phase2_core_refactoring_todolist.md +0 -974
  27. package/dist/docs/00_project/ai_adapter/todolist/phase3_handoff.md +0 -203
  28. package/dist/docs/00_project/ai_adapter/todolist/phase3_provider_extension_todolist.md +0 -1382
  29. package/dist/docs/00_project/ai_adapter/utility-migration.md +0 -237
  30. package/dist/docs/00_project/ai_adapter/working_history/.gitkeep +0 -0
  31. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.0_/354/275/224/353/223/234/354/235/270/353/262/244/355/206/240/353/246/254_20260201.md +0 -197
  32. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.1_/355/203/200/354/236/205/354/204/244/352/263/204_20260201.md +0 -185
  33. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.2_Adapter/354/235/270/355/224/204/353/235/274_20260203.md +0 -378
  34. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.3_Provider/354/204/240/355/203/235_20260206.md +0 -269
  35. package/dist/docs/00_project/ai_adapter/working_history/Phase1_M1.4_/354/234/240/355/213/270/353/246/254/355/213/260/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260206.md +0 -86
  36. package/dist/docs/00_project/ai_adapter/working_history/Phase2_ETC_/354/227/260/352/270/260/354/236/221/354/227/205/354/240/225/353/246/254_20260208.md +0 -157
  37. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.0_/353/224/224/353/240/211/355/206/240/353/246/254/354/236/254/352/265/254/354/204/261_20260207.md +0 -107
  38. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.1_ContentGenerator/354/235/270/355/204/260/355/216/230/354/235/264/354/212/244/354/236/254/354/240/225/354/235/230_20260207.md +0 -630
  39. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.2_EventMapper/352/265/254/355/230/204_20260207.md +0 -372
  40. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.3_GeminiAdapter/352/265/254/355/230/204_20260208.md +0 -205
  41. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.4_ModelConfigService/355/230/270/355/231/230/353/240/210/354/235/264/354/226/264_20260208.md +0 -275
  42. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.5_/354/234/240/355/213/270/353/246/254/355/213/260/353/240/210/354/235/264/354/226/264/353/246/254/355/214/251/355/206/240/353/247/201_20260208.md +0 -239
  43. package/dist/docs/00_project/ai_adapter/working_history/Phase2_M2.6_/353/235/274/354/232/260/355/214/205/353/240/210/354/235/264/354/226/264/355/203/200/354/236/205/353/217/205/353/246/275/355/231/224_20260208.md +0 -228
  44. package/dist/docs/00_project/ai_adapter/working_history/Phase3_ETC_/352/270/260/353/263/270/354/273/250/355/205/215/354/212/244/355/212/270/355/214/214/354/235/274/353/252/205AGENTS/354/240/204/355/231/230_20260211.md +0 -470
  45. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.1_Gemini/354/240/204/354/232/251/355/214/214/354/235/274/353/254/274/353/246/254/354/240/201/354/235/264/353/217/231_20260209.md +0 -271
  46. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.2_messageInspectors/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260209.md +0 -330
  47. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.3_/355/205/224/353/240/210/353/251/224/355/212/270/353/246/254Agent/353/217/205/353/246/275/355/231/224_20260209.md +0 -251
  48. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.4_/353/263/200/355/231/230/353/270/214/353/246/277/354/247/200/354/240/225/353/246/254_20260209.md +0 -136
  49. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.0.5_/353/237/260/355/203/200/354/236/204/354/213/244/355/226/211/352/262/275/353/241/234/354/227/260/352/262/260_20260209.md +0 -232
  50. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.0_Claude/354/202/254/354/240/204/354/244/200/353/271/204_20260209.md +0 -191
  51. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.1_ClaudeAdapter/352/265/254/355/230/204_20260209.md +0 -225
  52. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.2_ClaudeConverter/352/263/240/353/217/204/355/231/224_20260209.md +0 -171
  53. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.3_ClaudeStreamError/352/263/240/353/217/204/355/231/224_20260209.md +0 -198
  54. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.1.4_ClaudeErrorMapping_20260209.md +0 -98
  55. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.2.A_OpenAIAdapterCore_20260210.md +0 -264
  56. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.2.B_OpenAIStreamConverter_20260210.md +0 -204
  57. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.3.2_/353/252/250/353/215/270/355/205/234/355/224/214/353/246/277/355/233/205/353/263/264/354/231/204_20260211.md +0 -106
  58. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.3_OpenAICompatibleAdapter_20260211.md +0 -251
  59. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.2_E2E/355/205/214/354/212/244/355/212/270/354/213/234/353/202/230/353/246/254/354/230/244_20260210.md +0 -264
  60. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.3_/354/204/261/353/212/245/355/232/214/352/267/200/355/205/214/354/212/244/355/212/270_20260211.md +0 -176
  61. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.5_/354/225/210/354/240/225/355/231/224/354/236/221/354/227/205_20260211.md +0 -204
  62. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.A_CLI/355/206/265/355/225/251_3Provider/355/206/265/355/225/251/355/205/214/354/212/244/355/212/270_20260210.md +0 -316
  63. package/dist/docs/00_project/ai_adapter/working_history/Phase3_M3.4.A_UI/354/203/201/355/203/234/353/260/224/354/210/230/354/240/225_20260210.md +0 -262
  64. package/dist/docs/00_project/ai_adapter/working_history/phase2_tradeoff_EventType/354/240/204/355/231/230_20260208.md +0 -286
  65. package/dist/docs/00_project/white_labeling/template/00_vibecoding_workflow.md +0 -627
  66. package/dist/docs/00_project/white_labeling/template/01_todolist_performance_template.md +0 -400
  67. package/dist/docs/00_project/white_labeling/template/02_code_review_template.md +0 -248
  68. package/dist/docs/00_project/white_labeling/template/03_work_result_report_template.md +0 -133
  69. package/dist/docs/00_project/white_labeling/template/100_Python_Performance_Guide.md +0 -472
  70. package/dist/docs/00_project/white_labeling/template/99_TDD_plan.md +0 -123
  71. package/dist/docs/00_project/white_labeling/todolist/Phase_CLI/355/214/250/355/202/244/354/247/200/353/252/205/353/263/200/352/262/275_todolist.md +0 -431
  72. package/dist/docs/00_project/white_labeling/working_history/Phase_CLI/355/214/250/355/202/244/354/247/200/353/252/205/353/263/200/352/262/275_20260214.md +0 -238
  73. package/dist/docs/00_project/white_labeling//354/225/261/352/265/254/354/241/260.md +0 -310
  74. package/dist/docs/CONTRIBUTING.md +0 -554
  75. package/dist/docs/ai_adapter/01-overview.md +0 -155
  76. package/dist/docs/ai_adapter/02-architecture.md +0 -452
  77. package/dist/docs/ai_adapter/03-technical-design.md +0 -1470
  78. package/dist/docs/ai_adapter/04-integration-design.md +0 -1904
  79. package/dist/docs/ai_adapter/05-implementation-plan.md +0 -312
  80. package/dist/docs/ai_adapter/06-didiaistudio-plan.md +0 -559
  81. package/dist/docs/ai_adapter/README.md +0 -118
  82. package/dist/docs/ai_adapter/agent_service_openapi.json +0 -1
  83. package/dist/docs/ai_adapter/didimStudi-AISTUDIO /341/204/213/341/205/254/341/204/207/341/205/256 /341/204/211/341/205/245/341/204/207/341/205/265/341/204/211/341/205/263 /341/204/221/341/205/263/341/206/257/341/204/205/341/205/251/341/204/213/341/205/256 /341/204/213/341/205/247/341/206/253/341/204/200/341/205/247/341/206/257 /341/204/207/341/205/241/341/206/274/341/204/211/341/205/265/341/206/250-100226-093925.pdf +0 -0
  84. package/dist/docs/ai_adapter/event-mapping-matrix.md +0 -140
  85. package/dist/docs/ai_adapter/migration-plan.md +0 -205
  86. package/dist/docs/ai_adapter/template/00_vibecoding_workflow.md +0 -636
  87. package/dist/docs/ai_adapter/template/01_todolist_performance_template.md +0 -372
  88. package/dist/docs/ai_adapter/template/02_code_review_template.md +0 -220
  89. package/dist/docs/ai_adapter/template/03_work_result_report_template.md +0 -120
  90. package/dist/docs/ai_adapter/template/100_Python_Performance_Guide.md +0 -453
  91. package/dist/docs/ai_adapter/template/99_TDD_plan.md +0 -111
  92. package/dist/docs/ai_adapter/todolist/00_master_implementation_plan.md +0 -433
  93. package/dist/docs/ai_adapter/todolist/phase1_foundation_todolist.md +0 -726
  94. package/dist/docs/ai_adapter/todolist/phase2_core_refactoring_todolist.md +0 -974
  95. package/dist/docs/ai_adapter/todolist/phase3_handoff.md +0 -203
  96. package/dist/docs/ai_adapter/todolist/phase3_provider_extension_todolist.md +0 -1382
  97. package/dist/docs/ai_adapter/utility-migration.md +0 -237
  98. package/dist/docs/ai_adapter/working_history/.gitkeep +0 -0
  99. package/dist/docs/ai_adapter/working_history/Phase1_M1.0_/354/275/224/353/223/234/354/235/270/353/262/244/355/206/240/353/246/254_20260201.md +0 -185
  100. package/dist/docs/ai_adapter/working_history/Phase1_M1.1_/355/203/200/354/236/205/354/204/244/352/263/204_20260201.md +0 -185
  101. package/dist/docs/ai_adapter/working_history/Phase1_M1.2_Adapter/354/235/270/355/224/204/353/235/274_20260203.md +0 -378
  102. package/dist/docs/ai_adapter/working_history/Phase1_M1.3_Provider/354/204/240/355/203/235_20260206.md +0 -269
  103. package/dist/docs/ai_adapter/working_history/Phase1_M1.4_/354/234/240/355/213/270/353/246/254/355/213/260/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260206.md +0 -86
  104. package/dist/docs/ai_adapter/working_history/Phase2_ETC_/354/227/260/352/270/260/354/236/221/354/227/205/354/240/225/353/246/254_20260208.md +0 -157
  105. package/dist/docs/ai_adapter/working_history/Phase2_M2.0_/353/224/224/353/240/211/355/206/240/353/246/254/354/236/254/352/265/254/354/204/261_20260207.md +0 -107
  106. package/dist/docs/ai_adapter/working_history/Phase2_M2.1_ContentGenerator/354/235/270/355/204/260/355/216/230/354/235/264/354/212/244/354/236/254/354/240/225/354/235/230_20260207.md +0 -630
  107. package/dist/docs/ai_adapter/working_history/Phase2_M2.2_EventMapper/352/265/254/355/230/204_20260207.md +0 -372
  108. package/dist/docs/ai_adapter/working_history/Phase2_M2.3_GeminiAdapter/352/265/254/355/230/204_20260208.md +0 -205
  109. package/dist/docs/ai_adapter/working_history/Phase2_M2.4_ModelConfigService/355/230/270/355/231/230/353/240/210/354/235/264/354/226/264_20260208.md +0 -275
  110. package/dist/docs/ai_adapter/working_history/Phase2_M2.5_/354/234/240/355/213/270/353/246/254/355/213/260/353/240/210/354/235/264/354/226/264/353/246/254/355/214/251/355/206/240/353/247/201_20260208.md +0 -239
  111. package/dist/docs/ai_adapter/working_history/Phase2_M2.6_/353/235/274/354/232/260/355/214/205/353/240/210/354/235/264/354/226/264/355/203/200/354/236/205/353/217/205/353/246/275/355/231/224_20260208.md +0 -228
  112. package/dist/docs/ai_adapter/working_history/Phase3_ETC_/352/270/260/353/263/270/354/273/250/355/205/215/354/212/244/355/212/270/355/214/214/354/235/274/353/252/205AGENTS/354/240/204/355/231/230_20260211.md +0 -367
  113. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.1_Gemini/354/240/204/354/232/251/355/214/214/354/235/274/353/254/274/353/246/254/354/240/201/354/235/264/353/217/231_20260209.md +0 -271
  114. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.2_messageInspectors/353/247/210/354/235/264/352/267/270/353/240/210/354/235/264/354/205/230_20260209.md +0 -330
  115. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.3_/355/205/224/353/240/210/353/251/224/355/212/270/353/246/254Agent/353/217/205/353/246/275/355/231/224_20260209.md +0 -251
  116. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.4_/353/263/200/355/231/230/353/270/214/353/246/277/354/247/200/354/240/225/353/246/254_20260209.md +0 -136
  117. package/dist/docs/ai_adapter/working_history/Phase3_M3.0.5_/353/237/260/355/203/200/354/236/204/354/213/244/355/226/211/352/262/275/353/241/234/354/227/260/352/262/260_20260209.md +0 -232
  118. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.0_Claude/354/202/254/354/240/204/354/244/200/353/271/204_20260209.md +0 -191
  119. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.1_ClaudeAdapter/352/265/254/355/230/204_20260209.md +0 -225
  120. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.2_ClaudeConverter/352/263/240/353/217/204/355/231/224_20260209.md +0 -171
  121. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.3_ClaudeStreamError/352/263/240/353/217/204/355/231/224_20260209.md +0 -198
  122. package/dist/docs/ai_adapter/working_history/Phase3_M3.1.4_ClaudeErrorMapping_20260209.md +0 -98
  123. package/dist/docs/ai_adapter/working_history/Phase3_M3.2.A_OpenAIAdapterCore_20260210.md +0 -264
  124. package/dist/docs/ai_adapter/working_history/Phase3_M3.2.B_OpenAIStreamConverter_20260210.md +0 -204
  125. package/dist/docs/ai_adapter/working_history/Phase3_M3.3.2_/353/252/250/353/215/270/355/205/234/355/224/214/353/246/277/355/233/205/353/263/264/354/231/204_20260211.md +0 -106
  126. package/dist/docs/ai_adapter/working_history/Phase3_M3.3_OpenAICompatibleAdapter_20260211.md +0 -251
  127. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.2_E2E/355/205/214/354/212/244/355/212/270/354/213/234/353/202/230/353/246/254/354/230/244_20260210.md +0 -264
  128. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.3_/354/204/261/353/212/245/355/232/214/352/267/200/355/205/214/354/212/244/355/212/270_20260211.md +0 -176
  129. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.5_/354/225/210/354/240/225/355/231/224/354/236/221/354/227/205_20260211.md +0 -204
  130. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.A_CLI/355/206/265/355/225/251_3Provider/355/206/265/355/225/251/355/205/214/354/212/244/355/212/270_20260210.md +0 -316
  131. package/dist/docs/ai_adapter/working_history/Phase3_M3.4.A_UI/354/203/201/355/203/234/353/260/224/354/210/230/354/240/225_20260210.md +0 -262
  132. package/dist/docs/ai_adapter/working_history/phase2_tradeoff_EventType/354/240/204/355/231/230_20260208.md +0 -286
  133. package/dist/docs/api/index.md +0 -5
  134. package/dist/docs/api/providers.md +0 -56
  135. package/dist/docs/architecture.md +0 -80
  136. package/dist/docs/assets/connected_devtools.png +0 -0
  137. package/dist/docs/assets/gemini-screenshot.png +0 -0
  138. package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
  139. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  140. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  141. package/dist/docs/assets/release_patch.png +0 -0
  142. package/dist/docs/assets/theme-ansi-light.png +0 -0
  143. package/dist/docs/assets/theme-ansi.png +0 -0
  144. package/dist/docs/assets/theme-atom-one.png +0 -0
  145. package/dist/docs/assets/theme-ayu-light.png +0 -0
  146. package/dist/docs/assets/theme-ayu.png +0 -0
  147. package/dist/docs/assets/theme-custom.png +0 -0
  148. package/dist/docs/assets/theme-default-light.png +0 -0
  149. package/dist/docs/assets/theme-default.png +0 -0
  150. package/dist/docs/assets/theme-dracula.png +0 -0
  151. package/dist/docs/assets/theme-github-light.png +0 -0
  152. package/dist/docs/assets/theme-github.png +0 -0
  153. package/dist/docs/assets/theme-google-light.png +0 -0
  154. package/dist/docs/assets/theme-xcode-light.png +0 -0
  155. package/dist/docs/change_model/model_command_multi_provider_plan.md +0 -221
  156. package/dist/docs/change_model/model_command_multi_provider_todolist.md +0 -206
  157. package/dist/docs/changelogs/index.md +0 -726
  158. package/dist/docs/changelogs/latest.md +0 -370
  159. package/dist/docs/changelogs/preview.md +0 -332
  160. package/dist/docs/cli/authentication.md +0 -3
  161. package/dist/docs/cli/checkpointing.md +0 -94
  162. package/dist/docs/cli/commands.md +0 -375
  163. package/dist/docs/cli/custom-commands.md +0 -315
  164. package/dist/docs/cli/enterprise.md +0 -565
  165. package/dist/docs/cli/gemini-ignore.md +0 -71
  166. package/dist/docs/cli/gemini-md.md +0 -108
  167. package/dist/docs/cli/generation-settings.md +0 -210
  168. package/dist/docs/cli/headless.md +0 -388
  169. package/dist/docs/cli/index.md +0 -65
  170. package/dist/docs/cli/keyboard-shortcuts.md +0 -129
  171. package/dist/docs/cli/model-routing.md +0 -42
  172. package/dist/docs/cli/model.md +0 -62
  173. package/dist/docs/cli/sandbox.md +0 -171
  174. package/dist/docs/cli/session-management.md +0 -158
  175. package/dist/docs/cli/settings.md +0 -130
  176. package/dist/docs/cli/skills.md +0 -188
  177. package/dist/docs/cli/system-prompt.md +0 -125
  178. package/dist/docs/cli/telemetry.md +0 -826
  179. package/dist/docs/cli/themes.md +0 -235
  180. package/dist/docs/cli/token-caching.md +0 -20
  181. package/dist/docs/cli/trusted-folders.md +0 -95
  182. package/dist/docs/cli/tutorials/skills-getting-started.md +0 -124
  183. package/dist/docs/cli/tutorials.md +0 -87
  184. package/dist/docs/cli/uninstall.md +0 -65
  185. package/dist/docs/configuration.md +0 -108
  186. package/dist/docs/core/index.md +0 -105
  187. package/dist/docs/core/long-term-memory-design.md +0 -254
  188. package/dist/docs/core/long-term-memory-proposal.md +0 -112
  189. package/dist/docs/core/memport.md +0 -246
  190. package/dist/docs/core/policy-engine.md +0 -300
  191. package/dist/docs/core/tools-api.md +0 -131
  192. package/dist/docs/examples/proxy-script.md +0 -83
  193. package/dist/docs/extensions/best-practices.md +0 -139
  194. package/dist/docs/extensions/index.md +0 -44
  195. package/dist/docs/extensions/reference.md +0 -312
  196. package/dist/docs/extensions/releasing.md +0 -183
  197. package/dist/docs/extensions/writing-extensions.md +0 -283
  198. package/dist/docs/faq.md +0 -154
  199. package/dist/docs/get-started/authentication.md +0 -321
  200. package/dist/docs/get-started/configuration-v1.md +0 -888
  201. package/dist/docs/get-started/configuration.md +0 -1567
  202. package/dist/docs/get-started/examples.md +0 -219
  203. package/dist/docs/get-started/gemini-3.md +0 -101
  204. package/dist/docs/get-started/index.md +0 -71
  205. package/dist/docs/get-started/installation.md +0 -141
  206. package/dist/docs/hooks/best-practices.md +0 -677
  207. package/dist/docs/hooks/index.md +0 -178
  208. package/dist/docs/hooks/reference.md +0 -322
  209. package/dist/docs/hooks/writing-hooks.md +0 -450
  210. package/dist/docs/ide-integration/ide-companion-spec.md +0 -267
  211. package/dist/docs/ide-integration/index.md +0 -202
  212. package/dist/docs/index.md +0 -153
  213. package/dist/docs/integration-tests.md +0 -211
  214. package/dist/docs/issue-and-pr-automation.md +0 -134
  215. package/dist/docs/local-development.md +0 -128
  216. package/dist/docs/mermaid/context.mmd +0 -103
  217. package/dist/docs/mermaid/render-path.mmd +0 -64
  218. package/dist/docs/migration.md +0 -78
  219. package/dist/docs/npm.md +0 -62
  220. package/dist/docs/providers.md +0 -136
  221. package/dist/docs/quota-and-pricing.md +0 -158
  222. package/dist/docs/release-confidence.md +0 -164
  223. package/dist/docs/releases.md +0 -539
  224. package/dist/docs/sidebar.json +0 -140
  225. package/dist/docs/tools/file-system.md +0 -217
  226. package/dist/docs/tools/index.md +0 -98
  227. package/dist/docs/tools/mcp-server.md +0 -1068
  228. package/dist/docs/tools/memory.md +0 -54
  229. package/dist/docs/tools/shell.md +0 -260
  230. package/dist/docs/tools/todos.md +0 -57
  231. package/dist/docs/tools/web-fetch.md +0 -59
  232. package/dist/docs/tools/web-search.md +0 -42
  233. package/dist/docs/tos-privacy.md +0 -96
  234. package/dist/docs/troubleshooting.md +0 -173
  235. package/dist/src/agents/a2a-client-manager.test.d.ts +0 -6
  236. package/dist/src/agents/a2a-client-manager.test.js +0 -220
  237. package/dist/src/agents/a2a-client-manager.test.js.map +0 -1
  238. package/dist/src/agents/a2aUtils.test.d.ts +0 -6
  239. package/dist/src/agents/a2aUtils.test.js +0 -147
  240. package/dist/src/agents/a2aUtils.test.js.map +0 -1
  241. package/dist/src/agents/acknowledgedAgents.test.d.ts +0 -6
  242. package/dist/src/agents/acknowledgedAgents.test.js +0 -70
  243. package/dist/src/agents/acknowledgedAgents.test.js.map +0 -1
  244. package/dist/src/agents/agent-scheduler.test.d.ts +0 -6
  245. package/dist/src/agents/agent-scheduler.test.js +0 -56
  246. package/dist/src/agents/agent-scheduler.test.js.map +0 -1
  247. package/dist/src/agents/agentLoader.test.d.ts +0 -6
  248. package/dist/src/agents/agentLoader.test.js +0 -304
  249. package/dist/src/agents/agentLoader.test.js.map +0 -1
  250. package/dist/src/agents/cli-help-agent.test.d.ts +0 -6
  251. package/dist/src/agents/cli-help-agent.test.js +0 -67
  252. package/dist/src/agents/cli-help-agent.test.js.map +0 -1
  253. package/dist/src/agents/codebase-investigator.test.d.ts +0 -6
  254. package/dist/src/agents/codebase-investigator.test.js +0 -42
  255. package/dist/src/agents/codebase-investigator.test.js.map +0 -1
  256. package/dist/src/agents/generalist-agent.test.d.ts +0 -6
  257. package/dist/src/agents/generalist-agent.test.js +0 -31
  258. package/dist/src/agents/generalist-agent.test.js.map +0 -1
  259. package/dist/src/agents/local-executor.test.d.ts +0 -6
  260. package/dist/src/agents/local-executor.test.js +0 -1577
  261. package/dist/src/agents/local-executor.test.js.map +0 -1
  262. package/dist/src/agents/local-invocation.test.d.ts +0 -6
  263. package/dist/src/agents/local-invocation.test.js +0 -228
  264. package/dist/src/agents/local-invocation.test.js.map +0 -1
  265. package/dist/src/agents/registry.test.d.ts +0 -6
  266. package/dist/src/agents/registry.test.js +0 -773
  267. package/dist/src/agents/registry.test.js.map +0 -1
  268. package/dist/src/agents/registry_acknowledgement.test.d.ts +0 -6
  269. package/dist/src/agents/registry_acknowledgement.test.js +0 -130
  270. package/dist/src/agents/registry_acknowledgement.test.js.map +0 -1
  271. package/dist/src/agents/remote-invocation.test.d.ts +0 -6
  272. package/dist/src/agents/remote-invocation.test.js +0 -213
  273. package/dist/src/agents/remote-invocation.test.js.map +0 -1
  274. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +0 -6
  275. package/dist/src/agents/subagent-tool-wrapper.test.js +0 -109
  276. package/dist/src/agents/subagent-tool-wrapper.test.js.map +0 -1
  277. package/dist/src/agents/utils.test.d.ts +0 -6
  278. package/dist/src/agents/utils.test.js +0 -87
  279. package/dist/src/agents/utils.test.js.map +0 -1
  280. package/dist/src/availability/fallbackIntegration.test.d.ts +0 -6
  281. package/dist/src/availability/fallbackIntegration.test.js +0 -58
  282. package/dist/src/availability/fallbackIntegration.test.js.map +0 -1
  283. package/dist/src/availability/modelAvailabilityService.test.d.ts +0 -6
  284. package/dist/src/availability/modelAvailabilityService.test.js +0 -140
  285. package/dist/src/availability/modelAvailabilityService.test.js.map +0 -1
  286. package/dist/src/availability/policyCatalog.test.d.ts +0 -6
  287. package/dist/src/availability/policyCatalog.test.js +0 -70
  288. package/dist/src/availability/policyCatalog.test.js.map +0 -1
  289. package/dist/src/availability/policyHelpers.test.d.ts +0 -6
  290. package/dist/src/availability/policyHelpers.test.js +0 -220
  291. package/dist/src/availability/policyHelpers.test.js.map +0 -1
  292. package/dist/src/code_assist/admin/admin_controls.test.d.ts +0 -6
  293. package/dist/src/code_assist/admin/admin_controls.test.js +0 -200
  294. package/dist/src/code_assist/admin/admin_controls.test.js.map +0 -1
  295. package/dist/src/code_assist/codeAssist.test.d.ts +0 -6
  296. package/dist/src/code_assist/codeAssist.test.js +0 -102
  297. package/dist/src/code_assist/codeAssist.test.js.map +0 -1
  298. package/dist/src/code_assist/converter.test.d.ts +0 -6
  299. package/dist/src/code_assist/converter.test.js +0 -391
  300. package/dist/src/code_assist/converter.test.js.map +0 -1
  301. package/dist/src/code_assist/experiments/client_metadata.test.d.ts +0 -6
  302. package/dist/src/code_assist/experiments/client_metadata.test.js +0 -96
  303. package/dist/src/code_assist/experiments/client_metadata.test.js.map +0 -1
  304. package/dist/src/code_assist/experiments/experiments.test.d.ts +0 -6
  305. package/dist/src/code_assist/experiments/experiments.test.js +0 -93
  306. package/dist/src/code_assist/experiments/experiments.test.js.map +0 -1
  307. package/dist/src/code_assist/experiments/experiments_local.test.d.ts +0 -6
  308. package/dist/src/code_assist/experiments/experiments_local.test.js +0 -115
  309. package/dist/src/code_assist/experiments/experiments_local.test.js.map +0 -1
  310. package/dist/src/code_assist/oauth-credential-storage.test.d.ts +0 -6
  311. package/dist/src/code_assist/oauth-credential-storage.test.js +0 -198
  312. package/dist/src/code_assist/oauth-credential-storage.test.js.map +0 -1
  313. package/dist/src/code_assist/oauth2.test.d.ts +0 -6
  314. package/dist/src/code_assist/oauth2.test.js +0 -1065
  315. package/dist/src/code_assist/oauth2.test.js.map +0 -1
  316. package/dist/src/code_assist/server.test.d.ts +0 -6
  317. package/dist/src/code_assist/server.test.js +0 -453
  318. package/dist/src/code_assist/server.test.js.map +0 -1
  319. package/dist/src/code_assist/setup.test.d.ts +0 -6
  320. package/dist/src/code_assist/setup.test.js +0 -517
  321. package/dist/src/code_assist/setup.test.js.map +0 -1
  322. package/dist/src/code_assist/telemetry.test.d.ts +0 -6
  323. package/dist/src/code_assist/telemetry.test.js +0 -301
  324. package/dist/src/code_assist/telemetry.test.js.map +0 -1
  325. package/dist/src/commands/extensions.test.d.ts +0 -6
  326. package/dist/src/commands/extensions.test.js +0 -19
  327. package/dist/src/commands/extensions.test.js.map +0 -1
  328. package/dist/src/commands/init.test.d.ts +0 -6
  329. package/dist/src/commands/init.test.js +0 -25
  330. package/dist/src/commands/init.test.js.map +0 -1
  331. package/dist/src/commands/memory.test.d.ts +0 -6
  332. package/dist/src/commands/memory.test.js +0 -182
  333. package/dist/src/commands/memory.test.js.map +0 -1
  334. package/dist/src/commands/restore.test.d.ts +0 -6
  335. package/dist/src/commands/restore.test.js +0 -137
  336. package/dist/src/commands/restore.test.js.map +0 -1
  337. package/dist/src/config/config.test.d.ts +0 -6
  338. package/dist/src/config/config.test.js +0 -1811
  339. package/dist/src/config/config.test.js.map +0 -1
  340. package/dist/src/config/flashFallback.test.d.ts +0 -6
  341. package/dist/src/config/flashFallback.test.js +0 -63
  342. package/dist/src/config/flashFallback.test.js.map +0 -1
  343. package/dist/src/config/models.test.d.ts +0 -6
  344. package/dist/src/config/models.test.js +0 -146
  345. package/dist/src/config/models.test.js.map +0 -1
  346. package/dist/src/config/storage.test.d.ts +0 -6
  347. package/dist/src/config/storage.test.js +0 -115
  348. package/dist/src/config/storage.test.js.map +0 -1
  349. package/dist/src/confirmation-bus/message-bus.test.d.ts +0 -6
  350. package/dist/src/confirmation-bus/message-bus.test.js +0 -170
  351. package/dist/src/confirmation-bus/message-bus.test.js.map +0 -1
  352. package/dist/src/core/apiKeyCredentialStorage.test.d.ts +0 -6
  353. package/dist/src/core/apiKeyCredentialStorage.test.js +0 -71
  354. package/dist/src/core/apiKeyCredentialStorage.test.js.map +0 -1
  355. package/dist/src/core/baseLlmClient.test.d.ts +0 -6
  356. package/dist/src/core/baseLlmClient.test.js +0 -569
  357. package/dist/src/core/baseLlmClient.test.js.map +0 -1
  358. package/dist/src/core/baseLlmClient_new_types.test.d.ts +0 -1
  359. package/dist/src/core/baseLlmClient_new_types.test.js +0 -387
  360. package/dist/src/core/baseLlmClient_new_types.test.js.map +0 -1
  361. package/dist/src/core/client.test.d.ts +0 -6
  362. package/dist/src/core/client.test.js +0 -2654
  363. package/dist/src/core/client.test.js.map +0 -1
  364. package/dist/src/core/contentGenerator.multiProvider.test.d.ts +0 -6
  365. package/dist/src/core/contentGenerator.multiProvider.test.js +0 -314
  366. package/dist/src/core/contentGenerator.multiProvider.test.js.map +0 -1
  367. package/dist/src/core/contentGenerator.test.d.ts +0 -6
  368. package/dist/src/core/contentGenerator.test.js +0 -299
  369. package/dist/src/core/contentGenerator.test.js.map +0 -1
  370. package/dist/src/core/contentGenerator_new_types.test.d.ts +0 -6
  371. package/dist/src/core/contentGenerator_new_types.test.js +0 -292
  372. package/dist/src/core/contentGenerator_new_types.test.js.map +0 -1
  373. package/dist/src/core/coreToolHookTriggers.test.d.ts +0 -6
  374. package/dist/src/core/coreToolHookTriggers.test.js +0 -159
  375. package/dist/src/core/coreToolHookTriggers.test.js.map +0 -1
  376. package/dist/src/core/coreToolScheduler.test.d.ts +0 -6
  377. package/dist/src/core/coreToolScheduler.test.js +0 -1684
  378. package/dist/src/core/coreToolScheduler.test.js.map +0 -1
  379. package/dist/src/core/fakeContentGenerator.test.d.ts +0 -6
  380. package/dist/src/core/fakeContentGenerator.test.js +0 -127
  381. package/dist/src/core/fakeContentGenerator.test.js.map +0 -1
  382. package/dist/src/core/geminiChat.test.d.ts +0 -6
  383. package/dist/src/core/geminiChat.test.js +0 -1773
  384. package/dist/src/core/geminiChat.test.js.map +0 -1
  385. package/dist/src/core/geminiChat_network_retry.test.d.ts +0 -6
  386. package/dist/src/core/geminiChat_network_retry.test.js +0 -201
  387. package/dist/src/core/geminiChat_network_retry.test.js.map +0 -1
  388. package/dist/src/core/logger.test.d.ts +0 -6
  389. package/dist/src/core/logger.test.js +0 -550
  390. package/dist/src/core/logger.test.js.map +0 -1
  391. package/dist/src/core/loggingContentGenerator.test.d.ts +0 -6
  392. package/dist/src/core/loggingContentGenerator.test.js +0 -221
  393. package/dist/src/core/loggingContentGenerator.test.js.map +0 -1
  394. package/dist/src/core/prompts-substitution.test.d.ts +0 -6
  395. package/dist/src/core/prompts-substitution.test.js +0 -101
  396. package/dist/src/core/prompts-substitution.test.js.map +0 -1
  397. package/dist/src/core/prompts.test.d.ts +0 -6
  398. package/dist/src/core/prompts.test.js +0 -391
  399. package/dist/src/core/prompts.test.js.map +0 -1
  400. package/dist/src/core/recordingContentGenerator.test.d.ts +0 -6
  401. package/dist/src/core/recordingContentGenerator.test.js +0 -101
  402. package/dist/src/core/recordingContentGenerator.test.js.map +0 -1
  403. package/dist/src/core/tokenLimits.test.d.ts +0 -6
  404. package/dist/src/core/tokenLimits.test.js +0 -30
  405. package/dist/src/core/tokenLimits.test.js.map +0 -1
  406. package/dist/src/core/turn.test.d.ts +0 -6
  407. package/dist/src/core/turn.test.js +0 -739
  408. package/dist/src/core/turn.test.js.map +0 -1
  409. package/dist/src/fallback/handler.test.d.ts +0 -6
  410. package/dist/src/fallback/handler.test.js +0 -242
  411. package/dist/src/fallback/handler.test.js.map +0 -1
  412. package/dist/src/hooks/hookAggregator.test.d.ts +0 -6
  413. package/dist/src/hooks/hookAggregator.test.js +0 -387
  414. package/dist/src/hooks/hookAggregator.test.js.map +0 -1
  415. package/dist/src/hooks/hookEventHandler.test.d.ts +0 -6
  416. package/dist/src/hooks/hookEventHandler.test.js +0 -603
  417. package/dist/src/hooks/hookEventHandler.test.js.map +0 -1
  418. package/dist/src/hooks/hookPlanner.test.d.ts +0 -6
  419. package/dist/src/hooks/hookPlanner.test.js +0 -315
  420. package/dist/src/hooks/hookPlanner.test.js.map +0 -1
  421. package/dist/src/hooks/hookRegistry.test.d.ts +0 -6
  422. package/dist/src/hooks/hookRegistry.test.js +0 -529
  423. package/dist/src/hooks/hookRegistry.test.js.map +0 -1
  424. package/dist/src/hooks/hookRunner.test.d.ts +0 -6
  425. package/dist/src/hooks/hookRunner.test.js +0 -606
  426. package/dist/src/hooks/hookRunner.test.js.map +0 -1
  427. package/dist/src/hooks/hookSystem.test.d.ts +0 -6
  428. package/dist/src/hooks/hookSystem.test.js +0 -330
  429. package/dist/src/hooks/hookSystem.test.js.map +0 -1
  430. package/dist/src/hooks/hookSystem_new_types.test.d.ts +0 -6
  431. package/dist/src/hooks/hookSystem_new_types.test.js +0 -243
  432. package/dist/src/hooks/hookSystem_new_types.test.js.map +0 -1
  433. package/dist/src/hooks/hookTranslator.test.d.ts +0 -6
  434. package/dist/src/hooks/hookTranslator.test.js +0 -192
  435. package/dist/src/hooks/hookTranslator.test.js.map +0 -1
  436. package/dist/src/hooks/trustedHooks.test.d.ts +0 -6
  437. package/dist/src/hooks/trustedHooks.test.js +0 -154
  438. package/dist/src/hooks/trustedHooks.test.js.map +0 -1
  439. package/dist/src/hooks/types.test.d.ts +0 -6
  440. package/dist/src/hooks/types.test.js +0 -278
  441. package/dist/src/hooks/types.test.js.map +0 -1
  442. package/dist/src/ide/detect-ide.test.d.ts +0 -6
  443. package/dist/src/ide/detect-ide.test.js +0 -195
  444. package/dist/src/ide/detect-ide.test.js.map +0 -1
  445. package/dist/src/ide/ide-client.test.d.ts +0 -6
  446. package/dist/src/ide/ide-client.test.js +0 -753
  447. package/dist/src/ide/ide-client.test.js.map +0 -1
  448. package/dist/src/ide/ide-installer.test.d.ts +0 -6
  449. package/dist/src/ide/ide-installer.test.js +0 -193
  450. package/dist/src/ide/ide-installer.test.js.map +0 -1
  451. package/dist/src/ide/ideContext.test.d.ts +0 -6
  452. package/dist/src/ide/ideContext.test.js +0 -393
  453. package/dist/src/ide/ideContext.test.js.map +0 -1
  454. package/dist/src/ide/process-utils.test.d.ts +0 -6
  455. package/dist/src/ide/process-utils.test.js +0 -151
  456. package/dist/src/ide/process-utils.test.js.map +0 -1
  457. package/dist/src/index.test.d.ts +0 -6
  458. package/dist/src/index.test.js +0 -53
  459. package/dist/src/index.test.js.map +0 -1
  460. package/dist/src/mcp/google-auth-provider.test.d.ts +0 -6
  461. package/dist/src/mcp/google-auth-provider.test.js +0 -167
  462. package/dist/src/mcp/google-auth-provider.test.js.map +0 -1
  463. package/dist/src/mcp/oauth-provider.test.d.ts +0 -6
  464. package/dist/src/mcp/oauth-provider.test.js +0 -1355
  465. package/dist/src/mcp/oauth-provider.test.js.map +0 -1
  466. package/dist/src/mcp/oauth-token-storage.test.d.ts +0 -6
  467. package/dist/src/mcp/oauth-token-storage.test.js +0 -305
  468. package/dist/src/mcp/oauth-token-storage.test.js.map +0 -1
  469. package/dist/src/mcp/oauth-utils.test.d.ts +0 -6
  470. package/dist/src/mcp/oauth-utils.test.js +0 -289
  471. package/dist/src/mcp/oauth-utils.test.js.map +0 -1
  472. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +0 -6
  473. package/dist/src/mcp/sa-impersonation-provider.test.js +0 -117
  474. package/dist/src/mcp/sa-impersonation-provider.test.js.map +0 -1
  475. package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +0 -6
  476. package/dist/src/mcp/token-storage/base-token-storage.test.js +0 -151
  477. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +0 -1
  478. package/dist/src/mcp/token-storage/file-token-storage.test.d.ts +0 -6
  479. package/dist/src/mcp/token-storage/file-token-storage.test.js +0 -238
  480. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +0 -1
  481. package/dist/src/mcp/token-storage/hybrid-token-storage.test.d.ts +0 -6
  482. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +0 -193
  483. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +0 -1
  484. package/dist/src/mcp/token-storage/keychain-token-storage.test.d.ts +0 -6
  485. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +0 -305
  486. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +0 -1
  487. package/dist/src/output/json-formatter.test.d.ts +0 -6
  488. package/dist/src/output/json-formatter.test.js +0 -294
  489. package/dist/src/output/json-formatter.test.js.map +0 -1
  490. package/dist/src/output/stream-json-formatter.test.d.ts +0 -6
  491. package/dist/src/output/stream-json-formatter.test.js +0 -477
  492. package/dist/src/output/stream-json-formatter.test.js.map +0 -1
  493. package/dist/src/policy/config.test.d.ts +0 -6
  494. package/dist/src/policy/config.test.js +0 -598
  495. package/dist/src/policy/config.test.js.map +0 -1
  496. package/dist/src/policy/persistence.test.d.ts +0 -6
  497. package/dist/src/policy/persistence.test.js +0 -154
  498. package/dist/src/policy/persistence.test.js.map +0 -1
  499. package/dist/src/policy/policy-engine.test.d.ts +0 -6
  500. package/dist/src/policy/policy-engine.test.js +0 -1299
  501. package/dist/src/policy/policy-engine.test.js.map +0 -1
  502. package/dist/src/policy/policy-updater.test.d.ts +0 -6
  503. package/dist/src/policy/policy-updater.test.js +0 -116
  504. package/dist/src/policy/policy-updater.test.js.map +0 -1
  505. package/dist/src/policy/shell-safety.test.d.ts +0 -6
  506. package/dist/src/policy/shell-safety.test.js +0 -438
  507. package/dist/src/policy/shell-safety.test.js.map +0 -1
  508. package/dist/src/policy/toml-loader.test.d.ts +0 -6
  509. package/dist/src/policy/toml-loader.test.js +0 -409
  510. package/dist/src/policy/toml-loader.test.js.map +0 -1
  511. package/dist/src/policy/utils.test.d.ts +0 -6
  512. package/dist/src/policy/utils.test.js +0 -92
  513. package/dist/src/policy/utils.test.js.map +0 -1
  514. package/dist/src/prompts/mcp-prompts.test.d.ts +0 -6
  515. package/dist/src/prompts/mcp-prompts.test.js +0 -39
  516. package/dist/src/prompts/mcp-prompts.test.js.map +0 -1
  517. package/dist/src/prompts/prompt-registry.test.d.ts +0 -6
  518. package/dist/src/prompts/prompt-registry.test.js +0 -96
  519. package/dist/src/prompts/prompt-registry.test.js.map +0 -1
  520. package/dist/src/providers/__tests__/bundleSize.test.d.ts +0 -6
  521. package/dist/src/providers/__tests__/bundleSize.test.js +0 -75
  522. package/dist/src/providers/__tests__/bundleSize.test.js.map +0 -1
  523. package/dist/src/providers/__tests__/errorHandling.integration.test.d.ts +0 -6
  524. package/dist/src/providers/__tests__/errorHandling.integration.test.js +0 -339
  525. package/dist/src/providers/__tests__/errorHandling.integration.test.js.map +0 -1
  526. package/dist/src/providers/__tests__/multiProvider.integration.test.d.ts +0 -6
  527. package/dist/src/providers/__tests__/multiProvider.integration.test.js +0 -419
  528. package/dist/src/providers/__tests__/multiProvider.integration.test.js.map +0 -1
  529. package/dist/src/providers/__tests__/performance.test.d.ts +0 -6
  530. package/dist/src/providers/__tests__/performance.test.js +0 -270
  531. package/dist/src/providers/__tests__/performance.test.js.map +0 -1
  532. package/dist/src/providers/__tests__/providerConfigIntegration.test.d.ts +0 -6
  533. package/dist/src/providers/__tests__/providerConfigIntegration.test.js +0 -245
  534. package/dist/src/providers/__tests__/providerConfigIntegration.test.js.map +0 -1
  535. package/dist/src/providers/baseAdapter.test.d.ts +0 -1
  536. package/dist/src/providers/baseAdapter.test.js +0 -142
  537. package/dist/src/providers/baseAdapter.test.js.map +0 -1
  538. package/dist/src/providers/claude/adapter.test.d.ts +0 -6
  539. package/dist/src/providers/claude/adapter.test.js +0 -628
  540. package/dist/src/providers/claude/adapter.test.js.map +0 -1
  541. package/dist/src/providers/claude/bootstrap.test.d.ts +0 -6
  542. package/dist/src/providers/claude/bootstrap.test.js +0 -74
  543. package/dist/src/providers/claude/bootstrap.test.js.map +0 -1
  544. package/dist/src/providers/claude/converter.test.d.ts +0 -6
  545. package/dist/src/providers/claude/converter.test.js +0 -1002
  546. package/dist/src/providers/claude/converter.test.js.map +0 -1
  547. package/dist/src/providers/claude/exports.test.d.ts +0 -6
  548. package/dist/src/providers/claude/exports.test.js +0 -40
  549. package/dist/src/providers/claude/exports.test.js.map +0 -1
  550. package/dist/src/providers/configAdapter.test.d.ts +0 -1
  551. package/dist/src/providers/configAdapter.test.js +0 -150
  552. package/dist/src/providers/configAdapter.test.js.map +0 -1
  553. package/dist/src/providers/contentResolver.test.d.ts +0 -1
  554. package/dist/src/providers/contentResolver.test.js +0 -89
  555. package/dist/src/providers/contentResolver.test.js.map +0 -1
  556. package/dist/src/providers/factory.test.d.ts +0 -1
  557. package/dist/src/providers/factory.test.js +0 -151
  558. package/dist/src/providers/factory.test.js.map +0 -1
  559. package/dist/src/providers/gemini/adapterBridge.test.d.ts +0 -6
  560. package/dist/src/providers/gemini/adapterBridge.test.js +0 -164
  561. package/dist/src/providers/gemini/adapterBridge.test.js.map +0 -1
  562. package/dist/src/providers/gemini/bootstrap.test.d.ts +0 -6
  563. package/dist/src/providers/gemini/bootstrap.test.js +0 -72
  564. package/dist/src/providers/gemini/bootstrap.test.js.map +0 -1
  565. package/dist/src/providers/gemini/configConverter.test.d.ts +0 -6
  566. package/dist/src/providers/gemini/configConverter.test.js +0 -218
  567. package/dist/src/providers/gemini/configConverter.test.js.map +0 -1
  568. package/dist/src/providers/gemini/errorClassifier.test.d.ts +0 -6
  569. package/dist/src/providers/gemini/errorClassifier.test.js +0 -83
  570. package/dist/src/providers/gemini/errorClassifier.test.js.map +0 -1
  571. package/dist/src/providers/gemini/eventMapper.test.d.ts +0 -6
  572. package/dist/src/providers/gemini/eventMapper.test.js +0 -502
  573. package/dist/src/providers/gemini/eventMapper.test.js.map +0 -1
  574. package/dist/src/providers/gemini/exports.test.d.ts +0 -6
  575. package/dist/src/providers/gemini/exports.test.js +0 -90
  576. package/dist/src/providers/gemini/exports.test.js.map +0 -1
  577. package/dist/src/providers/gemini/featureFlag.test.d.ts +0 -6
  578. package/dist/src/providers/gemini/featureFlag.test.js +0 -139
  579. package/dist/src/providers/gemini/featureFlag.test.js.map +0 -1
  580. package/dist/src/providers/gemini/geminiAdapter.test.d.ts +0 -6
  581. package/dist/src/providers/gemini/geminiAdapter.test.js +0 -279
  582. package/dist/src/providers/gemini/geminiAdapter.test.js.map +0 -1
  583. package/dist/src/providers/gemini/geminiConverter.test.d.ts +0 -6
  584. package/dist/src/providers/gemini/geminiConverter.test.js +0 -474
  585. package/dist/src/providers/gemini/geminiConverter.test.js.map +0 -1
  586. package/dist/src/providers/gemini/geminiParity.test.d.ts +0 -6
  587. package/dist/src/providers/gemini/geminiParity.test.js +0 -754
  588. package/dist/src/providers/gemini/geminiParity.test.js.map +0 -1
  589. package/dist/src/providers/gemini/geminiStream.test.d.ts +0 -6
  590. package/dist/src/providers/gemini/geminiStream.test.js +0 -391
  591. package/dist/src/providers/gemini/geminiStream.test.js.map +0 -1
  592. package/dist/src/providers/gemini/historyBuilder.test.d.ts +0 -6
  593. package/dist/src/providers/gemini/historyBuilder.test.js +0 -207
  594. package/dist/src/providers/gemini/historyBuilder.test.js.map +0 -1
  595. package/dist/src/providers/gemini/requestBuilder.test.d.ts +0 -6
  596. package/dist/src/providers/gemini/requestBuilder.test.js +0 -358
  597. package/dist/src/providers/gemini/requestBuilder.test.js.map +0 -1
  598. package/dist/src/providers/gemini/streamConverter.test.d.ts +0 -6
  599. package/dist/src/providers/gemini/streamConverter.test.js +0 -131
  600. package/dist/src/providers/gemini/streamConverter.test.js.map +0 -1
  601. package/dist/src/providers/modelSpec.test.d.ts +0 -1
  602. package/dist/src/providers/modelSpec.test.js +0 -119
  603. package/dist/src/providers/modelSpec.test.js.map +0 -1
  604. package/dist/src/providers/openai/adapter.test.d.ts +0 -6
  605. package/dist/src/providers/openai/adapter.test.js +0 -274
  606. package/dist/src/providers/openai/adapter.test.js.map +0 -1
  607. package/dist/src/providers/openai/bootstrap.test.d.ts +0 -6
  608. package/dist/src/providers/openai/bootstrap.test.js +0 -76
  609. package/dist/src/providers/openai/bootstrap.test.js.map +0 -1
  610. package/dist/src/providers/openai/converter.test.d.ts +0 -6
  611. package/dist/src/providers/openai/converter.test.js +0 -1133
  612. package/dist/src/providers/openai/converter.test.js.map +0 -1
  613. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.d.ts +0 -6
  614. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.js +0 -356
  615. package/dist/src/providers/openai-compatible/__tests__/compatibility.test.js.map +0 -1
  616. package/dist/src/providers/openai-compatible/adapter.test.d.ts +0 -6
  617. package/dist/src/providers/openai-compatible/adapter.test.js +0 -240
  618. package/dist/src/providers/openai-compatible/adapter.test.js.map +0 -1
  619. package/dist/src/providers/openai-compatible/bootstrap.test.d.ts +0 -6
  620. package/dist/src/providers/openai-compatible/bootstrap.test.js +0 -145
  621. package/dist/src/providers/openai-compatible/bootstrap.test.js.map +0 -1
  622. package/dist/src/providers/openai-compatible/promptBuilder.test.d.ts +0 -6
  623. package/dist/src/providers/openai-compatible/promptBuilder.test.js +0 -154
  624. package/dist/src/providers/openai-compatible/promptBuilder.test.js.map +0 -1
  625. package/dist/src/providers/providerConfig.test.d.ts +0 -1
  626. package/dist/src/providers/providerConfig.test.js +0 -145
  627. package/dist/src/providers/providerConfig.test.js.map +0 -1
  628. package/dist/src/providers/providerConfigIntegration.test.d.ts +0 -6
  629. package/dist/src/providers/providerConfigIntegration.test.js +0 -187
  630. package/dist/src/providers/providerConfigIntegration.test.js.map +0 -1
  631. package/dist/src/providers/providerSelector.test.d.ts +0 -1
  632. package/dist/src/providers/providerSelector.test.js +0 -199
  633. package/dist/src/providers/providerSelector.test.js.map +0 -1
  634. package/dist/src/providers/providerTypes.test.d.ts +0 -1
  635. package/dist/src/providers/providerTypes.test.js +0 -95
  636. package/dist/src/providers/providerTypes.test.js.map +0 -1
  637. package/dist/src/providers/registry.test.d.ts +0 -1
  638. package/dist/src/providers/registry.test.js +0 -207
  639. package/dist/src/providers/registry.test.js.map +0 -1
  640. package/dist/src/providers/streamAssembler.test.d.ts +0 -1
  641. package/dist/src/providers/streamAssembler.test.js +0 -247
  642. package/dist/src/providers/streamAssembler.test.js.map +0 -1
  643. package/dist/src/providers/telemetryBridge.test.d.ts +0 -6
  644. package/dist/src/providers/telemetryBridge.test.js +0 -235
  645. package/dist/src/providers/telemetryBridge.test.js.map +0 -1
  646. package/dist/src/providers/types.test.d.ts +0 -6
  647. package/dist/src/providers/types.test.js +0 -253
  648. package/dist/src/providers/types.test.js.map +0 -1
  649. package/dist/src/resources/resource-registry.test.d.ts +0 -6
  650. package/dist/src/resources/resource-registry.test.js +0 -54
  651. package/dist/src/resources/resource-registry.test.js.map +0 -1
  652. package/dist/src/routing/modelRouterService.test.d.ts +0 -6
  653. package/dist/src/routing/modelRouterService.test.js +0 -106
  654. package/dist/src/routing/modelRouterService.test.js.map +0 -1
  655. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +0 -6
  656. package/dist/src/routing/strategies/classifierStrategy.test.js +0 -249
  657. package/dist/src/routing/strategies/classifierStrategy.test.js.map +0 -1
  658. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +0 -6
  659. package/dist/src/routing/strategies/compositeStrategy.test.js +0 -124
  660. package/dist/src/routing/strategies/compositeStrategy.test.js.map +0 -1
  661. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +0 -6
  662. package/dist/src/routing/strategies/defaultStrategy.test.js +0 -102
  663. package/dist/src/routing/strategies/defaultStrategy.test.js.map +0 -1
  664. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +0 -6
  665. package/dist/src/routing/strategies/fallbackStrategy.test.js +0 -96
  666. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +0 -1
  667. package/dist/src/routing/strategies/numericalClassifierStrategy.test.d.ts +0 -6
  668. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +0 -367
  669. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +0 -1
  670. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +0 -6
  671. package/dist/src/routing/strategies/overrideStrategy.test.js +0 -59
  672. package/dist/src/routing/strategies/overrideStrategy.test.js.map +0 -1
  673. package/dist/src/safety/built-in.test.d.ts +0 -6
  674. package/dist/src/safety/built-in.test.js +0 -199
  675. package/dist/src/safety/built-in.test.js.map +0 -1
  676. package/dist/src/safety/checker-runner.test.d.ts +0 -6
  677. package/dist/src/safety/checker-runner.test.js +0 -238
  678. package/dist/src/safety/checker-runner.test.js.map +0 -1
  679. package/dist/src/safety/context-builder.test.d.ts +0 -6
  680. package/dist/src/safety/context-builder.test.js +0 -49
  681. package/dist/src/safety/context-builder.test.js.map +0 -1
  682. package/dist/src/safety/registry.test.d.ts +0 -6
  683. package/dist/src/safety/registry.test.js +0 -31
  684. package/dist/src/safety/registry.test.js.map +0 -1
  685. package/dist/src/scheduler/confirmation.test.d.ts +0 -6
  686. package/dist/src/scheduler/confirmation.test.js +0 -325
  687. package/dist/src/scheduler/confirmation.test.js.map +0 -1
  688. package/dist/src/scheduler/policy.test.d.ts +0 -6
  689. package/dist/src/scheduler/policy.test.js +0 -299
  690. package/dist/src/scheduler/policy.test.js.map +0 -1
  691. package/dist/src/scheduler/scheduler.test.d.ts +0 -6
  692. package/dist/src/scheduler/scheduler.test.js +0 -822
  693. package/dist/src/scheduler/scheduler.test.js.map +0 -1
  694. package/dist/src/scheduler/state-manager.test.d.ts +0 -6
  695. package/dist/src/scheduler/state-manager.test.js +0 -429
  696. package/dist/src/scheduler/state-manager.test.js.map +0 -1
  697. package/dist/src/scheduler/tool-executor.test.d.ts +0 -6
  698. package/dist/src/scheduler/tool-executor.test.js +0 -232
  699. package/dist/src/scheduler/tool-executor.test.js.map +0 -1
  700. package/dist/src/scheduler/tool-modifier.test.d.ts +0 -6
  701. package/dist/src/scheduler/tool-modifier.test.js +0 -159
  702. package/dist/src/scheduler/tool-modifier.test.js.map +0 -1
  703. package/dist/src/services/chatCompressionService.test.d.ts +0 -6
  704. package/dist/src/services/chatCompressionService.test.js +0 -573
  705. package/dist/src/services/chatCompressionService.test.js.map +0 -1
  706. package/dist/src/services/chatRecordingService.test.d.ts +0 -6
  707. package/dist/src/services/chatRecordingService.test.js +0 -486
  708. package/dist/src/services/chatRecordingService.test.js.map +0 -1
  709. package/dist/src/services/contextManager.test.d.ts +0 -6
  710. package/dist/src/services/contextManager.test.js +0 -104
  711. package/dist/src/services/contextManager.test.js.map +0 -1
  712. package/dist/src/services/environmentSanitization.test.d.ts +0 -6
  713. package/dist/src/services/environmentSanitization.test.js +0 -284
  714. package/dist/src/services/environmentSanitization.test.js.map +0 -1
  715. package/dist/src/services/fileDiscoveryService.test.d.ts +0 -6
  716. package/dist/src/services/fileDiscoveryService.test.js +0 -223
  717. package/dist/src/services/fileDiscoveryService.test.js.map +0 -1
  718. package/dist/src/services/fileSystemService.test.d.ts +0 -6
  719. package/dist/src/services/fileSystemService.test.js +0 -41
  720. package/dist/src/services/fileSystemService.test.js.map +0 -1
  721. package/dist/src/services/gitService.test.d.ts +0 -6
  722. package/dist/src/services/gitService.test.js +0 -264
  723. package/dist/src/services/gitService.test.js.map +0 -1
  724. package/dist/src/services/loopDetectionService.test.d.ts +0 -6
  725. package/dist/src/services/loopDetectionService.test.js +0 -881
  726. package/dist/src/services/loopDetectionService.test.js.map +0 -1
  727. package/dist/src/services/modelConfig.golden.test.d.ts +0 -6
  728. package/dist/src/services/modelConfig.golden.test.js +0 -74
  729. package/dist/src/services/modelConfig.golden.test.js.map +0 -1
  730. package/dist/src/services/modelConfig.integration.test.d.ts +0 -6
  731. package/dist/src/services/modelConfig.integration.test.js +0 -247
  732. package/dist/src/services/modelConfig.integration.test.js.map +0 -1
  733. package/dist/src/services/modelConfigBridge.test.d.ts +0 -6
  734. package/dist/src/services/modelConfigBridge.test.js +0 -410
  735. package/dist/src/services/modelConfigBridge.test.js.map +0 -1
  736. package/dist/src/services/modelConfigService.test.d.ts +0 -6
  737. package/dist/src/services/modelConfigService.test.js +0 -868
  738. package/dist/src/services/modelConfigService.test.js.map +0 -1
  739. package/dist/src/services/sessionSummaryService.test.d.ts +0 -6
  740. package/dist/src/services/sessionSummaryService.test.js +0 -785
  741. package/dist/src/services/sessionSummaryService.test.js.map +0 -1
  742. package/dist/src/services/sessionSummaryUtils.test.d.ts +0 -6
  743. package/dist/src/services/sessionSummaryUtils.test.js +0 -160
  744. package/dist/src/services/sessionSummaryUtils.test.js.map +0 -1
  745. package/dist/src/services/shellExecutionService.test.d.ts +0 -6
  746. package/dist/src/services/shellExecutionService.test.js +0 -1080
  747. package/dist/src/services/shellExecutionService.test.js.map +0 -1
  748. package/dist/src/skills/skillLoader.test.d.ts +0 -6
  749. package/dist/src/skills/skillLoader.test.js +0 -185
  750. package/dist/src/skills/skillLoader.test.js.map +0 -1
  751. package/dist/src/skills/skillManager.test.d.ts +0 -6
  752. package/dist/src/skills/skillManager.test.js +0 -297
  753. package/dist/src/skills/skillManager.test.js.map +0 -1
  754. package/dist/src/telemetry/activity-detector.test.d.ts +0 -6
  755. package/dist/src/telemetry/activity-detector.test.js +0 -136
  756. package/dist/src/telemetry/activity-detector.test.js.map +0 -1
  757. package/dist/src/telemetry/activity-monitor.test.d.ts +0 -6
  758. package/dist/src/telemetry/activity-monitor.test.js +0 -251
  759. package/dist/src/telemetry/activity-monitor.test.js.map +0 -1
  760. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +0 -19
  761. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -964
  762. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +0 -1
  763. package/dist/src/telemetry/config.test.d.ts +0 -6
  764. package/dist/src/telemetry/config.test.js +0 -149
  765. package/dist/src/telemetry/config.test.js.map +0 -1
  766. package/dist/src/telemetry/gcp-exporters.test.d.ts +0 -6
  767. package/dist/src/telemetry/gcp-exporters.test.js +0 -318
  768. package/dist/src/telemetry/gcp-exporters.test.js.map +0 -1
  769. package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +0 -6
  770. package/dist/src/telemetry/high-water-mark-tracker.test.js +0 -152
  771. package/dist/src/telemetry/high-water-mark-tracker.test.js.map +0 -1
  772. package/dist/src/telemetry/integration.test.circular.d.ts +0 -6
  773. package/dist/src/telemetry/integration.test.circular.js +0 -54
  774. package/dist/src/telemetry/integration.test.circular.js.map +0 -1
  775. package/dist/src/telemetry/loggers.test.circular.d.ts +0 -6
  776. package/dist/src/telemetry/loggers.test.circular.js +0 -107
  777. package/dist/src/telemetry/loggers.test.circular.js.map +0 -1
  778. package/dist/src/telemetry/loggers.test.d.ts +0 -6
  779. package/dist/src/telemetry/loggers.test.js +0 -1618
  780. package/dist/src/telemetry/loggers.test.js.map +0 -1
  781. package/dist/src/telemetry/memory-monitor.test.d.ts +0 -6
  782. package/dist/src/telemetry/memory-monitor.test.js +0 -472
  783. package/dist/src/telemetry/memory-monitor.test.js.map +0 -1
  784. package/dist/src/telemetry/metrics.test.d.ts +0 -6
  785. package/dist/src/telemetry/metrics.test.js +0 -1176
  786. package/dist/src/telemetry/metrics.test.js.map +0 -1
  787. package/dist/src/telemetry/rate-limiter.test.d.ts +0 -6
  788. package/dist/src/telemetry/rate-limiter.test.js +0 -207
  789. package/dist/src/telemetry/rate-limiter.test.js.map +0 -1
  790. package/dist/src/telemetry/sanitize.test.d.ts +0 -6
  791. package/dist/src/telemetry/sanitize.test.js +0 -279
  792. package/dist/src/telemetry/sanitize.test.js.map +0 -1
  793. package/dist/src/telemetry/sdk.test.d.ts +0 -6
  794. package/dist/src/telemetry/sdk.test.js +0 -360
  795. package/dist/src/telemetry/sdk.test.js.map +0 -1
  796. package/dist/src/telemetry/semantic.test.d.ts +0 -6
  797. package/dist/src/telemetry/semantic.test.js +0 -387
  798. package/dist/src/telemetry/semantic.test.js.map +0 -1
  799. package/dist/src/telemetry/semantic.truncation.test.d.ts +0 -1
  800. package/dist/src/telemetry/semantic.truncation.test.js +0 -92
  801. package/dist/src/telemetry/semantic.truncation.test.js.map +0 -1
  802. package/dist/src/telemetry/startupProfiler.test.d.ts +0 -6
  803. package/dist/src/telemetry/startupProfiler.test.js +0 -285
  804. package/dist/src/telemetry/startupProfiler.test.js.map +0 -1
  805. package/dist/src/telemetry/telemetry-utils.test.d.ts +0 -6
  806. package/dist/src/telemetry/telemetry-utils.test.js +0 -41
  807. package/dist/src/telemetry/telemetry-utils.test.js.map +0 -1
  808. package/dist/src/telemetry/telemetry.test.d.ts +0 -6
  809. package/dist/src/telemetry/telemetry.test.js +0 -57
  810. package/dist/src/telemetry/telemetry.test.js.map +0 -1
  811. package/dist/src/telemetry/uiTelemetry.test.d.ts +0 -6
  812. package/dist/src/telemetry/uiTelemetry.test.js +0 -584
  813. package/dist/src/telemetry/uiTelemetry.test.js.map +0 -1
  814. package/dist/src/tools/activate-skill.test.d.ts +0 -6
  815. package/dist/src/tools/activate-skill.test.js +0 -113
  816. package/dist/src/tools/activate-skill.test.js.map +0 -1
  817. package/dist/src/tools/ask-user.test.d.ts +0 -6
  818. package/dist/src/tools/ask-user.test.js +0 -187
  819. package/dist/src/tools/ask-user.test.js.map +0 -1
  820. package/dist/src/tools/base-tool-invocation.test.d.ts +0 -6
  821. package/dist/src/tools/base-tool-invocation.test.js +0 -85
  822. package/dist/src/tools/base-tool-invocation.test.js.map +0 -1
  823. package/dist/src/tools/confirmation-policy.test.d.ts +0 -6
  824. package/dist/src/tools/confirmation-policy.test.js +0 -143
  825. package/dist/src/tools/confirmation-policy.test.js.map +0 -1
  826. package/dist/src/tools/diffOptions.test.d.ts +0 -6
  827. package/dist/src/tools/diffOptions.test.js +0 -172
  828. package/dist/src/tools/diffOptions.test.js.map +0 -1
  829. package/dist/src/tools/edit.test.d.ts +0 -6
  830. package/dist/src/tools/edit.test.js +0 -729
  831. package/dist/src/tools/edit.test.js.map +0 -1
  832. package/dist/src/tools/get-internal-docs.test.d.ts +0 -6
  833. package/dist/src/tools/get-internal-docs.test.js +0 -57
  834. package/dist/src/tools/get-internal-docs.test.js.map +0 -1
  835. package/dist/src/tools/glob.test.d.ts +0 -6
  836. package/dist/src/tools/glob.test.js +0 -433
  837. package/dist/src/tools/glob.test.js.map +0 -1
  838. package/dist/src/tools/grep.test.d.ts +0 -6
  839. package/dist/src/tools/grep.test.js +0 -328
  840. package/dist/src/tools/grep.test.js.map +0 -1
  841. package/dist/src/tools/ls.test.d.ts +0 -6
  842. package/dist/src/tools/ls.test.js +0 -242
  843. package/dist/src/tools/ls.test.js.map +0 -1
  844. package/dist/src/tools/mcp-client-manager.test.d.ts +0 -6
  845. package/dist/src/tools/mcp-client-manager.test.js +0 -251
  846. package/dist/src/tools/mcp-client-manager.test.js.map +0 -1
  847. package/dist/src/tools/mcp-client.test.d.ts +0 -6
  848. package/dist/src/tools/mcp-client.test.js +0 -1346
  849. package/dist/src/tools/mcp-client.test.js.map +0 -1
  850. package/dist/src/tools/mcp-tool.test.d.ts +0 -6
  851. package/dist/src/tools/mcp-tool.test.js +0 -657
  852. package/dist/src/tools/mcp-tool.test.js.map +0 -1
  853. package/dist/src/tools/memoryTool.test.d.ts +0 -6
  854. package/dist/src/tools/memoryTool.test.js +0 -302
  855. package/dist/src/tools/memoryTool.test.js.map +0 -1
  856. package/dist/src/tools/message-bus-integration.test.d.ts +0 -6
  857. package/dist/src/tools/message-bus-integration.test.js +0 -169
  858. package/dist/src/tools/message-bus-integration.test.js.map +0 -1
  859. package/dist/src/tools/modifiable-tool.test.d.ts +0 -6
  860. package/dist/src/tools/modifiable-tool.test.js +0 -237
  861. package/dist/src/tools/modifiable-tool.test.js.map +0 -1
  862. package/dist/src/tools/read-file.test.d.ts +0 -6
  863. package/dist/src/tools/read-file.test.js +0 -376
  864. package/dist/src/tools/read-file.test.js.map +0 -1
  865. package/dist/src/tools/read-many-files.test.d.ts +0 -6
  866. package/dist/src/tools/read-many-files.test.js +0 -567
  867. package/dist/src/tools/read-many-files.test.js.map +0 -1
  868. package/dist/src/tools/ripGrep.test.d.ts +0 -6
  869. package/dist/src/tools/ripGrep.test.js +0 -1139
  870. package/dist/src/tools/ripGrep.test.js.map +0 -1
  871. package/dist/src/tools/shell.test.d.ts +0 -6
  872. package/dist/src/tools/shell.test.js +0 -526
  873. package/dist/src/tools/shell.test.js.map +0 -1
  874. package/dist/src/tools/tool-names.test.d.ts +0 -6
  875. package/dist/src/tools/tool-names.test.js +0 -43
  876. package/dist/src/tools/tool-names.test.js.map +0 -1
  877. package/dist/src/tools/tool-registry.test.d.ts +0 -6
  878. package/dist/src/tools/tool-registry.test.js +0 -461
  879. package/dist/src/tools/tool-registry.test.js.map +0 -1
  880. package/dist/src/tools/tools.test.d.ts +0 -6
  881. package/dist/src/tools/tools.test.js +0 -207
  882. package/dist/src/tools/tools.test.js.map +0 -1
  883. package/dist/src/tools/web-fetch.test.d.ts +0 -6
  884. package/dist/src/tools/web-fetch.test.js +0 -442
  885. package/dist/src/tools/web-fetch.test.js.map +0 -1
  886. package/dist/src/tools/web-search.test.d.ts +0 -6
  887. package/dist/src/tools/web-search.test.js +0 -214
  888. package/dist/src/tools/web-search.test.js.map +0 -1
  889. package/dist/src/tools/write-file.test.d.ts +0 -6
  890. package/dist/src/tools/write-file.test.js +0 -681
  891. package/dist/src/tools/write-file.test.js.map +0 -1
  892. package/dist/src/tools/write-todos.test.d.ts +0 -6
  893. package/dist/src/tools/write-todos.test.js +0 -90
  894. package/dist/src/tools/write-todos.test.js.map +0 -1
  895. package/dist/src/utils/apiConversionUtils.test.d.ts +0 -6
  896. package/dist/src/utils/apiConversionUtils.test.js +0 -150
  897. package/dist/src/utils/apiConversionUtils.test.js.map +0 -1
  898. package/dist/src/utils/bfsFileSearch.test.d.ts +0 -6
  899. package/dist/src/utils/bfsFileSearch.test.js +0 -227
  900. package/dist/src/utils/bfsFileSearch.test.js.map +0 -1
  901. package/dist/src/utils/channel.test.d.ts +0 -6
  902. package/dist/src/utils/channel.test.js +0 -170
  903. package/dist/src/utils/channel.test.js.map +0 -1
  904. package/dist/src/utils/checkpointUtils.test.d.ts +0 -6
  905. package/dist/src/utils/checkpointUtils.test.js +0 -229
  906. package/dist/src/utils/checkpointUtils.test.js.map +0 -1
  907. package/dist/src/utils/customHeaderUtils.test.d.ts +0 -6
  908. package/dist/src/utils/customHeaderUtils.test.js +0 -77
  909. package/dist/src/utils/customHeaderUtils.test.js.map +0 -1
  910. package/dist/src/utils/debugLogger.test.d.ts +0 -6
  911. package/dist/src/utils/debugLogger.test.js +0 -69
  912. package/dist/src/utils/debugLogger.test.js.map +0 -1
  913. package/dist/src/utils/delay.test.d.ts +0 -6
  914. package/dist/src/utils/delay.test.js +0 -88
  915. package/dist/src/utils/delay.test.js.map +0 -1
  916. package/dist/src/utils/editCorrector.test.d.ts +0 -6
  917. package/dist/src/utils/editCorrector.test.js +0 -533
  918. package/dist/src/utils/editCorrector.test.js.map +0 -1
  919. package/dist/src/utils/editor.test.d.ts +0 -6
  920. package/dist/src/utils/editor.test.js +0 -429
  921. package/dist/src/utils/editor.test.js.map +0 -1
  922. package/dist/src/utils/environmentContext.test.d.ts +0 -6
  923. package/dist/src/utils/environmentContext.test.js +0 -114
  924. package/dist/src/utils/environmentContext.test.js.map +0 -1
  925. package/dist/src/utils/errorParsing.test.d.ts +0 -6
  926. package/dist/src/utils/errorParsing.test.js +0 -84
  927. package/dist/src/utils/errorParsing.test.js.map +0 -1
  928. package/dist/src/utils/errorReporting.test.d.ts +0 -6
  929. package/dist/src/utils/errorReporting.test.js +0 -133
  930. package/dist/src/utils/errorReporting.test.js.map +0 -1
  931. package/dist/src/utils/errors.test.d.ts +0 -6
  932. package/dist/src/utils/errors.test.js +0 -155
  933. package/dist/src/utils/errors.test.js.map +0 -1
  934. package/dist/src/utils/events.test.d.ts +0 -6
  935. package/dist/src/utils/events.test.js +0 -237
  936. package/dist/src/utils/events.test.js.map +0 -1
  937. package/dist/src/utils/extensionLoader.test.d.ts +0 -6
  938. package/dist/src/utils/extensionLoader.test.js +0 -176
  939. package/dist/src/utils/extensionLoader.test.js.map +0 -1
  940. package/dist/src/utils/fileDiffUtils.test.d.ts +0 -6
  941. package/dist/src/utils/fileDiffUtils.test.js +0 -84
  942. package/dist/src/utils/fileDiffUtils.test.js.map +0 -1
  943. package/dist/src/utils/fileUtils.test.d.ts +0 -6
  944. package/dist/src/utils/fileUtils.test.js +0 -780
  945. package/dist/src/utils/fileUtils.test.js.map +0 -1
  946. package/dist/src/utils/filesearch/crawlCache.test.d.ts +0 -6
  947. package/dist/src/utils/filesearch/crawlCache.test.js +0 -103
  948. package/dist/src/utils/filesearch/crawlCache.test.js.map +0 -1
  949. package/dist/src/utils/filesearch/crawler.test.d.ts +0 -6
  950. package/dist/src/utils/filesearch/crawler.test.js +0 -495
  951. package/dist/src/utils/filesearch/crawler.test.js.map +0 -1
  952. package/dist/src/utils/filesearch/fileSearch.test.d.ts +0 -6
  953. package/dist/src/utils/filesearch/fileSearch.test.js +0 -663
  954. package/dist/src/utils/filesearch/fileSearch.test.js.map +0 -1
  955. package/dist/src/utils/filesearch/ignore.test.d.ts +0 -6
  956. package/dist/src/utils/filesearch/ignore.test.js +0 -144
  957. package/dist/src/utils/filesearch/ignore.test.js.map +0 -1
  958. package/dist/src/utils/filesearch/result-cache.test.d.ts +0 -6
  959. package/dist/src/utils/filesearch/result-cache.test.js +0 -46
  960. package/dist/src/utils/filesearch/result-cache.test.js.map +0 -1
  961. package/dist/src/utils/flashFallback.test.d.ts +0 -6
  962. package/dist/src/utils/flashFallback.test.js +0 -103
  963. package/dist/src/utils/flashFallback.test.js.map +0 -1
  964. package/dist/src/utils/formatters.test.d.ts +0 -6
  965. package/dist/src/utils/formatters.test.js +0 -26
  966. package/dist/src/utils/formatters.test.js.map +0 -1
  967. package/dist/src/utils/geminiIgnoreParser.test.d.ts +0 -6
  968. package/dist/src/utils/geminiIgnoreParser.test.js +0 -98
  969. package/dist/src/utils/geminiIgnoreParser.test.js.map +0 -1
  970. package/dist/src/utils/geminiTypeConversion.test.d.ts +0 -6
  971. package/dist/src/utils/geminiTypeConversion.test.js +0 -310
  972. package/dist/src/utils/geminiTypeConversion.test.js.map +0 -1
  973. package/dist/src/utils/generateContentResponseUtilities.test.d.ts +0 -6
  974. package/dist/src/utils/generateContentResponseUtilities.test.js +0 -512
  975. package/dist/src/utils/generateContentResponseUtilities.test.js.map +0 -1
  976. package/dist/src/utils/getFolderStructure.test.d.ts +0 -6
  977. package/dist/src/utils/getFolderStructure.test.js +0 -283
  978. package/dist/src/utils/getFolderStructure.test.js.map +0 -1
  979. package/dist/src/utils/gitIgnoreParser.test.d.ts +0 -6
  980. package/dist/src/utils/gitIgnoreParser.test.js +0 -243
  981. package/dist/src/utils/gitIgnoreParser.test.js.map +0 -1
  982. package/dist/src/utils/googleErrors.test.d.ts +0 -6
  983. package/dist/src/utils/googleErrors.test.js +0 -309
  984. package/dist/src/utils/googleErrors.test.js.map +0 -1
  985. package/dist/src/utils/googleQuotaErrors.test.d.ts +0 -6
  986. package/dist/src/utils/googleQuotaErrors.test.js +0 -548
  987. package/dist/src/utils/googleQuotaErrors.test.js.map +0 -1
  988. package/dist/src/utils/ignorePatterns.test.d.ts +0 -6
  989. package/dist/src/utils/ignorePatterns.test.js +0 -246
  990. package/dist/src/utils/ignorePatterns.test.js.map +0 -1
  991. package/dist/src/utils/installationManager.test.d.ts +0 -6
  992. package/dist/src/utils/installationManager.test.js +0 -93
  993. package/dist/src/utils/installationManager.test.js.map +0 -1
  994. package/dist/src/utils/llm-edit-fixer.test.d.ts +0 -6
  995. package/dist/src/utils/llm-edit-fixer.test.js +0 -223
  996. package/dist/src/utils/llm-edit-fixer.test.js.map +0 -1
  997. package/dist/src/utils/llmUtils.test.d.ts +0 -6
  998. package/dist/src/utils/llmUtils.test.js +0 -196
  999. package/dist/src/utils/llmUtils.test.js.map +0 -1
  1000. package/dist/src/utils/memoryDiscovery.test.d.ts +0 -6
  1001. package/dist/src/utils/memoryDiscovery.test.js +0 -542
  1002. package/dist/src/utils/memoryDiscovery.test.js.map +0 -1
  1003. package/dist/src/utils/memoryImportProcessor.test.d.ts +0 -6
  1004. package/dist/src/utils/memoryImportProcessor.test.js +0 -581
  1005. package/dist/src/utils/memoryImportProcessor.test.js.map +0 -1
  1006. package/dist/src/utils/nextSpeakerChecker.test.d.ts +0 -6
  1007. package/dist/src/utils/nextSpeakerChecker.test.js +0 -191
  1008. package/dist/src/utils/nextSpeakerChecker.test.js.map +0 -1
  1009. package/dist/src/utils/partUtils.test.d.ts +0 -6
  1010. package/dist/src/utils/partUtils.test.js +0 -397
  1011. package/dist/src/utils/partUtils.test.js.map +0 -1
  1012. package/dist/src/utils/pathCorrector.test.d.ts +0 -6
  1013. package/dist/src/utils/pathCorrector.test.js +0 -87
  1014. package/dist/src/utils/pathCorrector.test.js.map +0 -1
  1015. package/dist/src/utils/pathReader.test.d.ts +0 -6
  1016. package/dist/src/utils/pathReader.test.js +0 -406
  1017. package/dist/src/utils/pathReader.test.js.map +0 -1
  1018. package/dist/src/utils/paths.test.d.ts +0 -6
  1019. package/dist/src/utils/paths.test.js +0 -402
  1020. package/dist/src/utils/paths.test.js.map +0 -1
  1021. package/dist/src/utils/retry.test.d.ts +0 -6
  1022. package/dist/src/utils/retry.test.js +0 -548
  1023. package/dist/src/utils/retry.test.js.map +0 -1
  1024. package/dist/src/utils/retry_llm_error.test.d.ts +0 -6
  1025. package/dist/src/utils/retry_llm_error.test.js +0 -280
  1026. package/dist/src/utils/retry_llm_error.test.js.map +0 -1
  1027. package/dist/src/utils/safeJsonStringify.test.d.ts +0 -6
  1028. package/dist/src/utils/safeJsonStringify.test.js +0 -61
  1029. package/dist/src/utils/safeJsonStringify.test.js.map +0 -1
  1030. package/dist/src/utils/schemaValidator.test.d.ts +0 -6
  1031. package/dist/src/utils/schemaValidator.test.js +0 -113
  1032. package/dist/src/utils/schemaValidator.test.js.map +0 -1
  1033. package/dist/src/utils/secure-browser-launcher.test.d.ts +0 -6
  1034. package/dist/src/utils/secure-browser-launcher.test.js +0 -149
  1035. package/dist/src/utils/secure-browser-launcher.test.js.map +0 -1
  1036. package/dist/src/utils/security.test.d.ts +0 -1
  1037. package/dist/src/utils/security.test.js +0 -121
  1038. package/dist/src/utils/security.test.js.map +0 -1
  1039. package/dist/src/utils/shell-utils.integration.test.d.ts +0 -1
  1040. package/dist/src/utils/shell-utils.integration.test.js +0 -58
  1041. package/dist/src/utils/shell-utils.integration.test.js.map +0 -1
  1042. package/dist/src/utils/shell-utils.test.d.ts +0 -6
  1043. package/dist/src/utils/shell-utils.test.js +0 -437
  1044. package/dist/src/utils/shell-utils.test.js.map +0 -1
  1045. package/dist/src/utils/stdio.test.d.ts +0 -6
  1046. package/dist/src/utils/stdio.test.js +0 -47
  1047. package/dist/src/utils/stdio.test.js.map +0 -1
  1048. package/dist/src/utils/summarizer.test.d.ts +0 -6
  1049. package/dist/src/utils/summarizer.test.js +0 -152
  1050. package/dist/src/utils/summarizer.test.js.map +0 -1
  1051. package/dist/src/utils/systemEncoding.test.d.ts +0 -6
  1052. package/dist/src/utils/systemEncoding.test.js +0 -369
  1053. package/dist/src/utils/systemEncoding.test.js.map +0 -1
  1054. package/dist/src/utils/terminalSerializer.test.d.ts +0 -6
  1055. package/dist/src/utils/terminalSerializer.test.js +0 -193
  1056. package/dist/src/utils/terminalSerializer.test.js.map +0 -1
  1057. package/dist/src/utils/textUtils.test.d.ts +0 -6
  1058. package/dist/src/utils/textUtils.test.js +0 -76
  1059. package/dist/src/utils/textUtils.test.js.map +0 -1
  1060. package/dist/src/utils/thoughtUtils.test.d.ts +0 -6
  1061. package/dist/src/utils/thoughtUtils.test.js +0 -78
  1062. package/dist/src/utils/thoughtUtils.test.js.map +0 -1
  1063. package/dist/src/utils/tokenCalculation.test.d.ts +0 -6
  1064. package/dist/src/utils/tokenCalculation.test.js +0 -184
  1065. package/dist/src/utils/tokenCalculation.test.js.map +0 -1
  1066. package/dist/src/utils/tool-utils.test.d.ts +0 -6
  1067. package/dist/src/utils/tool-utils.test.js +0 -84
  1068. package/dist/src/utils/tool-utils.test.js.map +0 -1
  1069. package/dist/src/utils/toolCallContext.test.d.ts +0 -6
  1070. package/dist/src/utils/toolCallContext.test.js +0 -68
  1071. package/dist/src/utils/toolCallContext.test.js.map +0 -1
  1072. package/dist/src/utils/userAccountManager.test.d.ts +0 -6
  1073. package/dist/src/utils/userAccountManager.test.js +0 -225
  1074. package/dist/src/utils/userAccountManager.test.js.map +0 -1
  1075. package/dist/src/utils/version.test.d.ts +0 -6
  1076. package/dist/src/utils/version.test.js +0 -39
  1077. package/dist/src/utils/version.test.js.map +0 -1
  1078. package/dist/src/utils/workspaceContext.test.d.ts +0 -6
  1079. package/dist/src/utils/workspaceContext.test.js +0 -374
  1080. package/dist/src/utils/workspaceContext.test.js.map +0 -1
  1081. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,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
- ```