@danya-ai/cli 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +28 -4
  2. package/dist/REPL-URLRZ4T4.js +42 -0
  3. package/dist/{acp-S5WNCLMD.js → acp-OF52BP4A.js} +26 -26
  4. package/dist/{agentsValidate-RQ2QDGNY.js → agentsValidate-WUX5I4FS.js} +7 -7
  5. package/dist/{ask-TX526UBD.js → ask-5P2J7UA5.js} +25 -25
  6. package/dist/{autoUpdater-63RAZ24N.js → autoUpdater-6ABURQZA.js} +3 -3
  7. package/dist/{chunk-66EZC7Y7.js → chunk-2VUDETSP.js} +1 -1
  8. package/dist/{chunk-7RZNLBEK.js → chunk-3GLLMJKA.js} +3 -3
  9. package/dist/{chunk-OV5HJXXQ.js → chunk-5ONWVNJH.js} +1 -1
  10. package/dist/{chunk-VMEOI6MH.js → chunk-6GABS3DM.js} +1 -1
  11. package/dist/{chunk-DHYBJN3V.js → chunk-6IH7H2LH.js} +3 -3
  12. package/dist/{chunk-YMIWYEZ7.js → chunk-6KD43S3G.js} +4 -4
  13. package/dist/{chunk-RHNEZOPO.js → chunk-7I3UELIX.js} +2 -2
  14. package/dist/{chunk-SQGAHZPM.js → chunk-BAYPSZHG.js} +1 -1
  15. package/dist/{chunk-4CLHMO4I.js → chunk-BTAVLAZT.js} +3 -3
  16. package/dist/{chunk-Y4BQ36T4.js → chunk-CZ5UJ3RL.js} +1 -1
  17. package/dist/chunk-DKOCP6VD.js.map +7 -0
  18. package/dist/{chunk-F6DEGMX6.js → chunk-ESHU3HUM.js} +32 -32
  19. package/dist/{chunk-F6DEGMX6.js.map → chunk-ESHU3HUM.js.map} +1 -1
  20. package/dist/{chunk-YIJWUNWF.js → chunk-H3P32G2A.js} +3 -3
  21. package/dist/{chunk-IQ6VZB2Y.js → chunk-HNK7M2ZO.js} +1 -1
  22. package/dist/{chunk-ELAE6Z4H.js → chunk-HRXRIW33.js} +2 -2
  23. package/dist/{chunk-ELZQD7ZR.js → chunk-JF5D7ADP.js} +3 -3
  24. package/dist/{chunk-4ZNNWJZU.js → chunk-JNAMM7A6.js} +11 -11
  25. package/dist/{chunk-O25PXGOC.js → chunk-KS52NNBY.js} +2 -2
  26. package/dist/{chunk-77IRSDFR.js → chunk-M75PDOOM.js} +3 -3
  27. package/dist/{chunk-GDF2AON2.js → chunk-N74L4GAM.js} +1 -1
  28. package/dist/{chunk-UNCTVIS7.js → chunk-PTQTKIR2.js} +6 -6
  29. package/dist/chunk-PTQTKIR2.js.map +7 -0
  30. package/dist/{chunk-J4D7AELD.js → chunk-QJMLHIGS.js} +2 -2
  31. package/dist/{chunk-H7BGBV4P.js → chunk-QUAOJLG6.js} +1 -1
  32. package/dist/{chunk-OBGVKM3N.js → chunk-RO73O3Q7.js} +4 -4
  33. package/dist/{chunk-MRFO7QO5.js → chunk-SSS2WVMA.js} +1 -1
  34. package/dist/{chunk-DLSLSLTR.js → chunk-T6RTYOJB.js} +3 -3
  35. package/dist/{chunk-CQCREBDO.js → chunk-U7ZJW3CQ.js} +2 -2
  36. package/dist/{chunk-LGEK2NV7.js → chunk-VMJRNHDU.js} +2 -2
  37. package/dist/{cli-PQNZWJX4.js → cli-FE6CUZI3.js} +78 -78
  38. package/dist/commands-6DP3QW2F.js +46 -0
  39. package/dist/{config-MLH7ZTFA.js → config-JEGZHGSM.js} +4 -4
  40. package/dist/{context-FZ6G4J63.js → context-LEXLLT4O.js} +5 -5
  41. package/dist/{customCommands-EB4MMZSS.js → customCommands-RLUKKBRZ.js} +4 -4
  42. package/dist/{env-VMEIP4EW.js → env-4PRTNVDJ.js} +2 -2
  43. package/dist/index.js +3 -3
  44. package/dist/{kodeAgentSessionLoad-KR4JSD6D.js → kodeAgentSessionLoad-LUKUH23S.js} +4 -4
  45. package/dist/{kodeAgentSessionResume-BCD6UV74.js → kodeAgentSessionResume-FDZ6H3PX.js} +4 -4
  46. package/dist/{kodeAgentStreamJsonSession-G4RBNZRN.js → kodeAgentStreamJsonSession-VE2UG5B2.js} +1 -1
  47. package/dist/{kodeHooks-EHM6GSIQ.js → kodeHooks-ZVNRQTZM.js} +4 -4
  48. package/dist/{llm-SJXCV7DA.js → llm-IFU62ZT4.js} +28 -28
  49. package/dist/{llm-SJXCV7DA.js.map → llm-IFU62ZT4.js.map} +2 -2
  50. package/dist/{llmLazy-2QYJVD6K.js → llmLazy-45EGHX2A.js} +1 -1
  51. package/dist/{loader-LJX77EFL.js → loader-TITFI6LS.js} +4 -4
  52. package/dist/{mcp-DOROSLPN.js → mcp-DE5HUK63.js} +7 -7
  53. package/dist/{mentionProcessor-5UZRHCGH.js → mentionProcessor-SAPYBDCK.js} +5 -5
  54. package/dist/{messages-N5KBI53P.js → messages-BARXRPB4.js} +1 -1
  55. package/dist/{model-HPLBR53R.js → model-PC6MMS2S.js} +5 -5
  56. package/dist/{openai-YP4OJYKF.js → openai-AVJO73FG.js} +5 -5
  57. package/dist/{outputStyles-NNALI5D7.js → outputStyles-VL7EKGIQ.js} +4 -4
  58. package/dist/{pluginRuntime-JYYI5BSQ.js → pluginRuntime-IG2H3W7C.js} +6 -6
  59. package/dist/{pluginValidation-JWUFPZUE.js → pluginValidation-TOBMLJ5A.js} +6 -6
  60. package/dist/prompts-JGBWXN2Z.js +50 -0
  61. package/dist/query-4DUM4QP7.js +50 -0
  62. package/dist/{ripgrep-GCKI4UTL.js → ripgrep-HID6XW3J.js} +3 -3
  63. package/dist/{skillMarketplace-PCTUUX46.js → skillMarketplace-YBS7NR7Q.js} +3 -3
  64. package/dist/{state-XJICGOUA.js → state-5OBXGJX6.js} +2 -2
  65. package/dist/{theme-DP7O4SGH.js → theme-U2POECGP.js} +5 -5
  66. package/dist/{toolPermissionSettings-PT65MQIQ.js → toolPermissionSettings-AYX5MEOW.js} +6 -6
  67. package/dist/tools-JL434UMR.js +47 -0
  68. package/dist/{userInput-XDRYT5TI.js → userInput-RXNBLFAH.js} +27 -27
  69. package/package.json +4 -4
  70. package/dist/REPL-EYUOXCEC.js +0 -42
  71. package/dist/chunk-HJCCXED7.js.map +0 -7
  72. package/dist/chunk-UNCTVIS7.js.map +0 -7
  73. package/dist/commands-HOBCZ3VQ.js +0 -46
  74. package/dist/prompts-B2SS7CWI.js +0 -50
  75. package/dist/query-HIK457UU.js +0 -50
  76. package/dist/tools-BHW37PCF.js +0 -47
  77. /package/dist/{REPL-EYUOXCEC.js.map → REPL-URLRZ4T4.js.map} +0 -0
  78. /package/dist/{acp-S5WNCLMD.js.map → acp-OF52BP4A.js.map} +0 -0
  79. /package/dist/{agentsValidate-RQ2QDGNY.js.map → agentsValidate-WUX5I4FS.js.map} +0 -0
  80. /package/dist/{ask-TX526UBD.js.map → ask-5P2J7UA5.js.map} +0 -0
  81. /package/dist/{autoUpdater-63RAZ24N.js.map → autoUpdater-6ABURQZA.js.map} +0 -0
  82. /package/dist/{chunk-66EZC7Y7.js.map → chunk-2VUDETSP.js.map} +0 -0
  83. /package/dist/{chunk-7RZNLBEK.js.map → chunk-3GLLMJKA.js.map} +0 -0
  84. /package/dist/{chunk-OV5HJXXQ.js.map → chunk-5ONWVNJH.js.map} +0 -0
  85. /package/dist/{chunk-VMEOI6MH.js.map → chunk-6GABS3DM.js.map} +0 -0
  86. /package/dist/{chunk-DHYBJN3V.js.map → chunk-6IH7H2LH.js.map} +0 -0
  87. /package/dist/{chunk-YMIWYEZ7.js.map → chunk-6KD43S3G.js.map} +0 -0
  88. /package/dist/{chunk-RHNEZOPO.js.map → chunk-7I3UELIX.js.map} +0 -0
  89. /package/dist/{chunk-SQGAHZPM.js.map → chunk-BAYPSZHG.js.map} +0 -0
  90. /package/dist/{chunk-4CLHMO4I.js.map → chunk-BTAVLAZT.js.map} +0 -0
  91. /package/dist/{chunk-Y4BQ36T4.js.map → chunk-CZ5UJ3RL.js.map} +0 -0
  92. /package/dist/{chunk-HJCCXED7.js → chunk-DKOCP6VD.js} +0 -0
  93. /package/dist/{chunk-YIJWUNWF.js.map → chunk-H3P32G2A.js.map} +0 -0
  94. /package/dist/{chunk-IQ6VZB2Y.js.map → chunk-HNK7M2ZO.js.map} +0 -0
  95. /package/dist/{chunk-ELAE6Z4H.js.map → chunk-HRXRIW33.js.map} +0 -0
  96. /package/dist/{chunk-ELZQD7ZR.js.map → chunk-JF5D7ADP.js.map} +0 -0
  97. /package/dist/{chunk-4ZNNWJZU.js.map → chunk-JNAMM7A6.js.map} +0 -0
  98. /package/dist/{chunk-O25PXGOC.js.map → chunk-KS52NNBY.js.map} +0 -0
  99. /package/dist/{chunk-77IRSDFR.js.map → chunk-M75PDOOM.js.map} +0 -0
  100. /package/dist/{chunk-GDF2AON2.js.map → chunk-N74L4GAM.js.map} +0 -0
  101. /package/dist/{chunk-J4D7AELD.js.map → chunk-QJMLHIGS.js.map} +0 -0
  102. /package/dist/{chunk-H7BGBV4P.js.map → chunk-QUAOJLG6.js.map} +0 -0
  103. /package/dist/{chunk-OBGVKM3N.js.map → chunk-RO73O3Q7.js.map} +0 -0
  104. /package/dist/{chunk-MRFO7QO5.js.map → chunk-SSS2WVMA.js.map} +0 -0
  105. /package/dist/{chunk-DLSLSLTR.js.map → chunk-T6RTYOJB.js.map} +0 -0
  106. /package/dist/{chunk-CQCREBDO.js.map → chunk-U7ZJW3CQ.js.map} +0 -0
  107. /package/dist/{chunk-LGEK2NV7.js.map → chunk-VMJRNHDU.js.map} +0 -0
  108. /package/dist/{cli-PQNZWJX4.js.map → cli-FE6CUZI3.js.map} +0 -0
  109. /package/dist/{commands-HOBCZ3VQ.js.map → commands-6DP3QW2F.js.map} +0 -0
  110. /package/dist/{config-MLH7ZTFA.js.map → config-JEGZHGSM.js.map} +0 -0
  111. /package/dist/{context-FZ6G4J63.js.map → context-LEXLLT4O.js.map} +0 -0
  112. /package/dist/{customCommands-EB4MMZSS.js.map → customCommands-RLUKKBRZ.js.map} +0 -0
  113. /package/dist/{env-VMEIP4EW.js.map → env-4PRTNVDJ.js.map} +0 -0
  114. /package/dist/{kodeAgentSessionLoad-KR4JSD6D.js.map → kodeAgentSessionLoad-LUKUH23S.js.map} +0 -0
  115. /package/dist/{kodeAgentSessionResume-BCD6UV74.js.map → kodeAgentSessionResume-FDZ6H3PX.js.map} +0 -0
  116. /package/dist/{kodeAgentStreamJsonSession-G4RBNZRN.js.map → kodeAgentStreamJsonSession-VE2UG5B2.js.map} +0 -0
  117. /package/dist/{kodeHooks-EHM6GSIQ.js.map → kodeHooks-ZVNRQTZM.js.map} +0 -0
  118. /package/dist/{llmLazy-2QYJVD6K.js.map → llmLazy-45EGHX2A.js.map} +0 -0
  119. /package/dist/{loader-LJX77EFL.js.map → loader-TITFI6LS.js.map} +0 -0
  120. /package/dist/{mcp-DOROSLPN.js.map → mcp-DE5HUK63.js.map} +0 -0
  121. /package/dist/{mentionProcessor-5UZRHCGH.js.map → mentionProcessor-SAPYBDCK.js.map} +0 -0
  122. /package/dist/{messages-N5KBI53P.js.map → messages-BARXRPB4.js.map} +0 -0
  123. /package/dist/{model-HPLBR53R.js.map → model-PC6MMS2S.js.map} +0 -0
  124. /package/dist/{openai-YP4OJYKF.js.map → openai-AVJO73FG.js.map} +0 -0
  125. /package/dist/{outputStyles-NNALI5D7.js.map → outputStyles-VL7EKGIQ.js.map} +0 -0
  126. /package/dist/{pluginRuntime-JYYI5BSQ.js.map → pluginRuntime-IG2H3W7C.js.map} +0 -0
  127. /package/dist/{pluginValidation-JWUFPZUE.js.map → pluginValidation-TOBMLJ5A.js.map} +0 -0
  128. /package/dist/{prompts-B2SS7CWI.js.map → prompts-JGBWXN2Z.js.map} +0 -0
  129. /package/dist/{query-HIK457UU.js.map → query-4DUM4QP7.js.map} +0 -0
  130. /package/dist/{ripgrep-GCKI4UTL.js.map → ripgrep-HID6XW3J.js.map} +0 -0
  131. /package/dist/{skillMarketplace-PCTUUX46.js.map → skillMarketplace-YBS7NR7Q.js.map} +0 -0
  132. /package/dist/{state-XJICGOUA.js.map → state-5OBXGJX6.js.map} +0 -0
  133. /package/dist/{theme-DP7O4SGH.js.map → theme-U2POECGP.js.map} +0 -0
  134. /package/dist/{toolPermissionSettings-PT65MQIQ.js.map → toolPermissionSettings-AYX5MEOW.js.map} +0 -0
  135. /package/dist/{tools-BHW37PCF.js.map → tools-JL434UMR.js.map} +0 -0
  136. /package/dist/{userInput-XDRYT5TI.js.map → userInput-RXNBLFAH.js.map} +0 -0
