sema-core 1.0.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 (411) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +150 -0
  3. package/dist/constants/config.d.ts +20 -0
  4. package/dist/constants/config.d.ts.map +1 -0
  5. package/dist/constants/config.js +31 -0
  6. package/dist/constants/config.js.map +1 -0
  7. package/dist/constants/message.d.ts +10 -0
  8. package/dist/constants/message.d.ts.map +1 -0
  9. package/dist/constants/message.js +25 -0
  10. package/dist/constants/message.js.map +1 -0
  11. package/dist/constants/product.d.ts +5 -0
  12. package/dist/constants/product.d.ts.map +1 -0
  13. package/dist/constants/product.js +8 -0
  14. package/dist/constants/product.js.map +1 -0
  15. package/dist/core/Conversation.d.ts +16 -0
  16. package/dist/core/Conversation.d.ts.map +1 -0
  17. package/dist/core/Conversation.js +226 -0
  18. package/dist/core/Conversation.js.map +1 -0
  19. package/dist/core/RunTools.d.ts +11 -0
  20. package/dist/core/RunTools.d.ts.map +1 -0
  21. package/dist/core/RunTools.js +244 -0
  22. package/dist/core/RunTools.js.map +1 -0
  23. package/dist/core/SemaCore.d.ts +49 -0
  24. package/dist/core/SemaCore.d.ts.map +1 -0
  25. package/dist/core/SemaCore.js +94 -0
  26. package/dist/core/SemaCore.js.map +1 -0
  27. package/dist/core/SemaEngine.d.ts +54 -0
  28. package/dist/core/SemaEngine.d.ts.map +1 -0
  29. package/dist/core/SemaEngine.js +335 -0
  30. package/dist/core/SemaEngine.js.map +1 -0
  31. package/dist/events/EventSystem.d.ts +42 -0
  32. package/dist/events/EventSystem.d.ts.map +1 -0
  33. package/dist/events/EventSystem.js +134 -0
  34. package/dist/events/EventSystem.js.map +1 -0
  35. package/dist/events/types.d.ts +300 -0
  36. package/dist/events/types.d.ts.map +1 -0
  37. package/dist/events/types.js +4 -0
  38. package/dist/events/types.js.map +1 -0
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +6 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/manager/ConfManager.d.ts +76 -0
  44. package/dist/manager/ConfManager.d.ts.map +1 -0
  45. package/dist/manager/ConfManager.js +329 -0
  46. package/dist/manager/ConfManager.js.map +1 -0
  47. package/dist/manager/ModelManager.d.ts +51 -0
  48. package/dist/manager/ModelManager.d.ts.map +1 -0
  49. package/dist/manager/ModelManager.js +291 -0
  50. package/dist/manager/ModelManager.js.map +1 -0
  51. package/dist/manager/PermissionManager.d.ts +16 -0
  52. package/dist/manager/PermissionManager.d.ts.map +1 -0
  53. package/dist/manager/PermissionManager.js +308 -0
  54. package/dist/manager/PermissionManager.js.map +1 -0
  55. package/dist/manager/StateManager.d.ts +164 -0
  56. package/dist/manager/StateManager.d.ts.map +1 -0
  57. package/dist/manager/StateManager.js +357 -0
  58. package/dist/manager/StateManager.js.map +1 -0
  59. package/dist/services/agents/agentsManager.d.ts +112 -0
  60. package/dist/services/agents/agentsManager.d.ts.map +1 -0
  61. package/dist/services/agents/agentsManager.js +394 -0
  62. package/dist/services/agents/agentsManager.js.map +1 -0
  63. package/dist/services/agents/defaultBuiltInAgentsConfs.d.ts +3 -0
  64. package/dist/services/agents/defaultBuiltInAgentsConfs.d.ts.map +1 -0
  65. package/dist/services/agents/defaultBuiltInAgentsConfs.js +102 -0
  66. package/dist/services/agents/defaultBuiltInAgentsConfs.js.map +1 -0
  67. package/dist/services/agents/genSystemPrompt.d.ts +23 -0
  68. package/dist/services/agents/genSystemPrompt.d.ts.map +1 -0
  69. package/dist/services/agents/genSystemPrompt.js +189 -0
  70. package/dist/services/agents/genSystemPrompt.js.map +1 -0
  71. package/dist/services/agents/prompt.d.ts +12 -0
  72. package/dist/services/agents/prompt.d.ts.map +1 -0
  73. package/dist/services/agents/prompt.js +162 -0
  74. package/dist/services/agents/prompt.js.map +1 -0
  75. package/dist/services/api/adapt/anthropic.d.ts +10 -0
  76. package/dist/services/api/adapt/anthropic.d.ts.map +1 -0
  77. package/dist/services/api/adapt/anthropic.js +233 -0
  78. package/dist/services/api/adapt/anthropic.js.map +1 -0
  79. package/dist/services/api/adapt/openai.d.ts +8 -0
  80. package/dist/services/api/adapt/openai.d.ts.map +1 -0
  81. package/dist/services/api/adapt/openai.js +412 -0
  82. package/dist/services/api/adapt/openai.js.map +1 -0
  83. package/dist/services/api/adapt/util.d.ts +7 -0
  84. package/dist/services/api/adapt/util.d.ts.map +1 -0
  85. package/dist/services/api/adapt/util.js +24 -0
  86. package/dist/services/api/adapt/util.js.map +1 -0
  87. package/dist/services/api/apiUtil.d.ts +10 -0
  88. package/dist/services/api/apiUtil.d.ts.map +1 -0
  89. package/dist/services/api/apiUtil.js +256 -0
  90. package/dist/services/api/apiUtil.js.map +1 -0
  91. package/dist/services/api/cache.d.ts +11 -0
  92. package/dist/services/api/cache.d.ts.map +1 -0
  93. package/dist/services/api/cache.js +128 -0
  94. package/dist/services/api/cache.js.map +1 -0
  95. package/dist/services/api/queryLLM.d.ts +18 -0
  96. package/dist/services/api/queryLLM.d.ts.map +1 -0
  97. package/dist/services/api/queryLLM.js +147 -0
  98. package/dist/services/api/queryLLM.js.map +1 -0
  99. package/dist/services/command/runCommand.d.ts +18 -0
  100. package/dist/services/command/runCommand.d.ts.map +1 -0
  101. package/dist/services/command/runCommand.js +149 -0
  102. package/dist/services/command/runCommand.js.map +1 -0
  103. package/dist/services/mcp/MCPClient.d.ts +35 -0
  104. package/dist/services/mcp/MCPClient.d.ts.map +1 -0
  105. package/dist/services/mcp/MCPClient.js +166 -0
  106. package/dist/services/mcp/MCPClient.js.map +1 -0
  107. package/dist/services/mcp/MCPManager.d.ts +140 -0
  108. package/dist/services/mcp/MCPManager.d.ts.map +1 -0
  109. package/dist/services/mcp/MCPManager.js +650 -0
  110. package/dist/services/mcp/MCPManager.js.map +1 -0
  111. package/dist/services/mcp/MCPToolAdapter.d.ts +22 -0
  112. package/dist/services/mcp/MCPToolAdapter.d.ts.map +1 -0
  113. package/dist/services/mcp/MCPToolAdapter.js +177 -0
  114. package/dist/services/mcp/MCPToolAdapter.js.map +1 -0
  115. package/dist/services/plugins/customCommands.d.ts +29 -0
  116. package/dist/services/plugins/customCommands.d.ts.map +1 -0
  117. package/dist/services/plugins/customCommands.js +227 -0
  118. package/dist/services/plugins/customCommands.js.map +1 -0
  119. package/dist/services/skill/skillLoader.d.ts +17 -0
  120. package/dist/services/skill/skillLoader.d.ts.map +1 -0
  121. package/dist/services/skill/skillLoader.js +122 -0
  122. package/dist/services/skill/skillLoader.js.map +1 -0
  123. package/dist/services/skill/skillParser.d.ts +15 -0
  124. package/dist/services/skill/skillParser.d.ts.map +1 -0
  125. package/dist/services/skill/skillParser.js +66 -0
  126. package/dist/services/skill/skillParser.js.map +1 -0
  127. package/dist/services/skill/skillRegistry.d.ts +34 -0
  128. package/dist/services/skill/skillRegistry.d.ts.map +1 -0
  129. package/dist/services/skill/skillRegistry.js +98 -0
  130. package/dist/services/skill/skillRegistry.js.map +1 -0
  131. package/dist/tools/AskUserQuestion/AskUserQuestion.d.ts +179 -0
  132. package/dist/tools/AskUserQuestion/AskUserQuestion.d.ts.map +1 -0
  133. package/dist/tools/AskUserQuestion/AskUserQuestion.js +165 -0
  134. package/dist/tools/AskUserQuestion/AskUserQuestion.js.map +1 -0
  135. package/dist/tools/AskUserQuestion/prompt.d.ts +3 -0
  136. package/dist/tools/AskUserQuestion/prompt.d.ts.map +1 -0
  137. package/dist/tools/AskUserQuestion/prompt.js +17 -0
  138. package/dist/tools/AskUserQuestion/prompt.js.map +1 -0
  139. package/dist/tools/Bash/Bash.d.ts +75 -0
  140. package/dist/tools/Bash/Bash.d.ts.map +1 -0
  141. package/dist/tools/Bash/Bash.js +200 -0
  142. package/dist/tools/Bash/Bash.js.map +1 -0
  143. package/dist/tools/Bash/prompt.d.ts +8 -0
  144. package/dist/tools/Bash/prompt.d.ts.map +1 -0
  145. package/dist/tools/Bash/prompt.js +167 -0
  146. package/dist/tools/Bash/prompt.js.map +1 -0
  147. package/dist/tools/Bash/utils.d.ts +5 -0
  148. package/dist/tools/Bash/utils.d.ts.map +1 -0
  149. package/dist/tools/Bash/utils.js +21 -0
  150. package/dist/tools/Bash/utils.js.map +1 -0
  151. package/dist/tools/Edit/Edit.d.ts +110 -0
  152. package/dist/tools/Edit/Edit.d.ts.map +1 -0
  153. package/dist/tools/Edit/Edit.js +213 -0
  154. package/dist/tools/Edit/Edit.js.map +1 -0
  155. package/dist/tools/Edit/prompt.d.ts +3 -0
  156. package/dist/tools/Edit/prompt.d.ts.map +1 -0
  157. package/dist/tools/Edit/prompt.js +15 -0
  158. package/dist/tools/Edit/prompt.js.map +1 -0
  159. package/dist/tools/Edit/utils.d.ts +10 -0
  160. package/dist/tools/Edit/utils.d.ts.map +1 -0
  161. package/dist/tools/Edit/utils.js +51 -0
  162. package/dist/tools/Edit/utils.js.map +1 -0
  163. package/dist/tools/ExitPlanMode/ExitPlanMode.d.ts +42 -0
  164. package/dist/tools/ExitPlanMode/ExitPlanMode.d.ts.map +1 -0
  165. package/dist/tools/ExitPlanMode/ExitPlanMode.js +157 -0
  166. package/dist/tools/ExitPlanMode/ExitPlanMode.js.map +1 -0
  167. package/dist/tools/ExitPlanMode/prompt.d.ts +3 -0
  168. package/dist/tools/ExitPlanMode/prompt.d.ts.map +1 -0
  169. package/dist/tools/ExitPlanMode/prompt.js +28 -0
  170. package/dist/tools/ExitPlanMode/prompt.js.map +1 -0
  171. package/dist/tools/Glob/Glob.d.ts +44 -0
  172. package/dist/tools/Glob/Glob.d.ts.map +1 -0
  173. package/dist/tools/Glob/Glob.js +113 -0
  174. package/dist/tools/Glob/Glob.js.map +1 -0
  175. package/dist/tools/Glob/prompt.d.ts +3 -0
  176. package/dist/tools/Glob/prompt.d.ts.map +1 -0
  177. package/dist/tools/Glob/prompt.js +11 -0
  178. package/dist/tools/Glob/prompt.js.map +1 -0
  179. package/dist/tools/Grep/Grep.d.ts +106 -0
  180. package/dist/tools/Grep/Grep.d.ts.map +1 -0
  181. package/dist/tools/Grep/Grep.js +301 -0
  182. package/dist/tools/Grep/Grep.js.map +1 -0
  183. package/dist/tools/Grep/prompt.d.ts +3 -0
  184. package/dist/tools/Grep/prompt.d.ts.map +1 -0
  185. package/dist/tools/Grep/prompt.js +17 -0
  186. package/dist/tools/Grep/prompt.js.map +1 -0
  187. package/dist/tools/NotebookEdit/NotebookEdit.d.ts +98 -0
  188. package/dist/tools/NotebookEdit/NotebookEdit.d.ts.map +1 -0
  189. package/dist/tools/NotebookEdit/NotebookEdit.js +228 -0
  190. package/dist/tools/NotebookEdit/NotebookEdit.js.map +1 -0
  191. package/dist/tools/NotebookEdit/prompt.d.ts +3 -0
  192. package/dist/tools/NotebookEdit/prompt.d.ts.map +1 -0
  193. package/dist/tools/NotebookEdit/prompt.js +6 -0
  194. package/dist/tools/NotebookEdit/prompt.js.map +1 -0
  195. package/dist/tools/Read/Read.d.ts +107 -0
  196. package/dist/tools/Read/Read.d.ts.map +1 -0
  197. package/dist/tools/Read/Read.js +175 -0
  198. package/dist/tools/Read/Read.js.map +1 -0
  199. package/dist/tools/Read/prompt.d.ts +4 -0
  200. package/dist/tools/Read/prompt.d.ts.map +1 -0
  201. package/dist/tools/Read/prompt.js +21 -0
  202. package/dist/tools/Read/prompt.js.map +1 -0
  203. package/dist/tools/Skill/Skill.d.ts +62 -0
  204. package/dist/tools/Skill/Skill.d.ts.map +1 -0
  205. package/dist/tools/Skill/Skill.js +142 -0
  206. package/dist/tools/Skill/Skill.js.map +1 -0
  207. package/dist/tools/Skill/prompt.d.ts +3 -0
  208. package/dist/tools/Skill/prompt.d.ts.map +1 -0
  209. package/dist/tools/Skill/prompt.js +58 -0
  210. package/dist/tools/Skill/prompt.js.map +1 -0
  211. package/dist/tools/Task/Task.d.ts +59 -0
  212. package/dist/tools/Task/Task.d.ts.map +1 -0
  213. package/dist/tools/Task/Task.js +213 -0
  214. package/dist/tools/Task/Task.js.map +1 -0
  215. package/dist/tools/Task/prompt.d.ts +6 -0
  216. package/dist/tools/Task/prompt.d.ts.map +1 -0
  217. package/dist/tools/Task/prompt.js +75 -0
  218. package/dist/tools/Task/prompt.js.map +1 -0
  219. package/dist/tools/TodoWrite/TodoWrite.d.ts +92 -0
  220. package/dist/tools/TodoWrite/TodoWrite.d.ts.map +1 -0
  221. package/dist/tools/TodoWrite/TodoWrite.js +101 -0
  222. package/dist/tools/TodoWrite/TodoWrite.js.map +1 -0
  223. package/dist/tools/TodoWrite/prompt.d.ts +3 -0
  224. package/dist/tools/TodoWrite/prompt.d.ts.map +1 -0
  225. package/dist/tools/TodoWrite/prompt.js +187 -0
  226. package/dist/tools/TodoWrite/prompt.js.map +1 -0
  227. package/dist/tools/Write/Write.d.ts +77 -0
  228. package/dist/tools/Write/Write.d.ts.map +1 -0
  229. package/dist/tools/Write/Write.js +189 -0
  230. package/dist/tools/Write/Write.js.map +1 -0
  231. package/dist/tools/Write/prompt.d.ts +3 -0
  232. package/dist/tools/Write/prompt.d.ts.map +1 -0
  233. package/dist/tools/Write/prompt.js +13 -0
  234. package/dist/tools/Write/prompt.js.map +1 -0
  235. package/dist/tools/base/Tool.d.ts +36 -0
  236. package/dist/tools/base/Tool.d.ts.map +1 -0
  237. package/dist/tools/base/Tool.js +3 -0
  238. package/dist/tools/base/Tool.js.map +1 -0
  239. package/dist/tools/base/tools.d.ts +9 -0
  240. package/dist/tools/base/tools.d.ts.map +1 -0
  241. package/dist/tools/base/tools.js +105 -0
  242. package/dist/tools/base/tools.js.map +1 -0
  243. package/dist/types/agent.d.ts +30 -0
  244. package/dist/types/agent.d.ts.map +1 -0
  245. package/dist/types/agent.js +3 -0
  246. package/dist/types/agent.js.map +1 -0
  247. package/dist/types/command.d.ts +44 -0
  248. package/dist/types/command.d.ts.map +1 -0
  249. package/dist/types/command.js +6 -0
  250. package/dist/types/command.js.map +1 -0
  251. package/dist/types/config.d.ts +14 -0
  252. package/dist/types/config.d.ts.map +1 -0
  253. package/dist/types/config.js +3 -0
  254. package/dist/types/config.js.map +1 -0
  255. package/dist/types/errors.d.ts +18 -0
  256. package/dist/types/errors.d.ts.map +1 -0
  257. package/dist/types/errors.js +33 -0
  258. package/dist/types/errors.js.map +1 -0
  259. package/dist/types/index.d.ts +91 -0
  260. package/dist/types/index.d.ts.map +1 -0
  261. package/dist/types/index.js +18 -0
  262. package/dist/types/index.js.map +1 -0
  263. package/dist/types/mcp.d.ts +127 -0
  264. package/dist/types/mcp.d.ts.map +1 -0
  265. package/dist/types/mcp.js +6 -0
  266. package/dist/types/mcp.js.map +1 -0
  267. package/dist/types/message.d.ts +31 -0
  268. package/dist/types/message.d.ts.map +1 -0
  269. package/dist/types/message.js +3 -0
  270. package/dist/types/message.js.map +1 -0
  271. package/dist/types/model.d.ts +21 -0
  272. package/dist/types/model.d.ts.map +1 -0
  273. package/dist/types/model.js +3 -0
  274. package/dist/types/model.js.map +1 -0
  275. package/dist/types/notebook.d.ts +57 -0
  276. package/dist/types/notebook.d.ts.map +1 -0
  277. package/dist/types/notebook.js +3 -0
  278. package/dist/types/notebook.js.map +1 -0
  279. package/dist/types/skill.d.ts +34 -0
  280. package/dist/types/skill.d.ts.map +1 -0
  281. package/dist/types/skill.js +8 -0
  282. package/dist/types/skill.js.map +1 -0
  283. package/dist/types/uuid.d.ts +2 -0
  284. package/dist/types/uuid.d.ts.map +1 -0
  285. package/dist/types/uuid.js +3 -0
  286. package/dist/types/uuid.js.map +1 -0
  287. package/dist/util/adapter.d.ts +11 -0
  288. package/dist/util/adapter.d.ts.map +1 -0
  289. package/dist/util/adapter.js +75 -0
  290. package/dist/util/adapter.js.map +1 -0
  291. package/dist/util/agentStats.d.ts +11 -0
  292. package/dist/util/agentStats.d.ts.map +1 -0
  293. package/dist/util/agentStats.js +60 -0
  294. package/dist/util/agentStats.js.map +1 -0
  295. package/dist/util/cacheLLM.d.ts +47 -0
  296. package/dist/util/cacheLLM.d.ts.map +1 -0
  297. package/dist/util/cacheLLM.js +154 -0
  298. package/dist/util/cacheLLM.js.map +1 -0
  299. package/dist/util/commands.d.ts +16 -0
  300. package/dist/util/commands.d.ts.map +1 -0
  301. package/dist/util/commands.js +216 -0
  302. package/dist/util/commands.js.map +1 -0
  303. package/dist/util/compact.d.ts +25 -0
  304. package/dist/util/compact.d.ts.map +1 -0
  305. package/dist/util/compact.js +451 -0
  306. package/dist/util/compact.js.map +1 -0
  307. package/dist/util/cwd.d.ts +44 -0
  308. package/dist/util/cwd.d.ts.map +1 -0
  309. package/dist/util/cwd.js +84 -0
  310. package/dist/util/cwd.js.map +1 -0
  311. package/dist/util/diff.d.ts +10 -0
  312. package/dist/util/diff.d.ts.map +1 -0
  313. package/dist/util/diff.js +127 -0
  314. package/dist/util/diff.js.map +1 -0
  315. package/dist/util/directory.d.ts +37 -0
  316. package/dist/util/directory.d.ts.map +1 -0
  317. package/dist/util/directory.js +137 -0
  318. package/dist/util/directory.js.map +1 -0
  319. package/dist/util/env.d.ts +5 -0
  320. package/dist/util/env.d.ts.map +1 -0
  321. package/dist/util/env.js +39 -0
  322. package/dist/util/env.js.map +1 -0
  323. package/dist/util/exec.d.ts +6 -0
  324. package/dist/util/exec.d.ts.map +1 -0
  325. package/dist/util/exec.js +43 -0
  326. package/dist/util/exec.js.map +1 -0
  327. package/dist/util/file.d.ts +61 -0
  328. package/dist/util/file.d.ts.map +1 -0
  329. package/dist/util/file.js +365 -0
  330. package/dist/util/file.js.map +1 -0
  331. package/dist/util/filePermission.d.ts +14 -0
  332. package/dist/util/filePermission.d.ts.map +1 -0
  333. package/dist/util/filePermission.js +45 -0
  334. package/dist/util/filePermission.js.map +1 -0
  335. package/dist/util/fileReference.d.ts +40 -0
  336. package/dist/util/fileReference.d.ts.map +1 -0
  337. package/dist/util/fileReference.js +343 -0
  338. package/dist/util/fileReference.js.map +1 -0
  339. package/dist/util/format.d.ts +9 -0
  340. package/dist/util/format.d.ts.map +1 -0
  341. package/dist/util/format.js +61 -0
  342. package/dist/util/format.js.map +1 -0
  343. package/dist/util/frontmatter.d.ts +35 -0
  344. package/dist/util/frontmatter.d.ts.map +1 -0
  345. package/dist/util/frontmatter.js +119 -0
  346. package/dist/util/frontmatter.js.map +1 -0
  347. package/dist/util/git.d.ts +4 -0
  348. package/dist/util/git.d.ts.map +1 -0
  349. package/dist/util/git.js +55 -0
  350. package/dist/util/git.js.map +1 -0
  351. package/dist/util/history.d.ts +27 -0
  352. package/dist/util/history.d.ts.map +1 -0
  353. package/dist/util/history.js +248 -0
  354. package/dist/util/history.js.map +1 -0
  355. package/dist/util/log.d.ts +23 -0
  356. package/dist/util/log.d.ts.map +1 -0
  357. package/dist/util/log.js +246 -0
  358. package/dist/util/log.js.map +1 -0
  359. package/dist/util/logLLM.d.ts +20 -0
  360. package/dist/util/logLLM.d.ts.map +1 -0
  361. package/dist/util/logLLM.js +414 -0
  362. package/dist/util/logLLM.js.map +1 -0
  363. package/dist/util/message.d.ts +12 -0
  364. package/dist/util/message.d.ts.map +1 -0
  365. package/dist/util/message.js +156 -0
  366. package/dist/util/message.js.map +1 -0
  367. package/dist/util/model.d.ts +22 -0
  368. package/dist/util/model.d.ts.map +1 -0
  369. package/dist/util/model.js +61 -0
  370. package/dist/util/model.js.map +1 -0
  371. package/dist/util/notebook.d.ts +14 -0
  372. package/dist/util/notebook.d.ts.map +1 -0
  373. package/dist/util/notebook.js +104 -0
  374. package/dist/util/notebook.js.map +1 -0
  375. package/dist/util/ripgrep.d.ts +3 -0
  376. package/dist/util/ripgrep.d.ts.map +1 -0
  377. package/dist/util/ripgrep.js +187 -0
  378. package/dist/util/ripgrep.js.map +1 -0
  379. package/dist/util/rules.d.ts +6 -0
  380. package/dist/util/rules.d.ts.map +1 -0
  381. package/dist/util/rules.js +111 -0
  382. package/dist/util/rules.js.map +1 -0
  383. package/dist/util/savePath.d.ts +73 -0
  384. package/dist/util/savePath.d.ts.map +1 -0
  385. package/dist/util/savePath.js +189 -0
  386. package/dist/util/savePath.js.map +1 -0
  387. package/dist/util/secureFile.d.ts +136 -0
  388. package/dist/util/secureFile.d.ts.map +1 -0
  389. package/dist/util/secureFile.js +496 -0
  390. package/dist/util/secureFile.js.map +1 -0
  391. package/dist/util/session.d.ts +37 -0
  392. package/dist/util/session.d.ts.map +1 -0
  393. package/dist/util/session.js +120 -0
  394. package/dist/util/session.js.map +1 -0
  395. package/dist/util/shell.d.ts +40 -0
  396. package/dist/util/shell.d.ts.map +1 -0
  397. package/dist/util/shell.js +876 -0
  398. package/dist/util/shell.js.map +1 -0
  399. package/dist/util/time.d.ts +24 -0
  400. package/dist/util/time.d.ts.map +1 -0
  401. package/dist/util/time.js +53 -0
  402. package/dist/util/time.js.map +1 -0
  403. package/dist/util/tokens.d.ts +9 -0
  404. package/dist/util/tokens.d.ts.map +1 -0
  405. package/dist/util/tokens.js +79 -0
  406. package/dist/util/tokens.js.map +1 -0
  407. package/dist/util/topic.d.ts +9 -0
  408. package/dist/util/topic.d.ts.map +1 -0
  409. package/dist/util/topic.js +52 -0
  410. package/dist/util/topic.js.map +1 -0
  411. package/package.json +83 -0
