@danya-ai/cli 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +125 -105
  2. package/dist/REPL-YFM3WKCC.js +42 -0
  3. package/dist/{acp-OF52BP4A.js → acp-LMW4BO5A.js} +26 -26
  4. package/dist/{agentsValidate-WUX5I4FS.js → agentsValidate-5VUACF2G.js} +7 -7
  5. package/dist/{ask-5P2J7UA5.js → ask-C57WQJNZ.js} +25 -25
  6. package/dist/{autoUpdater-6ABURQZA.js → autoUpdater-KEQOIUBC.js} +3 -3
  7. package/dist/{chunk-6KD43S3G.js → chunk-2CRLMZ76.js} +4 -4
  8. package/dist/{chunk-BAYPSZHG.js → chunk-3A4ENL7W.js} +1 -1
  9. package/dist/{chunk-VMJRNHDU.js → chunk-3ONZAVOS.js} +2 -2
  10. package/dist/{chunk-PTQTKIR2.js → chunk-5M3MBCE7.js} +1 -1
  11. package/dist/{chunk-PTQTKIR2.js.map → chunk-5M3MBCE7.js.map} +1 -1
  12. package/dist/{chunk-QJMLHIGS.js → chunk-5TDBDWNG.js} +2 -2
  13. package/dist/{chunk-T6RTYOJB.js → chunk-6JHEJQWY.js} +3 -3
  14. package/dist/{chunk-ESHU3HUM.js → chunk-6LOREEJY.js} +2551 -252
  15. package/dist/chunk-6LOREEJY.js.map +7 -0
  16. package/dist/{chunk-RO73O3Q7.js → chunk-CXOM4XMN.js} +4 -4
  17. package/dist/{chunk-N74L4GAM.js → chunk-DZCV2FEW.js} +1 -1
  18. package/dist/{chunk-SSS2WVMA.js → chunk-E5BAXZSR.js} +1 -1
  19. package/dist/{chunk-KS52NNBY.js → chunk-HIH5HC5H.js} +2 -2
  20. package/dist/{chunk-2VUDETSP.js → chunk-HPSW7NNI.js} +1 -1
  21. package/dist/{chunk-6GABS3DM.js → chunk-HXH5LYLI.js} +1 -1
  22. package/dist/{chunk-6IH7H2LH.js → chunk-IZETEFF5.js} +3 -3
  23. package/dist/{chunk-H3P32G2A.js → chunk-K7QXXI4A.js} +3 -3
  24. package/dist/{chunk-JF5D7ADP.js → chunk-LHNX67NO.js} +3 -3
  25. package/dist/{chunk-CZ5UJ3RL.js → chunk-NMNFFCQ7.js} +1 -1
  26. package/dist/{chunk-BTAVLAZT.js → chunk-RRPXM25U.js} +3 -3
  27. package/dist/{chunk-3GLLMJKA.js → chunk-TWE6H65Q.js} +3 -3
  28. package/dist/{chunk-HNK7M2ZO.js → chunk-UNIJZL2G.js} +1 -1
  29. package/dist/{chunk-7I3UELIX.js → chunk-X36NKBPR.js} +2 -2
  30. package/dist/{chunk-5ONWVNJH.js → chunk-X46SRZQF.js} +1 -1
  31. package/dist/{chunk-HRXRIW33.js → chunk-X7ZDT7EX.js} +2 -2
  32. package/dist/{chunk-JNAMM7A6.js → chunk-XLA6ANZN.js} +11 -11
  33. package/dist/{chunk-M75PDOOM.js → chunk-Y5IRVMDD.js} +3 -3
  34. package/dist/{chunk-QUAOJLG6.js → chunk-YUJ45IMI.js} +1 -1
  35. package/dist/{chunk-U7ZJW3CQ.js → chunk-Z4QNIOFF.js} +2 -2
  36. package/dist/{cli-FE6CUZI3.js → cli-P4CJSCH4.js} +131 -84
  37. package/dist/cli-P4CJSCH4.js.map +7 -0
  38. package/dist/commands-Y7WI2LGN.js +46 -0
  39. package/dist/{config-JEGZHGSM.js → config-5L37WETO.js} +4 -4
  40. package/dist/{context-LEXLLT4O.js → context-SF3X335Q.js} +5 -5
  41. package/dist/{customCommands-RLUKKBRZ.js → customCommands-SPF7HJEH.js} +4 -4
  42. package/dist/{env-4PRTNVDJ.js → env-GR5OKVVR.js} +2 -2
  43. package/dist/index.js +3 -3
  44. package/dist/{kodeAgentSessionLoad-LUKUH23S.js → kodeAgentSessionLoad-L54J2WSU.js} +4 -4
  45. package/dist/{kodeAgentSessionResume-FDZ6H3PX.js → kodeAgentSessionResume-4S4ZW7WI.js} +4 -4
  46. package/dist/{kodeAgentStreamJsonSession-VE2UG5B2.js → kodeAgentStreamJsonSession-44EO542F.js} +1 -1
  47. package/dist/{kodeHooks-ZVNRQTZM.js → kodeHooks-G64RN6MW.js} +4 -4
  48. package/dist/{llm-IFU62ZT4.js → llm-23Z6UDED.js} +26 -26
  49. package/dist/{llmLazy-45EGHX2A.js → llmLazy-PKBZHKOG.js} +1 -1
  50. package/dist/{loader-TITFI6LS.js → loader-BXIFWM6O.js} +4 -4
  51. package/dist/{mcp-DE5HUK63.js → mcp-CYG2WZG5.js} +7 -7
  52. package/dist/{mentionProcessor-SAPYBDCK.js → mentionProcessor-XQ2HNO4M.js} +5 -5
  53. package/dist/{messages-BARXRPB4.js → messages-YOW6NTUG.js} +1 -1
  54. package/dist/{model-PC6MMS2S.js → model-NIOLLP6W.js} +5 -5
  55. package/dist/{openai-AVJO73FG.js → openai-G2AMXRJ2.js} +5 -5
  56. package/dist/{outputStyles-VL7EKGIQ.js → outputStyles-CZDXBWRF.js} +4 -4
  57. package/dist/{pluginRuntime-IG2H3W7C.js → pluginRuntime-ZIT4IL6O.js} +6 -6
  58. package/dist/{pluginValidation-TOBMLJ5A.js → pluginValidation-LO7TNL4T.js} +6 -6
  59. package/dist/prompts-MKPN6WZF.js +50 -0
  60. package/dist/query-MSMRQ2ET.js +50 -0
  61. package/dist/{ripgrep-HID6XW3J.js → ripgrep-XSFDNITT.js} +3 -3
  62. package/dist/{skillMarketplace-YBS7NR7Q.js → skillMarketplace-NX6XZDT4.js} +3 -3
  63. package/dist/{state-5OBXGJX6.js → state-YAYMHZAZ.js} +2 -2
  64. package/dist/{theme-U2POECGP.js → theme-RATH22A4.js} +5 -5
  65. package/dist/{toolPermissionSettings-AYX5MEOW.js → toolPermissionSettings-SFS4Z63J.js} +6 -6
  66. package/dist/tools-2J2DNXWI.js +47 -0
  67. package/dist/{userInput-RXNBLFAH.js → userInput-EQAF4OWN.js} +27 -27
  68. package/package.json +1 -1
  69. package/dist/REPL-URLRZ4T4.js +0 -42
  70. package/dist/chunk-ESHU3HUM.js.map +0 -7
  71. package/dist/cli-FE6CUZI3.js.map +0 -7
  72. package/dist/commands-6DP3QW2F.js +0 -46
  73. package/dist/prompts-JGBWXN2Z.js +0 -50
  74. package/dist/query-4DUM4QP7.js +0 -50
  75. package/dist/tools-JL434UMR.js +0 -47
  76. /package/dist/{REPL-URLRZ4T4.js.map → REPL-YFM3WKCC.js.map} +0 -0
  77. /package/dist/{acp-OF52BP4A.js.map → acp-LMW4BO5A.js.map} +0 -0
  78. /package/dist/{agentsValidate-WUX5I4FS.js.map → agentsValidate-5VUACF2G.js.map} +0 -0
  79. /package/dist/{ask-5P2J7UA5.js.map → ask-C57WQJNZ.js.map} +0 -0
  80. /package/dist/{autoUpdater-6ABURQZA.js.map → autoUpdater-KEQOIUBC.js.map} +0 -0
  81. /package/dist/{chunk-6KD43S3G.js.map → chunk-2CRLMZ76.js.map} +0 -0
  82. /package/dist/{chunk-BAYPSZHG.js.map → chunk-3A4ENL7W.js.map} +0 -0
  83. /package/dist/{chunk-VMJRNHDU.js.map → chunk-3ONZAVOS.js.map} +0 -0
  84. /package/dist/{chunk-QJMLHIGS.js.map → chunk-5TDBDWNG.js.map} +0 -0
  85. /package/dist/{chunk-T6RTYOJB.js.map → chunk-6JHEJQWY.js.map} +0 -0
  86. /package/dist/{chunk-RO73O3Q7.js.map → chunk-CXOM4XMN.js.map} +0 -0
  87. /package/dist/{chunk-N74L4GAM.js.map → chunk-DZCV2FEW.js.map} +0 -0
  88. /package/dist/{chunk-SSS2WVMA.js.map → chunk-E5BAXZSR.js.map} +0 -0
  89. /package/dist/{chunk-KS52NNBY.js.map → chunk-HIH5HC5H.js.map} +0 -0
  90. /package/dist/{chunk-2VUDETSP.js.map → chunk-HPSW7NNI.js.map} +0 -0
  91. /package/dist/{chunk-6GABS3DM.js.map → chunk-HXH5LYLI.js.map} +0 -0
  92. /package/dist/{chunk-6IH7H2LH.js.map → chunk-IZETEFF5.js.map} +0 -0
  93. /package/dist/{chunk-H3P32G2A.js.map → chunk-K7QXXI4A.js.map} +0 -0
  94. /package/dist/{chunk-JF5D7ADP.js.map → chunk-LHNX67NO.js.map} +0 -0
  95. /package/dist/{chunk-CZ5UJ3RL.js.map → chunk-NMNFFCQ7.js.map} +0 -0
  96. /package/dist/{chunk-BTAVLAZT.js.map → chunk-RRPXM25U.js.map} +0 -0
  97. /package/dist/{chunk-3GLLMJKA.js.map → chunk-TWE6H65Q.js.map} +0 -0
  98. /package/dist/{chunk-HNK7M2ZO.js.map → chunk-UNIJZL2G.js.map} +0 -0
  99. /package/dist/{chunk-7I3UELIX.js.map → chunk-X36NKBPR.js.map} +0 -0
  100. /package/dist/{chunk-5ONWVNJH.js.map → chunk-X46SRZQF.js.map} +0 -0
  101. /package/dist/{chunk-HRXRIW33.js.map → chunk-X7ZDT7EX.js.map} +0 -0
  102. /package/dist/{chunk-JNAMM7A6.js.map → chunk-XLA6ANZN.js.map} +0 -0
  103. /package/dist/{chunk-M75PDOOM.js.map → chunk-Y5IRVMDD.js.map} +0 -0
  104. /package/dist/{chunk-QUAOJLG6.js.map → chunk-YUJ45IMI.js.map} +0 -0
  105. /package/dist/{chunk-U7ZJW3CQ.js.map → chunk-Z4QNIOFF.js.map} +0 -0
  106. /package/dist/{commands-6DP3QW2F.js.map → commands-Y7WI2LGN.js.map} +0 -0
  107. /package/dist/{config-JEGZHGSM.js.map → config-5L37WETO.js.map} +0 -0
  108. /package/dist/{context-LEXLLT4O.js.map → context-SF3X335Q.js.map} +0 -0
  109. /package/dist/{customCommands-RLUKKBRZ.js.map → customCommands-SPF7HJEH.js.map} +0 -0
  110. /package/dist/{env-4PRTNVDJ.js.map → env-GR5OKVVR.js.map} +0 -0
  111. /package/dist/{kodeAgentSessionLoad-LUKUH23S.js.map → kodeAgentSessionLoad-L54J2WSU.js.map} +0 -0
  112. /package/dist/{kodeAgentSessionResume-FDZ6H3PX.js.map → kodeAgentSessionResume-4S4ZW7WI.js.map} +0 -0
  113. /package/dist/{kodeAgentStreamJsonSession-VE2UG5B2.js.map → kodeAgentStreamJsonSession-44EO542F.js.map} +0 -0
  114. /package/dist/{kodeHooks-ZVNRQTZM.js.map → kodeHooks-G64RN6MW.js.map} +0 -0
  115. /package/dist/{llm-IFU62ZT4.js.map → llm-23Z6UDED.js.map} +0 -0
  116. /package/dist/{llmLazy-45EGHX2A.js.map → llmLazy-PKBZHKOG.js.map} +0 -0
  117. /package/dist/{loader-TITFI6LS.js.map → loader-BXIFWM6O.js.map} +0 -0
  118. /package/dist/{mcp-DE5HUK63.js.map → mcp-CYG2WZG5.js.map} +0 -0
  119. /package/dist/{mentionProcessor-SAPYBDCK.js.map → mentionProcessor-XQ2HNO4M.js.map} +0 -0
  120. /package/dist/{messages-BARXRPB4.js.map → messages-YOW6NTUG.js.map} +0 -0
  121. /package/dist/{model-PC6MMS2S.js.map → model-NIOLLP6W.js.map} +0 -0
  122. /package/dist/{openai-AVJO73FG.js.map → openai-G2AMXRJ2.js.map} +0 -0
  123. /package/dist/{outputStyles-VL7EKGIQ.js.map → outputStyles-CZDXBWRF.js.map} +0 -0
  124. /package/dist/{pluginRuntime-IG2H3W7C.js.map → pluginRuntime-ZIT4IL6O.js.map} +0 -0
  125. /package/dist/{pluginValidation-TOBMLJ5A.js.map → pluginValidation-LO7TNL4T.js.map} +0 -0
  126. /package/dist/{prompts-JGBWXN2Z.js.map → prompts-MKPN6WZF.js.map} +0 -0
  127. /package/dist/{query-4DUM4QP7.js.map → query-MSMRQ2ET.js.map} +0 -0
  128. /package/dist/{ripgrep-HID6XW3J.js.map → ripgrep-XSFDNITT.js.map} +0 -0
  129. /package/dist/{skillMarketplace-YBS7NR7Q.js.map → skillMarketplace-NX6XZDT4.js.map} +0 -0
  130. /package/dist/{state-5OBXGJX6.js.map → state-YAYMHZAZ.js.map} +0 -0
  131. /package/dist/{theme-U2POECGP.js.map → theme-RATH22A4.js.map} +0 -0
  132. /package/dist/{toolPermissionSettings-AYX5MEOW.js.map → toolPermissionSettings-SFS4Z63J.js.map} +0 -0
  133. /package/dist/{tools-JL434UMR.js.map → tools-2J2DNXWI.js.map} +0 -0
  134. /package/dist/{userInput-RXNBLFAH.js.map → userInput-EQAF4OWN.js.map} +0 -0