package/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
  npm install -g @danya-ai/cli
15
15
 
16
16
  # 方式二:从源码安装
17
- git clone https://github.com/zhudanya/danya.git
17
+ git clone https://github.com/Zhudanya/danya.git
18
18
  cd danya
19
19
  bun install && bun run build
20
20
  npm install -g .
@@ -32,7 +32,7 @@ danya --version
32
32
  cd <你的游戏项目>
33
33
  danya init
34
34
 
35
- # 启动交互模式
35
+ # 启动交互模式(首次启动会引导配置 AI 模型)
36
36
  danya
37
37
 
38
38
  # 常用命令
@@ -42,6 +42,30 @@ danya
42
42
  /parallel-execute prepare "大功能" # 波次并行执行
43
43
  ```
44
44
 
45
+ ### 配置 / 切换 AI 模型
46
+
47
+ 在 danya 对话中输入 `/model`:
48
+
49
+ 1. 选 **Manage Model List** → 添加新模型
50
+ 2. 选择 Provider:
51
+ - **Custom Messages API** — Claude 系列(Anthropic 官方接口)
52
+ - **Custom OpenAI-Compatible API** — GPT / DeepSeek / 千问 / GLM 等
53
+ - **Ollama** — 本地模型
54
+ 3. 粘贴 API Key → 后续步骤一路回车(使用默认值即可)
55
+ 4. 回到 `/model` 页面,选择要用的模型
56
+
57
+ 常用模型配置参考:
58
+
59
+ | 模型 | Provider | Base URL | Model ID | Max Tokens | Context |
60
+ |------|----------|----------|----------|------------|---------|
61
+ | Claude Opus 4.6 | Messages API | `https://api.anthropic.com` | `claude-opus-4-6` | 16K | 200K |
62
+ | Claude Sonnet 4.6 | Messages API | `https://api.anthropic.com` | `claude-sonnet-4-6` | 16K | 200K |
63
+ | DeepSeek V3 | Messages API | `https://api.deepseek.com/anthropic` | `deepseek-chat` | 8K | 128K |
64
+ | GPT-4o | OpenAI-Compatible | `https://api.openai.com/v1` | `gpt-4o` | 16K | 128K |
65
+ | 千问 Max | OpenAI-Compatible | `https://dashscope.aliyuncs.com/compatible-mode/v1` | `qwen-max` | 8K | 128K |
66
+
67
+ 模型配置保存在 `~/.danya/config.json`,无需手动编辑。
68
+
45
69
  快捷键:
46
70
  - `Ctrl+G` — 打开外部编辑器(优先 `$EDITOR`,回退 code/nano/vim),关闭后内容自动回填
47
71
  - `Shift+Enter` — 输入框内换行但不发送,普通 `Enter` 提交
@@ -331,6 +355,6 @@ Danya 是一个**学习项目**,用于研究 AI Agent 在游戏开发中的工
331
355
 
332
356
  **领域专用 > 通用万能。**
333
357
 
334
- ## License
358
+ ## 许可证
335
359
 
336
- Apache-2.0
360
+ Apache 2.0 许可证 - 详见 [LICENSE](LICENSE)。
@@ -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-ESHU3HUM.js";
6
+ import "./chunk-5ONWVNJH.js";
7
+ import "./chunk-RO73O3Q7.js";
8
+ import "./chunk-6IH7H2LH.js";
9
+ import "./chunk-6GABS3DM.js";
10
+ import "./chunk-HNK7M2ZO.js";
11
+ import "./chunk-U7ZJW3CQ.js";
12
+ import "./chunk-Y5LQPJWK.js";
13
+ import "./chunk-JVGG2YQR.js";
14
+ import "./chunk-H3P32G2A.js";
15
+ import "./chunk-U7Z4MXY4.js";
16
+ import "./chunk-HRXRIW33.js";
17
+ import "./chunk-VMJRNHDU.js";
18
+ import "./chunk-6KD43S3G.js";
19
+ import "./chunk-SSS2WVMA.js";
20
+ import "./chunk-KS52NNBY.js";
21
+ import "./chunk-M75PDOOM.js";
22
+ import "./chunk-2VUDETSP.js";
23
+ import "./chunk-MVN3DHQF.js";
24
+ import "./chunk-QJMLHIGS.js";
25
+ import "./chunk-XEYEKVFT.js";
26
+ import "./chunk-7I3UELIX.js";
27
+ import "./chunk-WAY3DKFO.js";
28
+ import "./chunk-2VQWLLDU.js";
29
+ import "./chunk-QUAOJLG6.js";
30
+ import "./chunk-BTAVLAZT.js";
31
+ import "./chunk-JF5D7ADP.js";
32
+ import "./chunk-N74L4GAM.js";
33
+ import "./chunk-T6RTYOJB.js";
34
+ import "./chunk-HIIHGKXP.js";
35
+ import "./chunk-CZ5UJ3RL.js";
36
+ import "./chunk-BAYPSZHG.js";
37
+ import "./chunk-PTQTKIR2.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-4ZNNWJZU.js";
9
+ } from "./chunk-JNAMM7A6.js";
10
10
  import {
11
11
  getCommands,
12
12
  getSystemPrompt,
13
13
  grantReadPermissionForOriginalDir,
14
14
  hasPermissionsToUseTool,
15
15
  query
16
- } from "./chunk-F6DEGMX6.js";
17
- import "./chunk-OV5HJXXQ.js";
16
+ } from "./chunk-ESHU3HUM.js";
17
+ import "./chunk-5ONWVNJH.js";
18
18
  import {
19
19
  getClients
20
- } from "./chunk-OBGVKM3N.js";
21
- import "./chunk-DHYBJN3V.js";
22
- import "./chunk-VMEOI6MH.js";
23
- import "./chunk-IQ6VZB2Y.js";
24
- import "./chunk-CQCREBDO.js";
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";
25
25
  import "./chunk-Y5LQPJWK.js";