@@ -0,0 +1,451 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compactMessages = compactMessages;
4
+ exports.checkAutoCompact = checkAutoCompact;
5
+ const tokens_1 = require("./tokens");
6
+ const message_1 = require("./message");
7
+ const queryLLM_1 = require("../services/api/queryLLM");
8
+ const ModelManager_1 = require("../manager/ModelManager");
9
+ const log_1 = require("../util/log");
10
+ const EventSystem_1 = require("../events/EventSystem");
11
+ const zod_1 = require("zod");
12
+ const tokens_2 = require("./tokens");
13
+ /**
14
+ * 触发自动上下文压缩的阈值比例
15
+ * 当上下文使用量超过模型限制的75%时,将自动激活紧凑化处理
16
+ * 提前触发压缩以避免接近token限制时的API调用失败
17
+ */
18
+ const AUTO_COMPACT_THRESHOLD_RATIO = 0.75;
19
+ /**
20
+ * 获取应执行压缩的主模型的上下文长度
21
+ * 通过ModelManager获取当前模型的上下文容量
22
+ */
23
+ async function getCompressionModelContextLimit() {
24
+ try {
25
+ const modelManager = (0, ModelManager_1.getModelManager)();
26
+ const modelProfile = modelManager.getModel('main');
27
+ if (modelProfile?.contextLength) {
28
+ return modelProfile.contextLength;
29
+ }
30
+ return 128_000;
31
+ }
32
+ catch (error) {
33
+ return 128_000;
34
+ }
35
+ }
36
+ const COMPRESSION_PROMPT = `Your task is to create a detailed summary of the conversation so far, paying close attention to the user's explicit requests and your previous actions.
37
+ This summary should be thorough in capturing technical details, code patterns, and architectural decisions that would be essential for continuing development work without losing context.
38
+
39
+ Before providing your final summary, wrap your analysis in <analysis> tags to organize your thoughts and ensure you've covered all necessary points. In your analysis process:
40
+
41
+ 1. Chronologically analyze each message and section of the conversation. For each section thoroughly identify:
42
+ - The user's explicit requests and intents
43
+ - Your approach to addressing the user's requests
44
+ - Key decisions, technical concepts and code patterns
45
+ - Specific details like:
46
+ - file names
47
+ - full code snippets
48
+ - function signatures
49
+ - file edits
50
+ - Errors that you ran into and how you fixed them
51
+ - Pay special attention to specific user feedback that you received, especially if the user told you to do something differently.
52
+
53
+ 2. Double-check for technical accuracy and completeness, addressing each required element thoroughly.
54
+
55
+ Your summary should include the following sections:
56
+
57
+ 1. Primary Request and Intent: Capture all of the user's explicit requests and intents in detail
58
+
59
+ 2. Key Technical Concepts: List all important technical concepts, technologies, and frameworks discussed.
60
+
61
+ 3. Files and Code Sections: Enumerate specific files and code sections examined, modified, or created. Pay special attention to the most recent messages and include full code snippets where applicable and include a summary of why this file read or edit is important.
62
+
63
+ 4. Errors and fixes: List all errors that you ran into, and how you fixed them. Pay special attention to specific user feedback that you received, especially if the user told you to do something differently.
64
+
65
+ 5. Problem Solving: Document problems solved and any ongoing troubleshooting efforts.
66
+
67
+ 6. All user messages: List ALL user messages that are not tool results. These are critical for understanding the users' feedback and changing intent.
68
+
69
+ 7. Pending Tasks: Outline any pending tasks that you have explicitly been asked to work on.
70
+
71
+ 8. Current Work: Describe in detail precisely what was being worked on immediately before this summary request, paying special attention to the most recent messages from both user and assistant. Include file names and code snippets where applicable.
72
+
73
+ 9. Optional Next Step: List the next step that you will take that is related to the most recent work you were doing. IMPORTANT: ensure that this step is DIRECTLY in line with the user's most recent explicit requests, and the task you were working on immediately before this summary request. If your last task was concluded, then only list next steps if they are explicitly in line with the users request. Do not start on tangential requests or really old requests that were already completed without confirming with the user first.
74
+ If there is a next step, include direct quotes from the most recent conversation showing exactly what task you were working on and where you left off. This should be verbatim to ensure there's no drift in task interpretation.
75
+
76
+ Here's an example of how your output should be structured:
77
+
78
+ <example>
79
+ <analysis>
80
+ [Your thought process, ensuring all points are covered thoroughly and accurately]
81
+ </analysis>
82
+
83
+ <summary>
84
+ 1. Primary Request and Intent:
85
+ [Detailed description]
86
+
87
+ 2. Key Technical Concepts:
88
+ - [Concept 1]
89
+ - [Concept 2]
90
+ - [...]
91
+
92
+ 3. Files and Code Sections:
93
+ - [File Name 1]
94
+ - [Summary of why this file is important]
95
+ - [Summary of the changes made to this file, if any]
96
+ - [Important Code Snippet]
97
+ - [File Name 2]
98
+ - [Important Code Snippet]
99
+ - [...]
100
+
101
+ 4. Errors and fixes:
102
+ - [Detailed description of error 1]:
103
+ - [How you fixed the error]
104
+ - [User feedback on the error if any]
105
+ - [...]
106
+
107
+ 5. Problem Solving:
108
+ [Description of solved problems and ongoing troubleshooting]
109
+
110
+ 6. All user messages:
111
+ - [Detailed non tool use user message]
112
+ - [...]
113
+
114
+ 7. Pending Tasks:
115
+ - [Task 1]
116
+ - [Task 2]
117
+ - [...]
118
+
119
+ 8. Current Work:
120
+ [Precise description of current work]
121
+
122
+ 9. Optional Next Step:
123
+ [Optional Next step to take]
124
+
125
+ </summary>
126
+ </example>
127
+
128
+ Please provide your summary based on the conversation so far, following this structure and ensuring precision and thoroughness in your response.
129
+
130
+ There may be additional summarization instructions provided in the included context. If so, remember to follow these instructions when creating the above summary. Examples of instructions include:
131
+ <example>
132
+ ## Compact Instructions
133
+ When summarizing the conversation focus on typescript code changes and also remember the mistakes you made and how you fixed them.
134
+ </example>
135
+
136
+ <example>
137
+ # Summary instructions
138
+ When you are using compact - please focus on test output and code changes. Include file reads verbatim.
139
+ </example>
140
+ Just compact without using any read tools. **No tool use during summary.**`;
141
+ /**
142
+ * 从 assistant 消息的 usage 中提取输入 token 数
143
+ * 支持 Anthropic 和 OpenAI 两种格式
144
+ */
145
+ function getInputTokensFromUsage(usage) {
146
+ if (!usage || typeof usage !== 'object') {
147
+ return 0;
148
+ }
149
+ if ('input_tokens' in usage) {
150
+ // Anthropic 格式
151
+ return usage.input_tokens +
152
+ (usage.cache_creation_input_tokens ?? 0) +
153
+ (usage.cache_read_input_tokens ?? 0);
154
+ }
155
+ else if ('prompt_tokens' in usage) {
156
+ // OpenAI 格式
157
+ return usage.prompt_tokens;
158
+ }
159
+ return 0;
160
+ }
161
+ /**
162
+ * 简单消息截断策略
163
+ * 当压缩失败时使用此备用策略,保留最近的消息直到达到目标token数
164
+ *
165
+ * 实现原理:
166
+ * - 每个 assistant 消息的 usage.input_tokens 是累计值,表示到该位置为止的总输入 token
167
+ * - 通过正序遍历找到累计 token 超过需要移除量的位置,从该位置之后保留消息
168
+ */
169
+ function truncateMessages(messages, targetTokenLimit) {
170
+ if (messages.length <= 2) {
171
+ return messages;
172
+ }
173
+ // 获取总 token 数(从最后一个 assistant 消息的 usage 获取)
174
+ const totalTokens = (0, tokens_1.countTokens)(messages);
175
+ const totalInputTokens = totalTokens.inputTokens;
176
+ // 如果总 token 数已经在限制内,无需截断
177
+ if (totalInputTokens <= targetTokenLimit) {
178
+ return messages;
179
+ }
180
+ // 需要移除的 token 数
181
+ const tokensToRemove = totalInputTokens - targetTokenLimit;
182
+ (0, log_1.logDebug)(`[Compact] Truncating: total=${totalInputTokens}, target=${targetTokenLimit}, toRemove=${tokensToRemove}`);
183
+ // 正序遍历,找到累计 token 超过 tokensToRemove 的 assistant 消息
184
+ // 每个 assistant 消息的 input_tokens 是到该位置的累计输入 token
185
+ // 当累计 token >= tokensToRemove 时,说明从该位置之后的消息在目标限制内
186
+ let cutIndex = 0;
187
+ for (let i = 0; i < messages.length; i++) {
188
+ const message = messages[i];
189
+ if (message.type === 'assistant' && 'usage' in message.message) {
190
+ const inputTokens = getInputTokensFromUsage(message.message.usage);
191
+ if (inputTokens >= tokensToRemove) {
192
+ // 从下一条消息开始保留
193
+ cutIndex = i + 1;
194
+ break;
195
+ }
196
+ }
197
+ }
198
+ // 如果没找到合适的切割点,保留最后的用户-助手消息对
199
+ if (cutIndex === 0 || cutIndex >= messages.length) {
200
+ for (let i = messages.length - 1; i >= 0; i--) {
201
+ if (messages[i].type === 'user') {
202
+ cutIndex = i;
203
+ break;
204
+ }
205
+ }
206
+ cutIndex = Math.max(0, cutIndex);
207
+ }
208
+ const result = messages.slice(cutIndex);
209
+ // 确保至少保留一条消息
210
+ if (result.length === 0 && messages.length > 0) {
211
+ result.push(messages[messages.length - 1]);
212
+ }
213
+ // 在开头添加截断提示消息
214
+ if (result.length < messages.length) {
215
+ const truncatedMessage = (0, message_1.createUserMessage)(`Context truncated due to token limit. ${messages.length - result.length} earlier messages removed. Recent conversation preserved.`);
216
+ result.unshift(truncatedMessage);
217
+ }
218
+ (0, log_1.logDebug)(`[Compact] Truncation result: kept ${result.length} of ${messages.length} messages`);
219
+ return result;
220
+ }
221
+ /**
222
+ * 计算压缩率
223
+ * @param tokenBefore 压缩前的token数
224
+ * @param tokenAfter 压缩后的token数
225
+ * @returns 压缩率小数,如 0.235 表示压缩到23.5%
226
+ */
227
+ function calculateCompactRate(tokenBefore, tokenAfter) {
228
+ return tokenAfter / tokenBefore;
229
+ }
230
+ /**
231
+ * 基于主模型能力计算上下文使用阈值
232
+ * 采用主模型上下文长度作为基准,因为压缩任务需要由性能足够的模型处理
233
+ */
234
+ async function calculateThresholds(tokenCount) {
235
+ const contextLimit = await getCompressionModelContextLimit();
236
+ const autoCompactThreshold = contextLimit * AUTO_COMPACT_THRESHOLD_RATIO;
237
+ return {
238
+ isAboveAutoCompactThreshold: tokenCount >= autoCompactThreshold,
239
+ percentUsed: Math.round((tokenCount / contextLimit) * 100),
240
+ tokensRemaining: Math.max(0, autoCompactThreshold - tokenCount),
241
+ contextLimit,
242
+ };
243
+ }
244
+ /**
245
+ * 根据令牌使用量判断是否应触发自动压缩
246
+ * 采用主模型上下文限制作为判断基准,因为压缩任务需要性能足够的模型处理
247
+ * 只计算输入token数,因为API调用时主要关心的是输入token限制
248
+ */
249
+ async function shouldAutoCompact(messages) {
250
+ if (messages.length < 3)
251
+ return false;
252
+ // 只计算输入token数,这是API调用的主要限制
253
+ const tokens = (0, tokens_1.countTokens)(messages);
254
+ const inputTokenCount = tokens.inputTokens;
255
+ const { isAboveAutoCompactThreshold } = await calculateThresholds(inputTokenCount);
256
+ return isAboveAutoCompactThreshold;
257
+ }
258
+ /**
259
+ * 执行上下文压缩(公开接口)
260
+ *
261
+ * 该函数直接执行压缩,不检查阈值。适用于:
262
+ * - 用户手动触发 /compact 命令
263
+ * - 自动压缩检查通过后调用
264
+
265
+ * 改进的错误处理机制:
266
+ * - 压缩失败时会自动使用消息截断作为备用策略
267
+ * - 确保系统在各种异常情况下都能保持功能正常
268
+ * - 提供多层降级方案以避免完全失败
269
+ */
270
+ async function compactMessages(messages, abortController) {
271
+ if (messages.length < 2) {
272
+ return messages;
273
+ }
274
+ // 计算压缩前的输入token数
275
+ const tokensBeforeInfo = (0, tokens_1.countTokens)(messages);
276
+ const tokenBefore = tokensBeforeInfo.inputTokens + tokensBeforeInfo.outputTokens;
277
+ let compactedMessages;
278
+ try {
279
+ compactedMessages = await executeAutoCompact(messages, abortController);
280
+ }
281
+ catch (error) {
282
+ // 压缩完全失败时的备用策略:使用截断方式
283
+ (0, log_1.logError)(`Compact failed, attempting truncation fallback: ${error}`);
284
+ try {
285
+ const contextLimit = await getCompressionModelContextLimit();
286
+ const targetLimit = contextLimit * 0.5; // 截断到50%容量
287
+ compactedMessages = truncateMessages(messages, targetLimit);
288
+ (0, log_1.logError)(`Successfully applied truncation fallback, reduced from ${messages.length} to ${compactedMessages.length} messages`);
289
+ }
290
+ catch (truncationError) {
291
+ // 如果连截断都失败,抛出错误
292
+ (0, log_1.logError)(`Truncation fallback also failed: ${truncationError}`);
293
+ throw truncationError;
294
+ }
295
+ }
296
+ // 计算压缩后的输入token数并触发事件
297
+ const usage = (0, tokens_2.getTokens)(compactedMessages);
298
+ // 触发压缩执行事件
299
+ const eventBus = (0, EventSystem_1.getEventBus)();
300
+ const compactExecData = {
301
+ tokenBefore: tokenBefore,
302
+ tokenCompact: usage.useTokens,
303
+ compactRate: calculateCompactRate(tokenBefore, usage.useTokens)
304
+ };
305
+ eventBus.emit('compact:exec', compactExecData);
306
+ // 自动压缩后发送更新的 usage 事件
307
+ eventBus.emit('conversation:usage', { usage });
308
+ return compactedMessages;
309
+ }
310
+ /**
311
+ * 自动上下文压缩的主要入口函数
312
+ *
313
+ * 该函数在每次查询前被调用,用于检查对话是否已超出容量需要压缩。
314
+ * 会自动分离最后的用户消息(如果有),压缩历史消息后再添加回用户消息。
315
+ */
316
+ async function checkAutoCompact(messages, abortController) {
317
+ // 分离最后的用户消息(如果是真正的用户输入而不是工具结果)
318
+ let newUserMessage = null;
319
+ let messagesToCheck = messages;
320
+ const lastMessage = messages[messages.length - 1];
321
+ if (lastMessage?.type === 'user') {
322
+ // 检查是否是真正的用户查询(而不是 tool result)
323
+ const isToolResult = Array.isArray(lastMessage.message.content) &&
324
+ lastMessage.message.content.length > 0 &&
325
+ lastMessage.message.content[0]?.type === 'tool_result';
326
+ if (!isToolResult) {
327
+ // 最后一条是真正的用户消息,需要分离以便压缩历史消息
328
+ newUserMessage = lastMessage;
329
+ messagesToCheck = messages.slice(0, -1);
330
+ (0, log_1.logDebug)(`[Compact] Separated new user message for compression check`);
331
+ }
332
+ }
333
+ if (!(await shouldAutoCompact(messagesToCheck))) {
334
+ return { messages, wasCompacted: false };
335
+ }
336
+ try {
337
+ const compactedMessages = await compactMessages(messagesToCheck, abortController);
338
+ // 如果有新的用户消息,添加到压缩后的消息列表
339
+ const finalMessages = newUserMessage
340
+ ? [...compactedMessages, newUserMessage]
341
+ : compactedMessages;
342
+ (0, log_1.logDebug)(`[Compact] Final messages count: ${finalMessages.length}, with new user message: ${!!newUserMessage}`);
343
+ return {
344
+ messages: finalMessages,
345
+ wasCompacted: true,
346
+ };
347
+ }
348
+ catch (error) {
349
+ // 如果压缩完全失败,返回原始消息
350
+ (0, log_1.logError)(`Auto-compact failed completely: ${error}. Continuing with original messages`);
351
+ return { messages, wasCompacted: false };
352
+ }
353
+ }
354
+ /**
355
+ * Null Tool - 用于占位避免工具调用
356
+ * 在某些场景下(如压缩),模型必须提供 tools 参数,但我们不希望模型调用任何工具
357
+ * 此工具作为占位符,确保 API 调用合法但不会被实际使用
358
+ */
359
+ const NULL_TOOL = {
360
+ name: 'null',
361
+ description: '占位工具,不应被调用。仅用于满足 API 要求,实际场景中请勿使用此工具。',
362
+ inputSchema: zod_1.z.object({}),
363
+ isReadOnly: () => true,
364
+ genResultForAssistant: () => '',
365
+ call: async function* () {
366
+ yield { type: 'result', data: null };
367
+ }
368
+ };
369
+ /**
370
+ * 使用主模型执行对话压缩处理流程
371
+ *
372
+ * 该函数通过主模型生成全面摘要——主模型更适合处理复杂的摘要任务。
373
+ *
374
+ * 压缩逻辑:
375
+ * 1. 压缩传入的历史对话消息
376
+ * 2. 返回结构:[压缩指令(user), 压缩摘要(assistant+usage)]
377
+ *
378
+ * 注意:新用户消息的分离和添加由 checkAutoCompact 统一处理
379
+ */
380
+ async function executeAutoCompact(messages, abortController) {
381
+ // 使用 null tool 作为占位,避免模型调用任何工具
382
+ const tools = [NULL_TOOL];
383
+ // 将压缩指令作为 user message 追加到要压缩的历史对话后
384
+ const messagesWithPrompt = [
385
+ ...(0, message_1.normalizeMessagesForAPI)([...messages]),
386
+ (0, message_1.createUserMessage)(COMPRESSION_PROMPT)
387
+ ];
388
+ const summaryResponse = await (0, queryLLM_1.queryLLM)(messagesWithPrompt, [
389
+ {
390
+ type: 'text',
391
+ text: 'You are a helpful AI assistant tasked with summarizing coding conversations.'
392
+ }
393
+ ], abortController.signal, tools, 'main', true // 禁用流式事件
394
+ );
395
+ // 解析 summary 结果,兼容 Anthropic 和 OpenAI 两种格式
396
+ const content = summaryResponse.message.content;
397
+ let summary = null;
398
+ if (typeof content === 'string') {
399
+ // OpenAI 格式:content 直接是字符串
400
+ summary = content;
401
+ }
402
+ else if (Array.isArray(content)) {
403
+ // Anthropic 格式:content 是 ContentBlock[] 数组
404
+ const textBlock = content.find(block => block.type === 'text');
405
+ summary = textBlock?.type === 'text' ? textBlock.text : null;
406
+ }
407
+ if (!summary || summary.trim().length === 0) {
408
+ // 压缩失败时的备用策略:尝试简单截断而不是完全失败
409
+ const contextLimit = await getCompressionModelContextLimit();
410
+ const targetLimit = contextLimit * 0.5; // 截断到50%容量
411
+ (0, log_1.logError)('压缩生成摘要失败,使用截断策略作为备用方案');
412
+ return truncateMessages(messages, targetLimit);
413
+ }
414
+ // 压缩后的消息结构:
415
+ // 1. User: 压缩通知
416
+ // 2. Assistant: summaryResponse(压缩摘要 + 修正的 usage)
417
+ //
418
+ // 注意:新用户消息的添加由 checkAutoCompact 统一处理,这里不需要处理
419
+ // 重要:summaryResponse 的 usage 包含了整个压缩过程的 token 数(历史对话 + 压缩指令)
420
+ // 需要修正为压缩后消息的实际 token 数(压缩通知 + 摘要)
421
+ const compactNoticeMessage = (0, message_1.createUserMessage)(`[Context Compression Notice]
422
+ The conversation has been automatically compressed due to token limit. Below is a comprehensive summary.`);
423
+ // 修正 usage:压缩后的实际 token 数应该是压缩通知 + 摘要内容
424
+ // 估算:压缩通知约 30 tokens,摘要使用 completion_tokens
425
+ const originalUsage = summaryResponse.message.usage;
426
+ const estimatedNoticeTokens = 30;
427
+ const summaryTokens = originalUsage.completion_tokens || originalUsage.output_tokens || 0;
428
+ // 创建修正后的 summary message
429
+ const correctedSummaryMessage = {
430
+ ...summaryResponse,
431
+ message: {
432
+ ...summaryResponse.message,
433
+ usage: {
434
+ ...originalUsage,
435
+ // 修正 input_tokens:压缩通知 + 摘要内容
436
+ input_tokens: estimatedNoticeTokens + summaryTokens,
437
+ // 修正 output_tokens:摘要内容
438
+ output_tokens: summaryTokens,
439
+ // 如果是 OpenAI 格式,也要修正
440
+ prompt_tokens: estimatedNoticeTokens + summaryTokens,
441
+ completion_tokens: summaryTokens,
442
+ }
443
+ }
444
+ };
445
+ // logDebug(`[Compact] Original usage: input=${originalUsage.input_tokens || originalUsage.prompt_tokens}, output=${originalUsage.output_tokens || originalUsage.completion_tokens}`)
446
+ // logDebug(`[Compact] Corrected usage: input=${estimatedNoticeTokens + summaryTokens}, output=${summaryTokens}`)
447
+ // 构建压缩后的消息列表(只包含压缩通知和摘要,不包含新用户消息)
448
+ const compactedMessages = [compactNoticeMessage, correctedSummaryMessage];
449
+ return compactedMessages;
450
+ }
451
+ //# sourceMappingURL=compact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/util/compact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 设置当前工作目录(动态变化,会随着shell目录切换而更新)
3
+ *
4
+ * 使用场景:
5
+ * - Bash 目录切换:处理 cd 命令时更新当前目录
6
+ * - 文件操作基准:为文件搜索、编辑等操作提供当前工作目录
7
+ * - 路径解析:解析相对路径时使用当前目录作为基准
8
+ *
9
+ * @param cwd 要设置的工作目录路径
10
+ */
11
+ export declare function setCwd(cwd: string): Promise<void>;
12
+ /**
13
+ * 获取当前工作目录(返回PersistentShell实例的当前目录,动态变化)
14
+ *
15
+ * 使用场景:
16
+ * - 文件操作:GlobTool和GrepTool等工具进行文件搜索时
17
+ * - 路径解析:文件编辑工具解析相对路径时
18
+ * - 代码风格检测:查找项目配置文件时
19
+ * - 命令执行:执行shell命令时的工作目录
20
+ *
21
+ * @returns 当前工作目录路径(Windows平台下自动标准化Unix风格路径)
22
+ */
23
+ export declare function getCwd(): string;
24
+ /**
25
+ * 设置原始工作目录(静态值,一旦设置就不会改变)
26
+ *
27
+ * 使用场景:
28
+ * - core启动时设置:当使用 workingDir 参数时,同时设置原始和当前目录
29
+ *
30
+ * @param cwd 要设置的原始工作目录路径
31
+ */
32
+ export declare function setOriginalCwd(cwd: string): void;
33
+ /**
34
+ * 获取原始工作目录(返回进程启动时的工作目录,存储在全局状态中)
35
+ *
36
+ * 使用场景:
37
+ * - 重置操作:在 /clear 命令中重置到启动目录
38
+ * - 项目标识:显示项目信息时使用原始目录
39
+ * - 权限上下文:在权限选项中显示当前工作目录
40
+ *
41
+ * @returns 原始工作目录路径
42
+ */
43
+ export declare function getOriginalCwd(): string;
44
+ //# sourceMappingURL=cwd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cwd.d.ts","sourceRoot":"","sources":["../../src/util/cwd.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAavD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAS/B;AAQD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setCwd = setCwd;
4
+ exports.getCwd = getCwd;
5
+ exports.setOriginalCwd = setOriginalCwd;
6
+ exports.getOriginalCwd = getOriginalCwd;
7
+ const shell_1 = require("./shell");
8
+ const process_1 = require("process");
9
+ const log_1 = require("./log");
10
+ const file_1 = require("./file");
11
+ /**
12
+ * 设置当前工作目录(动态变化,会随着shell目录切换而更新)
13
+ *
14
+ * 使用场景:
15
+ * - Bash 目录切换:处理 cd 命令时更新当前目录
16
+ * - 文件操作基准:为文件搜索、编辑等操作提供当前工作目录
17
+ * - 路径解析:解析相对路径时使用当前目录作为基准
18
+ *
19
+ * @param cwd 要设置的工作目录路径
20
+ */
21
+ async function setCwd(cwd) {
22
+ // 强制重新初始化 PersistentShell 实例以确保工作目录变更被感知
23
+ shell_1.PersistentShell.restart();
24
+ await shell_1.PersistentShell.getInstance().setCwd(cwd);
25
+ let actualCwd = shell_1.PersistentShell.getInstance().pwd();
26
+ // Windows平台下使用 normalizeFilePath 标准化路径显示
27
+ if (process.platform === 'win32') {
28
+ actualCwd = (0, file_1.normalizeFilePath)(actualCwd);
29
+ }
30
+ (0, log_1.logInfo)(`[setCwd] 工作目录切换完成,实际目录: ${actualCwd}`);
31
+ }
32
+ /**
33
+ * 获取当前工作目录(返回PersistentShell实例的当前目录,动态变化)
34
+ *
35
+ * 使用场景:
36
+ * - 文件操作:GlobTool和GrepTool等工具进行文件搜索时
37
+ * - 路径解析:文件编辑工具解析相对路径时
38
+ * - 代码风格检测:查找项目配置文件时
39
+ * - 命令执行:执行shell命令时的工作目录
40
+ *
41
+ * @returns 当前工作目录路径(Windows平台下自动标准化Unix风格路径)
42
+ */
43
+ function getCwd() {
44
+ const currentPath = shell_1.PersistentShell.getInstance().pwd();
45
+ // Windows平台下使用 normalizeFilePath 统一标准化路径
46
+ if (process.platform === 'win32') {
47
+ return (0, file_1.normalizeFilePath)(currentPath);
48
+ }
49
+ return currentPath;
50
+ }
51
+ const STATE = {
52
+ originalCwd: (0, process_1.cwd)(),
53
+ };
54
+ /**
55
+ * 设置原始工作目录(静态值,一旦设置就不会改变)
56
+ *
57
+ * 使用场景:
58
+ * - core启动时设置:当使用 workingDir 参数时,同时设置原始和当前目录
59
+ *
60
+ * @param cwd 要设置的原始工作目录路径
61
+ */
62
+ function setOriginalCwd(cwd) {
63
+ // Windows 平台下标准化路径(处理 /c/Users/... 格式)
64
+ if (process.platform === 'win32') {
65
+ STATE.originalCwd = (0, file_1.normalizeFilePath)(cwd);
66
+ }
67
+ else {
68
+ STATE.originalCwd = cwd;
69
+ }
70
+ }
71
+ /**
72
+ * 获取原始工作目录(返回进程启动时的工作目录,存储在全局状态中)
73
+ *
74
+ * 使用场景:
75
+ * - 重置操作:在 /clear 命令中重置到启动目录
76
+ * - 项目标识:显示项目信息时使用原始目录
77
+ * - 权限上下文:在权限选项中显示当前工作目录
78
+ *
79
+ * @returns 原始工作目录路径
80
+ */
81
+ function getOriginalCwd() {
82
+ return STATE.originalCwd;
83
+ }
84
+ //# sourceMappingURL=cwd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cwd.js","sourceRoot":"","sources":["../../src/util/cwd.ts"],"names":[],"mappings":";;AAeA,wBAaC;AAaD,wBASC;AAgBD,wCAOC;AAYD,wCAEC;AAvFD,mCAAyC;AACzC,qCAA6B;AAC7B,+BAA+B;AAC/B,iCAA0C;AAE1C;;;;;;;;;GASG;AACI,KAAK,UAAU,MAAM,CAAC,GAAW;IACtC,yCAAyC;IACzC,uBAAe,CAAC,OAAO,EAAE,CAAC;IAE1B,MAAM,uBAAe,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,SAAS,GAAG,uBAAe,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;IAEpD,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,SAAS,GAAG,IAAA,wBAAiB,EAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,IAAA,aAAO,EAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,MAAM;IACpB,MAAM,WAAW,GAAG,uBAAe,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAA;IAEvD,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAA,wBAAiB,EAAC,WAAW,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,KAAK,GAEP;IACF,WAAW,EAAE,IAAA,aAAG,GAAE;CACnB,CAAA;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,uCAAuC;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,KAAK,CAAC,WAAW,GAAG,IAAA,wBAAiB,EAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,WAAW,GAAG,GAAG,CAAA;IACzB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,cAAc;IAC5B,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type Hunk } from 'diff';
2
+ export declare function getPatch({ filePath, fileContents, oldStr, newStr, }: {
3
+ filePath: string;
4
+ fileContents: string;
5
+ oldStr: string;
6
+ newStr: string;
7
+ }): Hunk[];
8
+ export declare function getUpdateSummary(filePath: string, structuredPatch?: Hunk[]): string;
9
+ export declare function getDiffContent(structuredPatch?: Hunk[]): string;
10
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/util/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,MAAM,CAAA;AAajD,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,IAAI,EAAE,CAqBT;AAGD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,IAAI,EAAE,GACvB,MAAM,CAiCR;AAGD,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAoB/D"}