package/README.md CHANGED
@@ -25,20 +25,30 @@ npm install -g .
25
25
  danya --version
26
26
  ```
27
27
 
28
+ ## 更新
29
+
30
+ ```bash
31
+ npm install -g @danya-ai/cli@latest
32
+ ```
33
+
28
34
  ## 快速使用
29
35
 
30
36
  ```bash
31
- # 初始化游戏项目(自动检测引擎,生成配置和 Hook)
37
+ # 进入你的游戏项目,启动 danya(首次启动会引导配置 AI 模型)
32
38
  cd <你的游戏项目>
33
- danya init
34
-
35
- # 启动交互模式(首次启动会引导配置 AI 模型)
36
39
  danya
37
40
 
41
+ # 初始化 harness(自动检测引擎,生成完整的规则、命令、Hook 体系)
42
+ # 注:首次启动时会自动初始化,也可以手动执行:
43
+ /init
44
+
38
45
  # 常用命令
46
+ /auto-work "添加背包排序功能" # 全自动流水线(分类→规划→编码→审查→提交→沉淀→自演进)
47
+ /auto-bugfix "角色状态切换动画异常" # Bug 自动修复(必须先复现才能修)
39
48
  /review # 评分制代码审查(100 分制)
40
- /auto-work "添加背包排序功能" # 全自动流水线
41
- /auto-bugfix "角色状态切换动画异常" # Bug 自动修复
49
+ /fix-harness # 更新 harness 规则(自演进)
50
+ /plan "大功能需求" # 分析需求,生成开发计划
51
+ /verify # 机械验证(quick | build | full)
42
52
  /parallel-execute prepare "大功能" # 波次并行执行