26
26
  import "./chunk-JVGG2YQR.js";
27
- import "./chunk-YIJWUNWF.js";
27
+ import "./chunk-H3P32G2A.js";
28
28
  import "./chunk-U7Z4MXY4.js";
29
- import "./chunk-ELAE6Z4H.js";
30
- import "./chunk-LGEK2NV7.js";
31
- import "./chunk-YMIWYEZ7.js";
32
- import "./chunk-MRFO7QO5.js";
33
- import "./chunk-O25PXGOC.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";
34
34
  import {
35
35
  loadToolPermissionContextFromDisk,
36
36
  persistToolPermissionUpdateToDisk
37
- } from "./chunk-77IRSDFR.js";
38
- import "./chunk-66EZC7Y7.js";
37
+ } from "./chunk-M75PDOOM.js";
38
+ import "./chunk-2VUDETSP.js";
39
39
  import {
40
40
  applyToolPermissionContextUpdates
41
41
  } from "./chunk-MVN3DHQF.js";
42
- import "./chunk-J4D7AELD.js";
42
+ import "./chunk-QJMLHIGS.js";
43
43
  import "./chunk-XEYEKVFT.js";
44
- import "./chunk-RHNEZOPO.js";
44
+ import "./chunk-7I3UELIX.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-H7BGBV4P.js";
51
- import "./chunk-4CLHMO4I.js";
50
+ } from "./chunk-QUAOJLG6.js";
51
+ import "./chunk-BTAVLAZT.js";
52
52
  import {
53
53
  getContext
54
- } from "./chunk-ELZQD7ZR.js";
55
- import "./chunk-GDF2AON2.js";
54
+ } from "./chunk-JF5D7ADP.js";
55
+ import "./chunk-N74L4GAM.js";
56
56
  import {
57
57
  enableConfigs
58
- } from "./chunk-DLSLSLTR.js";
58
+ } from "./chunk-T6RTYOJB.js";
59
59
  import "./chunk-HIIHGKXP.js";