43
53
  ```
44
54
 
@@ -74,80 +84,40 @@ danya
74
84
 
75
85
  ---
76
86
 
77
- ## 功能特性
78
-
79
- - **AI 驱动的助手** — 使用先进的 AI 模型理解并响应你的请求
80
- - **多模型协同** — 灵活切换和组合使用多个 AI 模型(20+ 提供商),发挥各自优势
81
- - **代码编辑** — 直接编辑文件,提供智能建议和改进
82
- - **代码库理解** — 分析项目结构和代码关系
83
- - **命令执行** — 实时运行 shell 命令并查看结果
84
- - **工作流自动化** — 用简单的提示处理复杂的开发任务
85
- - **交互式界面** — 美观的终端界面,支持语法高亮
86
- - **工具系统** — 可扩展的架构,为不同任务提供专门的工具(22 通用 + 13 游戏专用)
87
- - **上下文管理** — 智能的上下文处理,保持对话连续性
88
- - **游戏引擎感知** — 自动识别 Unity / UE / Godot / Go 服务器,注入引擎领域知识
89
- - **门禁链质量管控** — 6 道门禁强制执行代码质量标准
90
- - **评分制审查** — 100 分制量化审查,33 条引擎检查规则
91
- - **知识自动沉淀** — 开发成果自动文档化,不丢失项目知识
92
-
93
- ---
94
-
95
87
  ## Danya 是什么
96
88
 
97
89
  Danya 是一个运行在终端中的 AI 编程助手,**专门为游戏开发场景设计**。它不是一个通用的代码补全工具,而是一个理解游戏项目架构、强制执行质量标准、并能自动化整个开发工作流的 Agent。
98
90
 
99
- 你可以把它理解为:**Claude Code 的游戏开发定制版**,融合了传统 Agent 的成熟工具系统、Kode 的多模型能力、以及 Game Harness Engineering 的质量治理体系。
100
-
101
- ```
102
- ┌──────────────────────────┐
103
- │ Danya │
104
- │ │
105
- │ 传统 Agent 的工具系统 │
106
- │ + Kode 的多模型能力 │
107
- │ + Game Harness 的质量治理 │
108
- │ + 游戏开发领域知识 │
109
- └──────────────────────────┘
110
- ```
91
+ **开箱即用**——进入游戏项目启动 Danya,它会自动检测引擎类型,生成完整的 harness 体系(规则、命令、Hook、记忆),不需要你手动搭建任何环境。如果你之前用过 Claude Code Codex,已有的 `.claude/` `.codex/` 配置会自动整合到 `.danya/` 中。
111
92
 
112
93
  ---
113
94
 
114
- ## 与 Claude Code / Codex / Kode 的区别
115
-
116
- ### 一句话总结
117
-
118
- | 产品 | 定位 | 一句话描述 |
119
- |------|------|----------|
120
- | **Claude Code** | 通用编程助手 | Anthropic 官方 CLI,能力强但不懂游戏 |
121
- | **Codex (OpenAI)** | 通用编程助手 | OpenAI 的终端 Agent,只支持 OpenAI 模型 |
122
- | **Kode** | 通用编程助手 | Claude Code 开源替代,支持多模型 |
123
- | **Danya** | **游戏开发编程助手** | 为游戏项目定制:理解引擎、门禁链、评分审查 |
124
-
125
- ### 详细对比
126
-
127
- | 能力 | Claude Code | Codex | Kode | **Danya** |
128
- |------|------------|-------|------|-----------|
129
- | **游戏引擎理解** | 无 | 无 | 无 | **Unity / UE / Godot 自动识别,注入引擎知识** |
130
- | **禁区防护** | 无 | 无 | 无 | **自动检测 auto-generated 代码,Hook 硬拦截** |
131
- | **评分制审查** | 无 | 无 | 无 | **100 分制,33 条引擎检查,质量棘轮** |
132
- | **门禁链** | 无 | 无 | 无 | **6 道门禁:Guard→Syntax→Verify→Commit→Review→Push** |
133
- | **全自动流水线** | 无 | 无 | 无 | **/auto-work, /auto-bugfix, /parallel-execute** |
134
- | **知识沉淀** | 无 | 无 | 无 | **自动写 Docs/(功能/Bug/调研)** |
135
- | **Harness 自演进** | 无 | 无 | 无 | **Agent 出错后自动更新规则** |
136
- | 多模型支持 | 仅 Anthropic | 仅 OpenAI | **20+ 提供商** | **20+ 提供商(继承 Kode)** |
137
- | Hook 系统 | 18 种事件 | 无 | 4 种事件 | **18 种事件** |
138
- | 权限系统 | 规则层叠 | 简单 | 简单 | **规则层叠** |
139
- | 工具系统 | 43 个工具 | ~10 | 22 个 | **22 通用 + 13 游戏专用 = 35 个工具** |
140
-
141
- ### 核心差异:通用 vs 游戏专用
95
+ ## 功能特性
142
96
 
143
- Claude Code / Codex / Kode 是**通用编程助手**——它们不知道:
144
- - Unity 中应该用 `UniTask` 而不是 `Task`
145
- - 配置和协议目录下的代码是自动生成的,不能手动编辑
146
- - Go 游戏服务端应该用架构约定特点
147
- - 游戏项目的多层架构不能反向引用
148
- - 修改 `.proto` 文件后必须同步客户端和服务端
97
+ ### 基础能力
98
+ - **AI 驱动的助手** 使用先进的 AI 模型理解并响应你的请求
99
+ - **多模型协同** — 灵活切换和组合使用多个 AI 模型(20+ 提供商),发挥各自优势
100
+ - **代码编辑** — 直接编辑文件,提供智能建议和改进
101
+ - **代码库理解** — 分析项目结构和代码关系
102
+ - **命令执行** 实时运行 shell 命令并查看结果
103
+ - **交互式界面** — 美观的终端界面,支持语法高亮
104
+ - **工具系统** — 可扩展的架构(22 通用 + 13 游戏专用 = 35 个工具)
149
105
 
150
- Danya **理解这些**,并且通过机械化的 Hook 和评分制审查来**强制执行**。
106
+ ### 游戏开发专用
107
+ - **游戏引擎感知** — 自动识别 Unity / UE / Godot / Go 服务器,注入引擎领域知识
108
+ - **完整 Harness 内置** — `/init` 自动释放规则、命令、Hook、记忆模板,开箱即用
109
+ - **门禁链质量管控** — 6 道门禁强制执行代码质量标准(Hook 硬拦截,Agent 无法绕过)
110
+ - **评分制审查** — 100 分制量化审查,33 条引擎检查规则,质量棘轮
111
+ - **全自动流水线** — /auto-work(7 阶段)、/auto-bugfix(5 轮)、/parallel-execute(波次并行)
112
+ - **Harness 自演进** — Agent 出错修复后自动检测并更新规则,防止同类错误再次发生
113
+ - **知识自动沉淀** — 开发成果自动文档化到 Docs/,不丢失项目知识
114
+
115
+ ### 工程化能力
116
+ - **三层隔离** — 自动检测 workspace(client + server),workspace 层 + 子项目层各有独立配置
117
+ - **Legacy 兼容** — 自动整合 `.claude/` 和 `.codex/` 已有配置到 `.danya/`,无缝迁移
118
+ - **智能上下文压缩** — 语义分组 + 选择性压缩 + 8 段结构化摘要 + 关键文件自动恢复
119
+ - **Subagent 调度** — 5+ 工具调用自动使用子 Agent,避免主上下文污染
120
+ - **自动初始化** — 首次启动时静默生成 `.danya/` 完整体系,无需手动 /init
151
121
 
152
122
  ---
153
123
 
@@ -174,36 +144,49 @@ Danya 启动时自动检测项目引擎类型,注入对应的领域知识:
174
144
 
175
145
  这意味着 Agent 从**第一行输出**就知道项目的规则,不需要你反复提醒。
176
146
 
177
- ### 2. 自动生成代码禁区防护
147
+ ### 2. 完整 Harness 开箱即用
148
+
149
+ 进入项目启动 Danya,自动生成完整的治理体系:
150
+
151
+ ```
152
+ .danya/
153
+ ├── rules/ — 约束规则(constitution、golden-principles、known-pitfalls...)
154
+ ├── commands/ — 工作流命令(auto-work、review、fix-harness、verify...)
155
+ ├── memory/ — 持久领域知识(架构层级、调用链、配置管线...)
156
+ ├── hooks/ — 机械执行脚本(禁区守卫、提交检查、推送闸门、自演进检测...)
157
+ ├── settings.json — Hook 注册
158
+ ├── gate-chain.json — 门禁链配置
159
+ └── guard-rules.json — 禁区规则
160
+ ```
178
161
 
179
- 游戏项目中有大量自动生成的代码(配置表、ORMProtobuf 桩代码)。通用助手不知道这些不能碰,经常修改后被下一次生成覆盖。
162
+ 4 套引擎模板内置(UnityGo Server、Unreal、Godot),根据检测结果自动选择。用户可以自由增删改规则,Danya 不会覆盖用户的自定义内容。
163
+
164
+ ### 3. 自动生成代码禁区防护
180
165
 
181
166
  Danya 的 **Gate 0 (Guard)** 在文件编辑前就拦截:
182
167
 
183
168
  ```