60
60
  import {
61
61
  initDebugLogger
62
- } from "./chunk-Y4BQ36T4.js";
62
+ } from "./chunk-CZ5UJ3RL.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-SQGAHZPM.js";
75
+ } from "./chunk-BAYPSZHG.js";
76
76
  import {
77
77
  MACRO,
78
78
  init_macros
79
- } from "./chunk-UNCTVIS7.js";
79
+ } from "./chunk-PTQTKIR2.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-4CLHMO4I.js";
6
- import "./chunk-DLSLSLTR.js";
5
+ } from "./chunk-BTAVLAZT.js";
6
+ import "./chunk-T6RTYOJB.js";
7
7
  import "./chunk-HIIHGKXP.js";
8
- import "./chunk-Y4BQ36T4.js";
9
- import "./chunk-SQGAHZPM.js";
10
- import "./chunk-UNCTVIS7.js";
8
+ import "./chunk-CZ5UJ3RL.js";
9
+ import "./chunk-BAYPSZHG.js";
10
+ import "./chunk-PTQTKIR2.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-BHW37PCF.js");
348
- const { getCurrentProjectConfig } = await import("./config-MLH7ZTFA.js");
347
+ const { getTools } = await import("./tools-JL434UMR.js");
348
+ const { getCurrentProjectConfig } = await import("./config-JEGZHGSM.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-F6DEGMX6.js";
7
- import "./chunk-OV5HJXXQ.js";
8
- import "./chunk-OBGVKM3N.js";
9
- import "./chunk-DHYBJN3V.js";
10
- import "./chunk-VMEOI6MH.js";
11
- import "./chunk-IQ6VZB2Y.js";
12
- import "./chunk-CQCREBDO.js";
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";
13
13
  import "./chunk-Y5LQPJWK.js";
14
14
  import "./chunk-JVGG2YQR.js";
15
- import "./chunk-YIJWUNWF.js";
15
+ import "./chunk-H3P32G2A.js";
16
16
  import "./chunk-U7Z4MXY4.js";
17
- import "./chunk-ELAE6Z4H.js";
18
- import "./chunk-LGEK2NV7.js";
19
- import "./chunk-YMIWYEZ7.js";
20
- import "./chunk-MRFO7QO5.js";
21
- import "./chunk-O25PXGOC.js";
22
- import "./chunk-77IRSDFR.js";
23
- import "./chunk-66EZC7Y7.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";
24
24
  import "./chunk-MVN3DHQF.js";
25
- import "./chunk-J4D7AELD.js";
25
+ import "./chunk-QJMLHIGS.js";
26
26
  import "./chunk-XEYEKVFT.js";
27
- import "./chunk-RHNEZOPO.js";
27
+ import "./chunk-7I3UELIX.js";
28
28
  import "./chunk-WAY3DKFO.js";
29
29
  import "./chunk-2VQWLLDU.js";
30
30
  import {
31
31
  createUserMessage
32
- } from "./chunk-H7BGBV4P.js";
32
+ } from "./chunk-QUAOJLG6.js";
33
33
  import {
34
34
  getModelManager
35
- } from "./chunk-4CLHMO4I.js";
35
+ } from "./chunk-BTAVLAZT.js";
36
36
  import {
37
37
  getContext
38
- } from "./chunk-ELZQD7ZR.js";
39
- import "./chunk-GDF2AON2.js";
40
- import "./chunk-DLSLSLTR.js";
38
+ } from "./chunk-JF5D7ADP.js";
39
+ import "./chunk-N74L4GAM.js";
40
+ import "./chunk-T6RTYOJB.js";
41
41
  import "./chunk-HIIHGKXP.js";
42
- import "./chunk-Y4BQ36T4.js";
42
+ import "./chunk-CZ5UJ3RL.js";
43
43
  import {
44
44
  getMessagesPath,
45
45
  init_log,
46
46
  init_state,
47
47
  overwriteLog,
48
48
  setCwd
49
- } from "./chunk-SQGAHZPM.js";
50
- import "./chunk-UNCTVIS7.js";
49
+ } from "./chunk-BAYPSZHG.js";
50
+ import "./chunk-PTQTKIR2.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-7RZNLBEK.js";
9
- import "./chunk-SQGAHZPM.js";
10
- import "./chunk-UNCTVIS7.js";
8
+ } from "./chunk-3GLLMJKA.js";
9
+ import "./chunk-BAYPSZHG.js";
10
+ import "./chunk-PTQTKIR2.js";
11
11
  import "./chunk-M3TKNAUR.js";
12
12
  export {
13
13
  assertMinVersion,
@@ -5,7 +5,7 @@ import {
5
5
  init_log,
6
6
  init_state,
7
7
  logError
8
- } from "./chunk-SQGAHZPM.js";
8
+ } from "./chunk-BAYPSZHG.js";
9
9
 
10
10
  // src/utils/config/settingsFiles.ts
11
11
  init_state();
@@ -7,11 +7,11 @@ import {
7
7
  init_log,
8
8
  init_product,
9
9
  logError
10
- } from "./chunk-SQGAHZPM.js";
10
+ } from "./chunk-BAYPSZHG.js";
11
11
  import {
12
12
  MACRO,
13
13
  init_macros
14
- } from "./chunk-UNCTVIS7.js";
14
+ } from "./chunk-PTQTKIR2.js";
15
15
 
16
16
  // src/utils/session/autoUpdater.ts
17
17
  init_execFileNoThrow();
@@ -90,7 +90,7 @@ async function checkAndNotifyUpdate() {
90
90
  const [
91
91
  { isAutoUpdaterDisabled, getGlobalConfig, saveGlobalConfig },
92
92
  { env }
93
- ] = await Promise.all([import("./config-MLH7ZTFA.js"), import("./env-VMEIP4EW.js")]);
93
+ ] = await Promise.all([import("./config-JEGZHGSM.js"), import("./env-4PRTNVDJ.js")]);
94
94
  if (await isAutoUpdaterDisabled()) return;
95
95
  if (await env.getIsDocker()) return;
96
96
  if (!await env.hasInternetAccess()) return;
@@ -3,7 +3,7 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSessionProjectDir,
5
5
  getSessionProjectsDir
6
- } from "./chunk-CQCREBDO.js";
6
+ } from "./chunk-U7ZJW3CQ.js";
7
7
  import {
8
8
  isUuid
9
9
  } from "./chunk-Y5LQPJWK.js";
@@ -7,7 +7,7 @@ import {
7
7
  init_env,
8
8
  init_product,
9
9
  init_state
10
- } from "./chunk-SQGAHZPM.js";
10
+ } from "./chunk-BAYPSZHG.js";
11
11
 
12
12
  // src/services/plugins/skillMarketplace.ts
13
13
  init_product();
@@ -2,14 +2,14 @@ import { createRequire as __kodeCreateRequire } from "node:module";
2
2
  const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  MarketplaceManifestSchema
5
- } from "./chunk-VMEOI6MH.js";
5
+ } from "./chunk-6GABS3DM.js";
6
6
  import {
7
7
  parseFrontmatter
8
- } from "./chunk-O25PXGOC.js";
8
+ } from "./chunk-KS52NNBY.js";
9
9
  import {
10
10
  getCwd,
11
11
  init_state
12
- } from "./chunk-SQGAHZPM.js";
12
+ } from "./chunk-BAYPSZHG.js";
13
13
 
14
14
  // src/services/plugins/pluginValidation.ts
15
15
  init_state();
@@ -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-SJXCV7DA.js");
6
+ const { queryLLM: inner } = await import("./llm-IFU62ZT4.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-SJXCV7DA.js");
17
+ const { queryQuick: inner } = await import("./llm-IFU62ZT4.js");
18
18
  return inner(args);
19
19
  }