184
169
  Agent 尝试编辑 Config/Gen/XXXConfig.cs
185
170
  → Guard Hook 检测到禁区
186
- 阻断编辑
171
+ → 阻断编辑
187
172
  → 告知 Agent:"这是自动生成代码,改 Excel 源文件后重新生成"
188
173
  ```
189
174
 
190
- ### 3. 评分制代码审查(不再是 PASS/FAIL)
191
-
192
- 通用助手的代码审查只能给出主观的"看起来不错"。Danya 用**量化的评分系统**:
175
+ ### 4. 评分制代码审查(不再是 PASS/FAIL)
193
176
 
194
177
  ```
195
178
  初始分:100
196
179
  CRITICAL: -30(任何 CRITICAL = 直接 FAIL)
197
180
  HIGH: -10
198
181
  MEDIUM: -3
199
- 通过线:≥80 且无 CRITICAL
182
+ 通过线:>=80 且无 CRITICAL
200
183
 
201
184
  质量棘轮:分数只升不降,防止"修一个 bug 引入两个新 bug"
202
185
  ```
203
186
 
204
187
  33 条机械检查自动运行(5 套引擎规则),AI 判断补充架构和逻辑审查。
205
188
 
206
- ### 4. 全自动开发流水线
189
+ ### 5. 全自动开发流水线
207
190
 
208
191
  一条命令完成整个开发周期:
209
192
 
@@ -217,8 +200,6 @@ MEDIUM: -3
217
200
  → Stage 4: 提交 → <feat>(inventory) add item sorting
218
201
  → Stage 5: 沉淀 → Docs/Version/v1.2/inventory-sorting/summary.md
219
202
  → Stage 6: 自演进 → 更新规则文件
220
-
221
- ═══ AUTO-WORK COMPLETE ═══
222
203
  ```