20
20
  async function verifyApiKey(apiKey, baseURL, provider) {
21
- const { verifyApiKey: inner } = await import("./llm-SJXCV7DA.js");
21
+ const { verifyApiKey: inner } = await import("./llm-IFU62ZT4.js");
22
22
  return inner(apiKey, baseURL, provider);
23
23
  }
24
24
  async function fetchAnthropicModels(apiKey, baseURL) {
25
- const { fetchAnthropicModels: inner } = await import("./llm-SJXCV7DA.js");
25
+ const { fetchAnthropicModels: inner } = await import("./llm-IFU62ZT4.js");
26
26
  return inner(apiKey, baseURL);
27
27
  }
28
28
 
@@ -8,13 +8,13 @@ import {
8
8
  } from "./chunk-2VQWLLDU.js";
9
9
  import {
10
10
  debug
11
- } from "./chunk-Y4BQ36T4.js";
11
+ } from "./chunk-CZ5UJ3RL.js";
12
12
  import {
13
13
  getCwd,
14
14
  init_log,
15
15
  init_state,
16
16
  logError
17
- } from "./chunk-SQGAHZPM.js";
17
+ } from "./chunk-BAYPSZHG.js";
18
18
 
19
19
  // src/utils/agent/loader.ts
20
20
  init_state();
@@ -3,7 +3,7 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  MACRO,
5
5
  init_macros
6
- } from "./chunk-UNCTVIS7.js";
6
+ } from "./chunk-PTQTKIR2.js";
7
7
  import {
8
8
  __esm
9
9
  } from "./chunk-M3TKNAUR.js";
@@ -3,14 +3,14 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  getGlobalConfig,
5
5
  saveGlobalConfig
6
- } from "./chunk-DLSLSLTR.js";
6
+ } from "./chunk-T6RTYOJB.js";
7
7
  import {
8
8
  debug
9
- } from "./chunk-Y4BQ36T4.js";
9
+ } from "./chunk-CZ5UJ3RL.js";
10
10
  import {
11
11
  init_log,
12
12
  logError
13
- } from "./chunk-SQGAHZPM.js";
13
+ } from "./chunk-BAYPSZHG.js";
14
14
 
15
15
  // src/utils/model/index.ts
16
16
  init_log();
@@ -3,7 +3,7 @@ const require = __kodeCreateRequire(import.meta.url);
3
3
  import {
4
4
  SESSION_ID,
5
5
  init_log
6
- } from "./chunk-SQGAHZPM.js";
6
+ } from "./chunk-BAYPSZHG.js";
7
7
 
8
8
  // src/utils/log/debugLogger.ts