223
204
 
224
205
  Bug 修复有专用流水线,**必须先复现才能修**:
@@ -229,7 +210,35 @@ Bug 修复有专用流水线,**必须先复现才能修**:
229
210
  → 复现 → 定位根因 → 修复(最多5轮) → 审查 → 提交 → 经验固化
230
211
  ```
231
212
 
232
- ### 5. 多模型支持(国内团队友好)
213
+ ### 6. Harness 自演进
214
+
215
+ Agent 修复错误后,系统自动检测"出错→修复"模式,提示更新规则:
216
+
217
+ ```
218
+ Agent 编译出错 → 修复 → 编译成功
219
+ → 系统检测到 error-then-fix 模式
220
+ → 提示 Agent 运行 /fix-harness
221
+ → 自动路由到正确的规则文件(constitution / golden-principles / known-pitfalls...)
222
+ → 添加:错误写法 + 正确写法
223
+ → 下次不再犯同样的错
224
+ ```
225
+
226
+ ### 7. 三层隔离(Workspace 模式)
227
+
228
+ 当项目包含客户端 + 服务器时,Danya 自动识别并创建分层配置:
229
+
230
+ ```
231
+ workspace/
232
+ ├── .danya/ — 跨项目规则(协议同步、配置表、版本管理)
233
+ ├── client/
234
+ │ └── .danya/ — 客户端专属(Unity 规则、C# Hook、UI 架构)
235
+ └── server/
236
+ └── .danya/ — 服务端专属(Go 规则、RPC 约束、ECS 架构)
237
+ ```
238
+
239
+ 单项目(仅客户端或仅服务器)则只用一层。
240
+
241
+ ### 8. 多模型支持(国内团队友好)
233
242
 
234
243
  不锁定任何一家 AI 提供商。4 种语义指针让不同任务用不同模型:
235
244
 
@@ -243,7 +252,17 @@ pointers:
243
252
 
244
253
  内置 3 个预设:`china.yaml`(DeepSeek+千问+智谱)、`international.yaml`(Claude+GPT)、`single-model.yaml`(单模型极简配置)。
245
254
 
246
- ### 6. 知识不丢失
255
+ ### 9. 智能上下文压缩
256
+
257
+ 长对话不会"失忆"——融合两种压缩策略的最优方案:
258
+
259
+ - **选择性压缩**:只压缩最老的消息,保留最近 4 条原文
260
+ - **语义分组**:工具调用请求和结果配对,不拆散完整交互
261
+ - **8 段结构化摘要**:技术上下文、项目概览、代码变更、调试问题、当前状态、待办任务、用户偏好、关键决策
262
+ - **关键文件自动恢复**:压缩后自动恢复最近访问的 5 个文件
263
+ - **模型智能切换**:优先用 compact 模型压缩,装不下时自动切 main 模型
264
+
265
+ ### 10. 知识不丢失
247
266
 
248
267
  游戏项目的知识容易随人员流动丢失。Danya 在每次任务完成后**自动沉淀**:
249
268
 
@@ -289,21 +308,23 @@ Edit → Guard → Syntax → Verify → Commit → Review → Push
289
308
 
290
309
  - **机械执行(Hook)**:Guard / Syntax / Commit / Push — shell 脚本,Agent 无法绕过
291
310
  - **AI 判断(评分)**:Review — 需要理解代码质量,靠评分系统量化
311
+ - **自演进检测(Hook)**:PostToolUse 自动检测 error-then-fix 模式
292
312
 
293
313
  **Push 令牌制**:审查通过才生成 `push-approved` 令牌,push 时检查并消费(一次性使用)。
294
314
 
295
315
  ---
296
316
 
297
- ## 技术架构
317
+ ## 与其他工具的兼容
298
318
 
299
- 融合三个项目的最优设计:
300
-
301
- | 来源 | 贡献 |
319
+ | 场景 | 行为 |
302
320
  |------|------|
303
- | **XXXXXX XXXX** | 工具系统(43工具)、Hook 系统(18事件)、权限层叠、对话压缩、Prompt 缓存 |
304
- | **Kode** | 多模型系统(20+提供商)、Provider 适配器、模型配置 YAML、React/Ink 终端 UI |
305
- | **Game Harness Engineering (Danya 原创)** | 门禁链、评分审查、全自动流水线、知识沉淀、Harness 自演进 |
306
- | **Danya 原创** | 游戏引擎检测、引擎变体提示词、13 个游戏工具、AGENTS.md 模板 |
321
+ | 项目已有 `.claude/` | 自动整合到 `.danya/`,不丢失自定义内容 |
322
+ | 项目已有 `.codex/` | 同上,自动整合 |
323
+ | `.danya/` `.claude/` 同时存在 | `.danya/` 优先,`.claude/` 中独有的内容整合进来 |
324
+ | 同名文件冲突 | `.danya/` 的保留,`.claude/` 的跳过 |
325
+ | 运行时 | 只读 `.danya/`,不再读 `.claude/` 或 `.codex/` |
326
+ | Claude 模型 | `/init` 生成 `CLAUDE.md` |
327
+ | 其他模型 | `/init` 生成 `AGENTS.md` |
307
328
 
308
329
  ---
309
330
 
@@ -324,25 +345,22 @@ Edit → Guard → Syntax → Verify → Commit → Review → Push
324
345
 
325
346
  ```
326
347
  ~/.danya/config.json — 全局配置(API Key、模型配置)
327
- .danya/settings.json — 项目 Hook 和权限配置
328
- .danya/gate-chain.json 门禁链配置
329
- .danya/guard-rules.json 禁区规则
330
- AGENTS.md 项目指令(AI 读取的规则和上下文)
348
+ .danya/
349
+ ├── settings.json Hook 注册
350
+ ├── gate-chain.json 门禁链配置
351
+ ├── guard-rules.json 禁区规则
352
+ ├── rules/ — 约束规则(可自定义)
353
+ ├── commands/ — 工作流命令(可自定义)
354
+ ├── memory/ — 持久领域知识
355
+ └── hooks/ — 机械执行脚本
356
+ CLAUDE.md / AGENTS.md — 项目指令
331
357
  ```
332
358
 
333
359
  ---
334
360
 
335
- ## 文档
336
-
337
- - [快速开始](docs/getting-started.md)
338
- - [配置指南](docs/configuration.md)
339
- - 引擎指南:[Unity](docs/engine-guides/unity.md) | [Unreal](docs/engine-guides/unreal.md) | [Godot](docs/engine-guides/godot.md) | [Go 服务端](docs/engine-guides/go-server.md)
340
-
341
- ---
342
-
343
361
  ## 学习项目声明
344
362
 
345
- Danya 是一个**学习项目**,用于研究 AI Agent 在游戏开发中的工程化实践。它融合了 Claude Code、Kode、Game Harness Engineering 的设计,不用于商业用途。
363
+ Danya 是一个**学习项目**,用于研究 AI Agent 在游戏开发中的工程化实践。不用于商业用途。
346
364
 
347
365
  核心价值不在于"又做了一个 Claude Code",而在于回答一个问题:**AI Agent 专门为游戏开发定制后,能比通用助手好多少?**
348
366
 
@@ -351,7 +369,9 @@ Danya 是一个**学习项目**,用于研究 AI Agent 在游戏开发中的工
351
369
  - 通用助手不知道自动生成目录不能碰 → Danya Hook 硬拦截
352
370
  - 通用助手的审查是 PASS/FAIL → Danya 是 100 分制量化评分
353
371
  - 通用助手不沉淀知识 → Danya 自动写文档到 Docs/
354
- - 将一套经过验证的 Harness 融合到 Agent 中,开箱即用
372
+ - 通用助手出错不会自我进化 Danya 自动更新规则防止重犯
373
+ - 通用助手不懂 workspace 隔离 → Danya 自动识别 client/server 分层配置
374
+ - 将一套经过验证的 Game Harness 融合到 Agent 中,开箱即用
355
375
 
356
376
  **领域专用 > 通用万能。**
357
377
 
@@ -0,0 +1,42 @@
1
+ import { createRequire as __kodeCreateRequire } from "node:module";
2
+ const require = __kodeCreateRequire(import.meta.url);
3
+ import {
4
+ REPL
5
+ } from "./chunk-6LOREEJY.js";
6
+ import "./chunk-X46SRZQF.js";
7
+ import "./chunk-CXOM4XMN.js";
8
+ import "./chunk-IZETEFF5.js";
9
+ import "./chunk-HXH5LYLI.js";
10
+ import "./chunk-UNIJZL2G.js";
11
+ import "./chunk-Z4QNIOFF.js";
12
+ import "./chunk-Y5LQPJWK.js";
13
+ import "./chunk-JVGG2YQR.js";
14
+ import "./chunk-K7QXXI4A.js";
15
+ import "./chunk-U7Z4MXY4.js";
16
+ import "./chunk-X7ZDT7EX.js";
17
+ import "./chunk-3ONZAVOS.js";
18
+ import "./chunk-2CRLMZ76.js";
19
+ import "./chunk-E5BAXZSR.js";
20
+ import "./chunk-HIH5HC5H.js";
21
+ import "./chunk-Y5IRVMDD.js";
22
+ import "./chunk-HPSW7NNI.js";
23
+ import "./chunk-MVN3DHQF.js";
24
+ import "./chunk-5TDBDWNG.js";
25
+ import "./chunk-XEYEKVFT.js";
26
+ import "./chunk-X36NKBPR.js";
27
+ import "./chunk-WAY3DKFO.js";
28
+ import "./chunk-2VQWLLDU.js";
29
+ import "./chunk-YUJ45IMI.js";
30
+ import "./chunk-RRPXM25U.js";
31
+ import "./chunk-LHNX67NO.js";
32
+ import "./chunk-DZCV2FEW.js";
33
+ import "./chunk-6JHEJQWY.js";
34
+ import "./chunk-HIIHGKXP.js";
35
+ import "./chunk-NMNFFCQ7.js";
36
+ import "./chunk-3A4ENL7W.js";
37
+ import "./chunk-5M3MBCE7.js";
38
+ import "./chunk-LWXT5RGE.js";
39
+ import "./chunk-M3TKNAUR.js";
40
+ export {
41
+ REPL
42
+ };
@@ -6,60 +6,60 @@ import {
6
6
  } from "./chunk-PDSAJX7G.js";
7
7
  import {
8
8
  getTools
9
- } from "./chunk-JNAMM7A6.js";
9
+ } from "./chunk-XLA6ANZN.js";
10
10
  import {
11
11
  getCommands,
12
12
  getSystemPrompt,
13
13
  grantReadPermissionForOriginalDir,
14
14
  hasPermissionsToUseTool,
15
15
  query
16
- } from "./chunk-ESHU3HUM.js";
17
- import "./chunk-5ONWVNJH.js";
16
+ } from "./chunk-6LOREEJY.js";
17
+ import "./chunk-X46SRZQF.js";
18
18
  import {
19
19
  getClients
20
- } from "./chunk-RO73O3Q7.js";
21
- import "./chunk-6IH7H2LH.js";
22
- import "./chunk-6GABS3DM.js";
23
- import "./chunk-HNK7M2ZO.js";
24
- import "./chunk-U7ZJW3CQ.js";
20
+ } from "./chunk-CXOM4XMN.js";
21
+ import "./chunk-IZETEFF5.js";
22
+ import "./chunk-HXH5LYLI.js";
23
+ import "./chunk-UNIJZL2G.js";
24
+ import "./chunk-Z4QNIOFF.js";
25
25
  import "./chunk-Y5LQPJWK.js";
26
26
  import "./chunk-JVGG2YQR.js";
27
- import "./chunk-H3P32G2A.js";
27
+ import "./chunk-K7QXXI4A.js";
28
28
  import "./chunk-U7Z4MXY4.js";
29
- import "./chunk-HRXRIW33.js";
30
- import "./chunk-VMJRNHDU.js";
31
- import "./chunk-6KD43S3G.js";
32
- import "./chunk-SSS2WVMA.js";
33
- import "./chunk-KS52NNBY.js";
29
+ import "./chunk-X7ZDT7EX.js";
30
+ import "./chunk-3ONZAVOS.js";
31
+ import "./chunk-2CRLMZ76.js";
32
+ import "./chunk-E5BAXZSR.js";
33
+ import "./chunk-HIH5HC5H.js";
34
34
  import {
35
35
  loadToolPermissionContextFromDisk,
36
36
  persistToolPermissionUpdateToDisk
37
- } from "./chunk-M75PDOOM.js";
38
- import "./chunk-2VUDETSP.js";
37
+ } from "./chunk-Y5IRVMDD.js";
38
+ import "./chunk-HPSW7NNI.js";
39
39
  import {
40
40
  applyToolPermissionContextUpdates
41
41
  } from "./chunk-MVN3DHQF.js";
42
- import "./chunk-QJMLHIGS.js";
42
+ import "./chunk-5TDBDWNG.js";
43
43
  import "./chunk-XEYEKVFT.js";
44
- import "./chunk-7I3UELIX.js";
44
+ import "./chunk-X36NKBPR.js";
45
45
  import "./chunk-WAY3DKFO.js";
46
46
  import "./chunk-2VQWLLDU.js";
47
47
  import {
48
48
  createAssistantMessage,
49
49
  createUserMessage
50
- } from "./chunk-QUAOJLG6.js";
51
- import "./chunk-BTAVLAZT.js";
50
+ } from "./chunk-YUJ45IMI.js";
51
+ import "./chunk-RRPXM25U.js";
52
52
  import {
53
53
  getContext
54
- } from "./chunk-JF5D7ADP.js";
55
- import "./chunk-N74L4GAM.js";
54
+ } from "./chunk-LHNX67NO.js";
55
+ import "./chunk-DZCV2FEW.js";
56
56
  import {
57
57
  enableConfigs
58
- } from "./chunk-T6RTYOJB.js";
58
+ } from "./chunk-6JHEJQWY.js";
59
59
  import "./chunk-HIIHGKXP.js";
60
60
  import {
61
61
  initDebugLogger
62
- } from "./chunk-CZ5UJ3RL.js";
62
+ } from "./chunk-NMNFFCQ7.js";
63
63
  import {
64
64
  PRODUCT_COMMAND,
65
65
  getKodeBaseDir,
@@ -72,11 +72,11 @@ import {
72
72
  logError,
73
73
  setCwd,
74
74
  setOriginalCwd
75
- } from "./chunk-BAYPSZHG.js";
75
+ } from "./chunk-3A4ENL7W.js";
76
76
  import {
77
77
  MACRO,
78
78
  init_macros
79
- } from "./chunk-PTQTKIR2.js";
79
+ } from "./chunk-5M3MBCE7.js";
80
80
  import "./chunk-LWXT5RGE.js";
81
81
  import "./chunk-M3TKNAUR.js";
82
82
 
@@ -2,12 +2,12 @@ import { createRequire as __kodeCreateRequire } from "node:module";
2
2
  const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  getModelManager
5
- } from "./chunk-BTAVLAZT.js";
6
- import "./chunk-T6RTYOJB.js";
5
+ } from "./chunk-RRPXM25U.js";
6
+ import "./chunk-6JHEJQWY.js";
7
7
  import "./chunk-HIIHGKXP.js";
8
- import "./chunk-CZ5UJ3RL.js";
9
- import "./chunk-BAYPSZHG.js";
10
- import "./chunk-PTQTKIR2.js";
8
+ import "./chunk-NMNFFCQ7.js";
9
+ import "./chunk-3A4ENL7W.js";
10
+ import "./chunk-5M3MBCE7.js";
11
11
  import "./chunk-M3TKNAUR.js";
12
12
 
13
13
  // src/entrypoints/cli/agentsValidate.ts
@@ -344,8 +344,8 @@ async function validateAgentTemplates(args) {
344
344
  let knownToolNames;
345
345
  if (args.checkTools) {
346
346
  try {
347
- const { getTools } = await import("./tools-JL434UMR.js");
348
- const { getCurrentProjectConfig } = await import("./config-JEGZHGSM.js");
347
+ const { getTools } = await import("./tools-2J2DNXWI.js");
348
+ const { getCurrentProjectConfig } = await import("./config-5L37WETO.js");
349
349
  const allTools = await getTools(getCurrentProjectConfig().enableArchitectTool);
350
350
  knownToolNames = new Set(allTools.map((t) => t.name));
351
351
  } catch {
@@ -3,51 +3,51 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSystemPrompt,
5
5
  query
6
- } from "./chunk-ESHU3HUM.js";
7
- import "./chunk-5ONWVNJH.js";
8
- import "./chunk-RO73O3Q7.js";
9
- import "./chunk-6IH7H2LH.js";
10
- import "./chunk-6GABS3DM.js";
11
- import "./chunk-HNK7M2ZO.js";
12
- import "./chunk-U7ZJW3CQ.js";
6
+ } from "./chunk-6LOREEJY.js";
7
+ import "./chunk-X46SRZQF.js";
8
+ import "./chunk-CXOM4XMN.js";
9
+ import "./chunk-IZETEFF5.js";
10
+ import "./chunk-HXH5LYLI.js";
11
+ import "./chunk-UNIJZL2G.js";
12
+ import "./chunk-Z4QNIOFF.js";
13
13
  import "./chunk-Y5LQPJWK.js";
14
14
  import "./chunk-JVGG2YQR.js";
15
- import "./chunk-H3P32G2A.js";
15
+ import "./chunk-K7QXXI4A.js";
16
16
  import "./chunk-U7Z4MXY4.js";
17
- import "./chunk-HRXRIW33.js";
18
- import "./chunk-VMJRNHDU.js";
19
- import "./chunk-6KD43S3G.js";
20
- import "./chunk-SSS2WVMA.js";
21
- import "./chunk-KS52NNBY.js";
22
- import "./chunk-M75PDOOM.js";
23
- import "./chunk-2VUDETSP.js";
17
+ import "./chunk-X7ZDT7EX.js";
18
+ import "./chunk-3ONZAVOS.js";
19
+ import "./chunk-2CRLMZ76.js";
20
+ import "./chunk-E5BAXZSR.js";
21
+ import "./chunk-HIH5HC5H.js";
22
+ import "./chunk-Y5IRVMDD.js";
23
+ import "./chunk-HPSW7NNI.js";
24
24
  import "./chunk-MVN3DHQF.js";
25
- import "./chunk-QJMLHIGS.js";
25
+ import "./chunk-5TDBDWNG.js";
26
26
  import "./chunk-XEYEKVFT.js";
27
- import "./chunk-7I3UELIX.js";
27
+ import "./chunk-X36NKBPR.js";
28
28
  import "./chunk-WAY3DKFO.js";
29
29
  import "./chunk-2VQWLLDU.js";
30
30
  import {
31
31
  createUserMessage
32
- } from "./chunk-QUAOJLG6.js";
32
+ } from "./chunk-YUJ45IMI.js";
33
33
  import {
34
34
  getModelManager
35
- } from "./chunk-BTAVLAZT.js";
35
+ } from "./chunk-RRPXM25U.js";
36
36
  import {
37
37
  getContext
38
- } from "./chunk-JF5D7ADP.js";
39
- import "./chunk-N74L4GAM.js";
40
- import "./chunk-T6RTYOJB.js";
38
+ } from "./chunk-LHNX67NO.js";
39
+ import "./chunk-DZCV2FEW.js";
40
+ import "./chunk-6JHEJQWY.js";
41
41
  import "./chunk-HIIHGKXP.js";
42
- import "./chunk-CZ5UJ3RL.js";
42
+ import "./chunk-NMNFFCQ7.js";
43
43
  import {
44
44
  getMessagesPath,
45
45
  init_log,
46
46
  init_state,
47
47
  overwriteLog,
48
48
  setCwd
49
- } from "./chunk-BAYPSZHG.js";
50
- import "./chunk-PTQTKIR2.js";
49
+ } from "./chunk-3A4ENL7W.js";
50
+ import "./chunk-5M3MBCE7.js";
51
51
  import {
52
52
  getTotalCost
53
53
  } from "./chunk-LWXT5RGE.js";
@@ -5,9 +5,9 @@ import {
5
5
  checkAndNotifyUpdate,
6
6
  getLatestVersion,
7
7
  getUpdateCommandSuggestions
8
- } from "./chunk-3GLLMJKA.js";
9
- import "./chunk-BAYPSZHG.js";
10
- import "./chunk-PTQTKIR2.js";
8
+ } from "./chunk-TWE6H65Q.js";
9
+ import "./chunk-3A4ENL7W.js";
10
+ import "./chunk-5M3MBCE7.js";
11
11
  import "./chunk-M3TKNAUR.js";
12
12
  export {
13
13
  assertMinVersion,
@@ -3,7 +3,7 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
 
4
4
  // src/services/ai/llmLazy.ts
5
5
  async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal, options) {
6
- const { queryLLM: inner } = await import("./llm-IFU62ZT4.js");
6
+ const { queryLLM: inner } = await import("./llm-23Z6UDED.js");
7
7
  return inner(
8
8
  messages,
9
9
  systemPrompt,
@@ -14,15 +14,15 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
14
14
  );
15
15
  }
16
16
  async function queryQuick(args) {
17
- const { queryQuick: inner } = await import("./llm-IFU62ZT4.js");
17
+ const { queryQuick: inner } = await import("./llm-23Z6UDED.js");
18
18
  return inner(args);
19
19
  }
20
20
  async function verifyApiKey(apiKey, baseURL, provider) {
21
- const { verifyApiKey: inner } = await import("./llm-IFU62ZT4.js");
21
+ const { verifyApiKey: inner } = await import("./llm-23Z6UDED.js");
22
22
  return inner(apiKey, baseURL, provider);
23
23
  }
24
24
  async function fetchAnthropicModels(apiKey, baseURL) {
25
- const { fetchAnthropicModels: inner } = await import("./llm-IFU62ZT4.js");
25
+ const { fetchAnthropicModels: inner } = await import("./llm-23Z6UDED.js");
26
26
  return inner(apiKey, baseURL);
27
27
  }
28
28
 
@@ -3,7 +3,7 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  MACRO,
5
5
  init_macros
6
- } from "./chunk-PTQTKIR2.js";
6
+ } from "./chunk-5M3MBCE7.js";
7
7
  import {
8
8
  __esm
9
9
  } from "./chunk-M3TKNAUR.js";
@@ -6,12 +6,12 @@ import {
6
6
  } from "./chunk-XEYEKVFT.js";
7
7
  import {
8
8
  getGlobalConfig
9
- } from "./chunk-T6RTYOJB.js";
9
+ } from "./chunk-6JHEJQWY.js";
10
10
  import {
11
11
  debug,
12
12
  getCurrentRequest,
13
13
  logAPIError
14
- } from "./chunk-CZ5UJ3RL.js";
14
+ } from "./chunk-NMNFFCQ7.js";
15
15
 
16
16
  // src/services/ai/openai.ts
17
17
  var ProxyAgent = class {