9
9
  import { existsSync, mkdirSync, appendFileSync } from "fs";
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/tools/tool.ts"],
4
+ "sourcesContent": ["import { z } from 'zod'\nimport type * as React from 'react'\nimport type { PermissionMode } from '@kode-types/permissionMode'\nimport type { ToolPermissionContext } from '@kode-types/toolPermissionContext'\nimport type {\n PermissionResult,\n PermissionDecision,\n} from '../../types/permissions'\n\nexport type SetToolJSXFn = (\n jsx: {\n jsx: React.ReactNode | null\n shouldHidePromptInput: boolean\n } | null,\n) => void\n\nexport interface ToolUseContext {\n messageId: string | undefined\n toolUseId?: string\n agentId?: string\n safeMode?: boolean\n abortController: AbortController\n readFileTimestamps: { [filePath: string]: number }\n options?: {\n commands?: any[]\n tools?: any[]\n verbose?: boolean\n slowAndCapableModel?: string\n safeMode?: boolean\n permissionMode?: PermissionMode\n toolPermissionContext?: ToolPermissionContext\n lastUserPrompt?: string\n forkNumber?: number\n messageLogName?: string\n maxThinkingTokens?: any\n model?: string\n commandAllowedTools?: string[]\n isKodingRequest?: boolean\n kodingContext?: string\n isCustomCommand?: boolean\n mcpClients?: any[]\n disableSlashCommands?: boolean\n persistSession?: boolean\n shouldAvoidPermissionPrompts?: boolean\n }\n responseState?: {\n previousResponseId?: string\n conversationId?: string\n }\n}\n\nexport interface ExtendedToolUseContext extends ToolUseContext {\n setToolJSX: SetToolJSXFn\n}\n\nexport interface ValidationResult {\n result: boolean\n message?: string\n errorCode?: number\n meta?: any\n}\n\n// ============================================================================\n// Tool Progress\n// ============================================================================\n\nexport type ToolProgressData = Record<string, unknown>\n\nexport type ToolProgress<P extends ToolProgressData = ToolProgressData> = {\n toolUseID: string\n data: P\n}\n\nexport type ToolCallProgress<P extends ToolProgressData = ToolProgressData> = (\n progress: ToolProgress<P>,\n) => void\n\n// ============================================================================\n// Tool Result\n// ============================================================================\n\nexport type ToolResult<T = unknown> = {\n data: T\n newMessages?: unknown[]\n contextModifier?: {\n modifyContext: (ctx: ToolUseContext) => ToolUseContext\n }\n}\n\n// ============================================================================\n// Tool Interface\n// ============================================================================\n\nexport interface Tool<\n TInput extends z.ZodTypeAny = z.ZodTypeAny,\n TOutput = any,\n> {\n // \u2500\u2500 Identity \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n name: string\n description?: string | ((input?: z.infer<TInput>) => Promise<string>)\n inputSchema: TInput\n inputJSONSchema?: Record<string, unknown>\n prompt: (options?: { safeMode?: boolean }) => Promise<string>\n userFacingName?: (input?: z.infer<TInput>) => string\n cachedDescription?: string\n\n /** 3-10 word hint for tool discovery */\n searchHint?: string\n\n // \u2500\u2500 State Queries \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n isEnabled: () => Promise<boolean>\n isReadOnly: (input?: z.infer<TInput>) => boolean\n isConcurrencySafe: (input?: z.infer<TInput>) => boolean\n needsPermissions: (input?: z.infer<TInput>) => boolean\n requiresUserInteraction?: (input?: z.infer<TInput>) => boolean\n\n /**\n * Whether the tool performs an irreversible action (delete, send, overwrite).\n * Used for risk assessment in gate chain and destructive command detection.\n */\n isDestructive?: (input?: z.infer<TInput>) => boolean\n\n /**\n * Extract the primary file path from tool input (for file-based tools).\n * Used by permission system for path-based rule matching.\n */\n getPath?: (input: z.infer<TInput>) => string\n\n /**\n * Maximum result size in characters before persisting to disk.\n * Large results are saved to file and the model gets a preview + path.\n */\n maxResultSizeChars?: number\n\n // \u2500\u2500 Validation & Permissions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n validateInput?: (\n input: z.infer<TInput>,\n context?: ToolUseContext,\n ) => Promise<ValidationResult>\n\n /**\n * Rich permission checking that returns allow/ask/deny with reasons.\n * Provides richer feedback than needsPermissions().\n * If both checkPermissions and needsPermissions exist, checkPermissions takes precedence.\n */\n checkPermissions?: (\n input: z.infer<TInput>,\n context: ToolUseContext,\n ) => Promise<PermissionResult>\n\n /**\n * Prepare a matcher function for checking this tool's input against permission rules.\n * Returns a function that takes a rule pattern and returns whether it matches.\n */\n preparePermissionMatcher?: (\n input: z.infer<TInput>,\n ) => Promise<(rulePattern: string) => boolean>\n\n // \u2500\u2500 Rendering \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n renderResultForAssistant: (output: TOutput) => string | any[]\n renderToolUseMessage: (\n input: z.infer<TInput>,\n options: { verbose: boolean },\n ) => string | React.ReactElement | null\n renderToolUseRejectedMessage?: (...args: any[]) => React.ReactElement\n renderToolResultMessage?: (\n output: TOutput,\n options: { verbose: boolean },\n ) => React.ReactNode\n\n /**\n * Description for the status spinner during tool execution.\n * Returns something like \"Reading src/foo.ts\" or \"Searching codebase\".\n */\n getActivityDescription?: (input: z.infer<TInput>) => string | null\n\n // \u2500\u2500 Execution \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Async generator-based execution (Kode's pattern).\n * Yields progress events and a final result.\n */\n call: (\n input: z.infer<TInput>,\n context: ToolUseContext,\n ) => AsyncGenerator<\n | {\n type: 'result'\n data: TOutput\n resultForAssistant?: string | any[]\n newMessages?: unknown[]\n contextModifier?: {\n modifyContext: (ctx: ToolUseContext) => ToolUseContext\n }\n }\n | {\n type: 'progress'\n content: any\n normalizedMessages?: any[]\n tools?: any[]\n },\n void,\n unknown\n >\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\nexport function getToolDescription(tool: Tool): string {\n if (tool.cachedDescription) {\n return tool.cachedDescription\n }\n\n if (typeof tool.description === 'string') {\n return tool.description\n }\n\n return `Tool: ${tool.name}`\n}\n\n/**\n * Find a tool by name from a tool array.\n */\nexport function findToolByName(tools: Tool[], name: string): Tool | undefined {\n return tools.find((t) => t.name === name)\n}\n\n/**\n * Check if a tool is safe to run in parallel based on its input.\n * Read-only tools are always safe. Non-read-only tools check isConcurrencySafe.\n */\nexport function isToolParallelSafe(tool: Tool, input?: unknown): boolean {\n if (tool.isReadOnly(input)) return true\n return tool.isConcurrencySafe(input)\n}\n\n/**\n * Partition tool calls into parallel-safe and serial batches.\n */\nexport function partitionToolCalls<T extends { tool: Tool; input: unknown }>(\n calls: T[],\n): { parallel: T[]; serial: T[] } {\n const parallel: T[] = []\n const serial: T[] = []\n\n for (const call of calls) {\n if (isToolParallelSafe(call.tool, call.input)) {\n parallel.push(call)\n } else {\n serial.push(call)\n }\n }\n\n return { parallel, serial }\n}\n"],
5
+ "mappings": ";;;;AAiNO,SAAS,mBAAmB,MAAoB;AACrD,MAAI,KAAK,mBAAmB;AAC1B,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,OAAO,KAAK,gBAAgB,UAAU;AACxC,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,SAAS,KAAK,IAAI;AAC3B;",
6
+ "names": []
7
+ }