tianxincode 1.0.48 → 1.0.49

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 (298) hide show
  1. package/README.md +200 -200
  2. package/dist/cli/commands.js +18 -18
  3. package/dist/core/ai/agents/caller/prompts/role.txt +50 -50
  4. package/dist/core/ai/agents/chat/chat.agent.js +30 -30
  5. package/dist/core/ai/agents/chat/prompts/role.txt +30 -30
  6. package/dist/core/ai/agents/code/code.agent.js +6 -6
  7. package/dist/core/ai/agents/code/prompts/role.txt +50 -50
  8. package/dist/core/ai/agents/common/prompt/role.txt +51 -51
  9. package/dist/core/ai/agents/common/prompts.js +26 -26
  10. package/dist/core/ai/agents/design/design.agent.js +6 -6
  11. package/dist/core/ai/agents/design/prompts/role.txt +36 -36
  12. package/dist/core/ai/agents/dream/prompts/init.txt +20 -20
  13. package/dist/core/ai/agents/mem/mem.agent.js +5 -5
  14. package/dist/core/ai/agents/mem/prompts/role.txt +35 -35
  15. package/dist/core/ai/agents/skill/prompts/role.txt +61 -61
  16. package/dist/core/ai/agents/skill/skill.agent.js +26 -26
  17. package/dist/core/ai/agents/summarizer/prompts/role.txt +30 -30
  18. package/dist/core/ai/agents/task/prompts/role.txt +50 -50
  19. package/dist/core/ai/agents/task/task.agent.js +30 -30
  20. package/dist/core/db/db.service.d.ts.map +1 -1
  21. package/dist/core/db/db.service.js +2 -0
  22. package/dist/core/db/db.service.js.map +1 -1
  23. package/dist/core/db/init_sql/ai_log.init.js +15 -15
  24. package/dist/core/db/init_sql/code_snippet.init.js +11 -11
  25. package/dist/core/db/init_sql/config.init.js +15 -15
  26. package/dist/core/db/init_sql/custom_action.init.js +10 -10
  27. package/dist/core/db/init_sql/dingding.init.js +9 -9
  28. package/dist/core/db/init_sql/email.init.js +14 -14
  29. package/dist/core/db/init_sql/lsp.init.js +8 -8
  30. package/dist/core/db/init_sql/message_file.init.js +11 -11
  31. package/dist/core/db/init_sql/project.init.js +20 -20
  32. package/dist/core/db/init_sql/provider.init.js +35 -35
  33. package/dist/core/db/init_sql/scheduler.init.js +32 -32
  34. package/dist/core/db/init_sql/session.init.js +23 -23
  35. package/dist/core/db/init_sql/spec.init.js +15 -15
  36. package/dist/core/db/init_sql/waf_gateway.init.js +9 -9
  37. package/dist/core/db/init_sql/zihao.init.js +11 -11
  38. package/dist/core/lsp/sql.js +11 -11
  39. package/dist/core/tools/provider/bash.txt +47 -47
  40. package/dist/core/tools/provider/code_search.txt +20 -20
  41. package/dist/core/tools/provider/edit_file.txt +13 -13
  42. package/dist/core/tools/provider/glob.txt +12 -12
  43. package/dist/core/tools/provider/grep.txt +14 -14
  44. package/dist/core/tools/provider/lsp.txt +19 -19
  45. package/dist/core/tools/provider/memory.txt +21 -21
  46. package/dist/core/tools/provider/read_file.txt +17 -17
  47. package/dist/core/tools/provider/todo_read.txt +16 -16
  48. package/dist/core/tools/provider/todo_write.txt +48 -48
  49. package/dist/core/tools/provider/web_fetch.txt +17 -17
  50. package/dist/core/tools/provider/web_search.txt +18 -18
  51. package/dist/core/tools/provider/write_file.txt +11 -11
  52. package/dist/gateway/api/skill/detail_skill.d.ts.map +1 -1
  53. package/dist/gateway/api/skill/detail_skill.js +7 -5
  54. package/dist/gateway/api/skill/detail_skill.js.map +1 -1
  55. package/dist/gateway/cli/commands.js +18 -18
  56. package/dist/modules/ai/agents/chat/prompts/role.txt +30 -30
  57. package/dist/modules/ai/agents/code/prompts/role.txt +50 -50
  58. package/dist/modules/ai/agents/mem/prompts/role.txt +35 -35
  59. package/dist/modules/ai/agents/skill/prompts/role.txt +61 -61
  60. package/dist/modules/ai/agents/task/prompts/role.txt +50 -50
  61. package/dist/modules/ai/ai-log.service.js +10 -10
  62. package/dist/modules/ai/provider/openai/prompt/role.txt +51 -51
  63. package/dist/modules/ai/summarizer/summarizer.prompts.js +30 -30
  64. package/dist/modules/config/config.service.js +5 -5
  65. package/dist/modules/db/db.service.js +252 -252
  66. package/dist/modules/email/email.config.repository.js +1 -1
  67. package/dist/modules/repositories/project.repository.d.ts +28 -0
  68. package/dist/modules/repositories/project.repository.d.ts.map +1 -0
  69. package/dist/modules/repositories/project.repository.js +47 -0
  70. package/dist/modules/repositories/project.repository.js.map +1 -0
  71. package/dist/modules/scheduler/task-log.service.js +1 -1
  72. package/dist/modules/services/project/project.service.d.ts +14 -0
  73. package/dist/modules/services/project/project.service.d.ts.map +1 -0
  74. package/dist/modules/services/project/project.service.js +47 -0
  75. package/dist/modules/services/project/project.service.js.map +1 -0
  76. package/dist/modules/skill/skill.txt +36 -36
  77. package/dist/modules/spec/spec.injector.js +24 -24
  78. package/dist/modules/tools/provider/bash.txt +47 -47
  79. package/dist/modules/tools/provider/code_search.txt +20 -20
  80. package/dist/modules/tools/provider/edit_file.txt +13 -13
  81. package/dist/modules/tools/provider/glob.txt +12 -12
  82. package/dist/modules/tools/provider/grep.txt +14 -14
  83. package/dist/modules/tools/provider/lsp.txt +19 -19
  84. package/dist/modules/tools/provider/memory.txt +21 -21
  85. package/dist/modules/tools/provider/read_file.txt +17 -17
  86. package/dist/modules/tools/provider/todo_read.txt +16 -16
  87. package/dist/modules/tools/provider/todo_write.txt +48 -48
  88. package/dist/modules/tools/provider/web_fetch.txt +17 -17
  89. package/dist/modules/tools/provider/web_search.txt +18 -18
  90. package/dist/modules/tools/provider/write_file.txt +11 -11
  91. package/dist/modules/waf-gateway/waf-gateway.module.js +8 -8
  92. package/dist/modules/waf-gateway/waf-gateway.service.js +12 -12
  93. package/dist/repositories/project.repository.d.ts +28 -0
  94. package/dist/repositories/project.repository.d.ts.map +1 -0
  95. package/dist/repositories/project.repository.js +47 -0
  96. package/dist/repositories/project.repository.js.map +1 -0
  97. package/dist/repository/ai_log.repository.js +1 -1
  98. package/dist/repository/config.repository.js +5 -5
  99. package/dist/repository/email.repository.js +1 -1
  100. package/dist/repository/memory.repository.js +1 -1
  101. package/dist/repository/project.repository.js +3 -3
  102. package/dist/repository/scheduler.repository.js +2 -2
  103. package/dist/repository/session.repository.js +1 -1
  104. package/dist/repository/zihao-config.repository.js +1 -1
  105. package/dist/services/skill/skill.tool.d.ts.map +1 -1
  106. package/dist/services/skill/skill.tool.js +6 -1
  107. package/dist/services/skill/skill.tool.js.map +1 -1
  108. package/dist/services/skill/skill.txt +36 -36
  109. package/package.json +76 -76
  110. package/scripts/copy-txt.js +31 -31
  111. package/scripts/ink-scroll-demo.tsx +147 -147
  112. package/tsconfig.test.json +9 -9
  113. package/web/dist/assets/{ConfirmDialog-B2bVsPFI.js → ConfirmDialog-B03GcCHQ.js} +1 -1
  114. package/web/dist/assets/PcLayout-CYW3zqcs.css +1 -0
  115. package/web/dist/assets/{PcLayout-DeXNBHu2.js → PcLayout-ZTdJNg7G.js} +1 -1
  116. package/web/dist/assets/{aiLogsView-JvjhLmyo.js → aiLogsView-Bt8Xg1Qx.js} +1 -1
  117. package/web/dist/assets/{cssMode-sYHhwUZh.js → cssMode-CBb6D87U.js} +1 -1
  118. package/web/dist/assets/{customActionsView-Cvmzxvl4.js → customActionsView-DdjnHzwm.js} +1 -1
  119. package/web/dist/assets/deployView-CD7ji9IS.css +1 -0
  120. package/web/dist/assets/{deployView-CjV4ySrf.js → deployView-Cj51_Job.js} +1 -1
  121. package/web/dist/assets/designView-C3pSX4nP.css +1 -0
  122. package/web/dist/assets/designView-RT8tKEN9.js +18 -0
  123. package/web/dist/assets/devWorkflowView-BTozmaiN.js +36 -0
  124. package/web/dist/assets/devWorkflowView-DYhIfbCB.css +1 -0
  125. package/web/dist/assets/devWorkflowViewApp-CErbhC2s.css +1 -0
  126. package/web/dist/assets/{devWorkflowViewApp-DPlFgiS_.js → devWorkflowViewApp-DLslXEq9.js} +3 -3
  127. package/web/dist/assets/{fileZihao-DvZmuTYu.js → fileZihao-CtZ4bUIH.js} +1 -1
  128. package/web/dist/assets/{freemarker2-DTyAQBBj.js → freemarker2-CX3jc3l2.js} +1 -1
  129. package/web/dist/assets/gitChanges-D6QxPcii.css +1 -0
  130. package/web/dist/assets/{gitChanges-Cpf4HHoF.js → gitChanges-DFRvzL5I.js} +1 -1
  131. package/web/dist/assets/gitChangesApp-Bjn-MCmr.css +1 -0
  132. package/web/dist/assets/{gitChangesApp-BOURDd_l.js → gitChangesApp-ZI7-V8oB.js} +2 -2
  133. package/web/dist/assets/{handlebars-DiWIXxOG.js → handlebars-CTaQD6FN.js} +1 -1
  134. package/web/dist/assets/{html-BCQWkFzH.js → html-BruJsfYv.js} +1 -1
  135. package/web/dist/assets/{htmlMode-BbMA34cR.js → htmlMode-wewroXLr.js} +1 -1
  136. package/web/dist/assets/{index-C_tz4Wda.css → index-C0xmVTIn.css} +1 -1
  137. package/web/dist/assets/{index-C7axH05o.js → index-Cn73hS12.js} +9 -9
  138. package/web/dist/assets/{javascript-By4MYHaO.js → javascript-B4ku8P1-.js} +1 -1
  139. package/web/dist/assets/{jsonMode-5JIz7tDN.js → jsonMode-BIvVuBMG.js} +1 -1
  140. package/web/dist/assets/{liquid-BQBVii4f.js → liquid-Bo3G0Ep7.js} +1 -1
  141. package/web/dist/assets/{mdx-Cwk7nqzM.js → mdx-Duv0ylZz.js} +1 -1
  142. package/web/dist/assets/{mediaChat-DivTDoIv.js → mediaChat-RT7iqqYb.js} +1 -1
  143. package/web/dist/assets/{python-L_kGfe1T.js → python-CEhCctGm.js} +1 -1
  144. package/web/dist/assets/{razor-XGuHliMI.js → razor-DPK8nTD7.js} +1 -1
  145. package/web/dist/assets/{taskView-BcJ3LAxp.js → taskView-sOyebRqn.js} +1 -1
  146. package/web/dist/assets/{terminalView-q-UKzK0M.js → terminalView-GTYtDlus.js} +2 -2
  147. package/web/dist/assets/{terminalView-CQVYh6D3.css → terminalView-eZ0agsPP.css} +1 -1
  148. package/web/dist/assets/{tsMode-SuiD3mJa.js → tsMode-BZvUU1nf.js} +1 -1
  149. package/web/dist/assets/{typescript-DJcyqRjT.js → typescript-CmEn-k1B.js} +1 -1
  150. package/web/dist/assets/{wikiView-ygHSGyPp.css → wikiView-C-oqMnJM.css} +1 -1
  151. package/web/dist/assets/{wikiView-B3GIPUlD.js → wikiView-CRjg-cZ8.js} +1 -1
  152. package/web/dist/assets/{xml-DQgCzk55.js → xml-bjvdKeyy.js} +1 -1
  153. package/web/dist/assets/{yaml-DBdEYBPA.js → yaml-N5RXWxJk.js} +1 -1
  154. package/web/dist/index.html +2 -2
  155. package/web/package.json +28 -28
  156. package/dist/modules/ai/react/index.d.ts +0 -5
  157. package/dist/modules/ai/react/index.d.ts.map +0 -1
  158. package/dist/modules/ai/react/index.js +0 -4
  159. package/dist/modules/ai/react/index.js.map +0 -1
  160. package/dist/modules/ai/react/prompt/role.txt +0 -51
  161. package/dist/modules/ai/react/provider.parser.d.ts +0 -20
  162. package/dist/modules/ai/react/provider.parser.d.ts.map +0 -1
  163. package/dist/modules/ai/react/provider.parser.js +0 -88
  164. package/dist/modules/ai/react/provider.parser.js.map +0 -1
  165. package/dist/modules/ai/react/react.parser.d.ts +0 -80
  166. package/dist/modules/ai/react/react.parser.d.ts.map +0 -1
  167. package/dist/modules/ai/react/react.parser.js +0 -365
  168. package/dist/modules/ai/react/react.parser.js.map +0 -1
  169. package/dist/modules/ai/react/react.prompts.d.ts +0 -26
  170. package/dist/modules/ai/react/react.prompts.d.ts.map +0 -1
  171. package/dist/modules/ai/react/react.prompts.js +0 -170
  172. package/dist/modules/ai/react/react.prompts.js.map +0 -1
  173. package/dist/modules/ai/react/react.types.d.ts +0 -50
  174. package/dist/modules/ai/react/react.types.d.ts.map +0 -1
  175. package/dist/modules/ai/react/react.types.js +0 -2
  176. package/dist/modules/ai/react/react.types.js.map +0 -1
  177. package/dist/modules/ai/react/react.validator.d.ts +0 -14
  178. package/dist/modules/ai/react/react.validator.d.ts.map +0 -1
  179. package/dist/modules/ai/react/react.validator.js +0 -53
  180. package/dist/modules/ai/react/react.validator.js.map +0 -1
  181. package/dist/modules/ai/react.agent.d.ts +0 -82
  182. package/dist/modules/ai/react.agent.d.ts.map +0 -1
  183. package/dist/modules/ai/react.agent.js +0 -220
  184. package/dist/modules/ai/react.agent.js.map +0 -1
  185. package/dist/modules/skill/skill.service.d.ts +0 -72
  186. package/dist/modules/skill/skill.service.d.ts.map +0 -1
  187. package/dist/modules/skill/skill.service.js +0 -283
  188. package/dist/modules/skill/skill.service.js.map +0 -1
  189. package/dist/modules/tools/builtin/bash.d.ts +0 -3
  190. package/dist/modules/tools/builtin/bash.d.ts.map +0 -1
  191. package/dist/modules/tools/builtin/bash.js +0 -126
  192. package/dist/modules/tools/builtin/bash.js.map +0 -1
  193. package/dist/modules/tools/builtin/bash.tool.d.ts +0 -6
  194. package/dist/modules/tools/builtin/bash.tool.d.ts.map +0 -1
  195. package/dist/modules/tools/builtin/bash.tool.js +0 -52
  196. package/dist/modules/tools/builtin/bash.tool.js.map +0 -1
  197. package/dist/modules/tools/builtin/bash.txt +0 -69
  198. package/dist/modules/tools/builtin/code_search.d.ts +0 -3
  199. package/dist/modules/tools/builtin/code_search.d.ts.map +0 -1
  200. package/dist/modules/tools/builtin/code_search.js +0 -86
  201. package/dist/modules/tools/builtin/code_search.js.map +0 -1
  202. package/dist/modules/tools/builtin/code_search.txt +0 -41
  203. package/dist/modules/tools/builtin/edit-file.tool.d.ts +0 -6
  204. package/dist/modules/tools/builtin/edit-file.tool.d.ts.map +0 -1
  205. package/dist/modules/tools/builtin/edit-file.tool.js +0 -58
  206. package/dist/modules/tools/builtin/edit-file.tool.js.map +0 -1
  207. package/dist/modules/tools/builtin/edit_file.d.ts +0 -3
  208. package/dist/modules/tools/builtin/edit_file.d.ts.map +0 -1
  209. package/dist/modules/tools/builtin/edit_file.js +0 -105
  210. package/dist/modules/tools/builtin/edit_file.js.map +0 -1
  211. package/dist/modules/tools/builtin/edit_file.txt +0 -61
  212. package/dist/modules/tools/builtin/glob.d.ts +0 -3
  213. package/dist/modules/tools/builtin/glob.d.ts.map +0 -1
  214. package/dist/modules/tools/builtin/glob.js +0 -85
  215. package/dist/modules/tools/builtin/glob.js.map +0 -1
  216. package/dist/modules/tools/builtin/glob.tool.d.ts +0 -6
  217. package/dist/modules/tools/builtin/glob.tool.d.ts.map +0 -1
  218. package/dist/modules/tools/builtin/glob.tool.js +0 -81
  219. package/dist/modules/tools/builtin/glob.tool.js.map +0 -1
  220. package/dist/modules/tools/builtin/glob.txt +0 -33
  221. package/dist/modules/tools/builtin/grep.d.ts +0 -3
  222. package/dist/modules/tools/builtin/grep.d.ts.map +0 -1
  223. package/dist/modules/tools/builtin/grep.js +0 -94
  224. package/dist/modules/tools/builtin/grep.js.map +0 -1
  225. package/dist/modules/tools/builtin/grep.tool.d.ts +0 -6
  226. package/dist/modules/tools/builtin/grep.tool.d.ts.map +0 -1
  227. package/dist/modules/tools/builtin/grep.tool.js +0 -96
  228. package/dist/modules/tools/builtin/grep.tool.js.map +0 -1
  229. package/dist/modules/tools/builtin/grep.txt +0 -37
  230. package/dist/modules/tools/builtin/index.d.ts +0 -8
  231. package/dist/modules/tools/builtin/index.d.ts.map +0 -1
  232. package/dist/modules/tools/builtin/index.js +0 -80
  233. package/dist/modules/tools/builtin/index.js.map +0 -1
  234. package/dist/modules/tools/builtin/lsp.d.ts +0 -7
  235. package/dist/modules/tools/builtin/lsp.d.ts.map +0 -1
  236. package/dist/modules/tools/builtin/lsp.js +0 -126
  237. package/dist/modules/tools/builtin/lsp.js.map +0 -1
  238. package/dist/modules/tools/builtin/lsp.txt +0 -45
  239. package/dist/modules/tools/builtin/memory.d.ts +0 -3
  240. package/dist/modules/tools/builtin/memory.d.ts.map +0 -1
  241. package/dist/modules/tools/builtin/memory.js +0 -77
  242. package/dist/modules/tools/builtin/memory.js.map +0 -1
  243. package/dist/modules/tools/builtin/memory.txt +0 -58
  244. package/dist/modules/tools/builtin/read-file.tool.d.ts +0 -6
  245. package/dist/modules/tools/builtin/read-file.tool.d.ts.map +0 -1
  246. package/dist/modules/tools/builtin/read-file.tool.js +0 -46
  247. package/dist/modules/tools/builtin/read-file.tool.js.map +0 -1
  248. package/dist/modules/tools/builtin/read_file.d.ts +0 -3
  249. package/dist/modules/tools/builtin/read_file.d.ts.map +0 -1
  250. package/dist/modules/tools/builtin/read_file.js +0 -107
  251. package/dist/modules/tools/builtin/read_file.js.map +0 -1
  252. package/dist/modules/tools/builtin/read_file.txt +0 -38
  253. package/dist/modules/tools/builtin/todo_read.d.ts +0 -6
  254. package/dist/modules/tools/builtin/todo_read.d.ts.map +0 -1
  255. package/dist/modules/tools/builtin/todo_read.js +0 -25
  256. package/dist/modules/tools/builtin/todo_read.js.map +0 -1
  257. package/dist/modules/tools/builtin/todo_read.txt +0 -34
  258. package/dist/modules/tools/builtin/todo_write.d.ts +0 -6
  259. package/dist/modules/tools/builtin/todo_write.d.ts.map +0 -1
  260. package/dist/modules/tools/builtin/todo_write.js +0 -46
  261. package/dist/modules/tools/builtin/todo_write.js.map +0 -1
  262. package/dist/modules/tools/builtin/todo_write.txt +0 -67
  263. package/dist/modules/tools/builtin/web_fetch.d.ts +0 -3
  264. package/dist/modules/tools/builtin/web_fetch.d.ts.map +0 -1
  265. package/dist/modules/tools/builtin/web_fetch.js +0 -52
  266. package/dist/modules/tools/builtin/web_fetch.js.map +0 -1
  267. package/dist/modules/tools/builtin/web_fetch.txt +0 -38
  268. package/dist/modules/tools/builtin/web_search.d.ts +0 -3
  269. package/dist/modules/tools/builtin/web_search.d.ts.map +0 -1
  270. package/dist/modules/tools/builtin/web_search.js +0 -100
  271. package/dist/modules/tools/builtin/web_search.js.map +0 -1
  272. package/dist/modules/tools/builtin/web_search.txt +0 -43
  273. package/dist/modules/tools/builtin/write-file.tool.d.ts +0 -6
  274. package/dist/modules/tools/builtin/write-file.tool.d.ts.map +0 -1
  275. package/dist/modules/tools/builtin/write-file.tool.js +0 -38
  276. package/dist/modules/tools/builtin/write-file.tool.js.map +0 -1
  277. package/dist/modules/tools/builtin/write_file.d.ts +0 -3
  278. package/dist/modules/tools/builtin/write_file.d.ts.map +0 -1
  279. package/dist/modules/tools/builtin/write_file.js +0 -61
  280. package/dist/modules/tools/builtin/write_file.js.map +0 -1
  281. package/dist/modules/tools/builtin/write_file.txt +0 -58
  282. package/dist/modules/tools/provider/openai/tools.d.ts +0 -3
  283. package/dist/modules/tools/provider/openai/tools.d.ts.map +0 -1
  284. package/dist/modules/tools/provider/openai/tools.js +0 -212
  285. package/dist/modules/tools/provider/openai/tools.js.map +0 -1
  286. package/dist/modules/tools/provider/skill.d.ts +0 -6
  287. package/dist/modules/tools/provider/skill.d.ts.map +0 -1
  288. package/dist/modules/tools/provider/skill.js +0 -64
  289. package/dist/modules/tools/provider/skill.js.map +0 -1
  290. package/web/dist/assets/PcLayout-L-XuK1oQ.css +0 -1
  291. package/web/dist/assets/deployView-hCh3_M8H.css +0 -1
  292. package/web/dist/assets/designView-CqZ75hOS.css +0 -1
  293. package/web/dist/assets/designView-DrUNRVEE.js +0 -18
  294. package/web/dist/assets/devWorkflowView-BpdJTMEb.js +0 -36
  295. package/web/dist/assets/devWorkflowView-D7EKjoLj.css +0 -1
  296. package/web/dist/assets/devWorkflowViewApp-BYYMIdCm.css +0 -1
  297. package/web/dist/assets/gitChanges-BYj-Y2K-.css +0 -1
  298. package/web/dist/assets/gitChangesApp-Btw-XKcP.css +0 -1
@@ -0,0 +1,28 @@
1
+ export interface Project {
2
+ id: string;
3
+ name: string;
4
+ path: string;
5
+ description: string;
6
+ is_active: number;
7
+ is_favorite: number;
8
+ last_opened_at: string;
9
+ }
10
+ export declare class ProjectRepository {
11
+ private normalizeId;
12
+ findAll(): Project[];
13
+ findById(id: string | string[]): Project | undefined;
14
+ findByPath(path: string): Project | undefined;
15
+ findActive(): Project | undefined;
16
+ insert(data: {
17
+ name: string;
18
+ path: string;
19
+ description?: string;
20
+ }): Project;
21
+ update(id: string, data: {
22
+ name?: string;
23
+ description?: string;
24
+ }): void;
25
+ setActive(id: string): void;
26
+ delete(id: string): void;
27
+ }
28
+ //# sourceMappingURL=project.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.repository.d.ts","sourceRoot":"","sources":["../../../src/modules/repositories/project.repository.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW;IAInB,OAAO,IAAI,OAAO,EAAE;IAMpB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS;IAIpD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI7C,UAAU,IAAI,OAAO,GAAG,SAAS;IAIjC,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAS3E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBhE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK3B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGzB"}
@@ -0,0 +1,47 @@
1
+ import { dbService } from '../db/index.js';
2
+ export class ProjectRepository {
3
+ normalizeId(id) {
4
+ return Array.isArray(id) ? id[0] : id;
5
+ }
6
+ findAll() {
7
+ return dbService.all('SELECT * FROM projects ORDER BY last_opened_at DESC');
8
+ }
9
+ findById(id) {
10
+ return dbService.get('SELECT * FROM projects WHERE id = ?', [this.normalizeId(id)]);
11
+ }
12
+ findByPath(path) {
13
+ return dbService.get('SELECT * FROM projects WHERE path = ?', [path]);
14
+ }
15
+ findActive() {
16
+ return dbService.get('SELECT * FROM projects WHERE is_active = 1 LIMIT 1');
17
+ }
18
+ insert(data) {
19
+ const id = crypto.randomUUID();
20
+ dbService.run('INSERT INTO projects (id, name, path, description, is_active, is_favorite, last_opened_at) VALUES (?, ?, ?, ?, 1, 0, ?)', [id, data.name, data.path, data.description || '', new Date().toISOString()]);
21
+ return this.findById(id);
22
+ }
23
+ update(id, data) {
24
+ const sets = [];
25
+ const values = [];
26
+ if (data.name) {
27
+ sets.push('name = ?');
28
+ values.push(data.name);
29
+ }
30
+ if (data.description !== undefined) {
31
+ sets.push('description = ?');
32
+ values.push(data.description);
33
+ }
34
+ if (sets.length > 0) {
35
+ values.push(id);
36
+ dbService.run(`UPDATE projects SET ${sets.join(', ')} WHERE id = ?`, values);
37
+ }
38
+ }
39
+ setActive(id) {
40
+ dbService.run('UPDATE projects SET is_active = 0');
41
+ dbService.run('UPDATE projects SET is_active = 1, last_opened_at = ? WHERE id = ?', [new Date().toISOString(), id]);
42
+ }
43
+ delete(id) {
44
+ dbService.run('DELETE FROM projects WHERE id = ?', [id]);
45
+ }
46
+ }
47
+ //# sourceMappingURL=project.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.repository.js","sourceRoot":"","sources":["../../../src/modules/repositories/project.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,MAAM,OAAO,iBAAiB;IACpB,WAAW,CAAC,EAAqB;QACvC,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,OAAO,SAAS,CAAC,GAAG,CAClB,qDAAqD,CACtD,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,EAAqB;QAC5B,OAAO,SAAS,CAAC,GAAG,CAAU,qCAAqC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,SAAS,CAAC,GAAG,CAAU,uCAAuC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,UAAU;QACR,OAAO,SAAS,CAAC,GAAG,CAAU,oDAAoD,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,CAAC,IAA0D;QAC/D,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,SAAS,CAAC,GAAG,CACX,yHAAyH,EACzH,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAC7E,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,IAA6C;QAC9D,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,SAAS,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,SAAS,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,SAAS,CAAC,GAAG,CAAC,oEAAoE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,MAAM,CAAC,EAAU;QACf,SAAS,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { dbService } from '../db/db.service.js';
2
2
  export class TaskLogService {
3
3
  createLog(log) {
4
- dbService.run(`INSERT INTO task_logs (id, task_id, status, prompt, result, error, duration, executed_at)
4
+ dbService.run(`INSERT INTO task_logs (id, task_id, status, prompt, result, error, duration, executed_at)
5
5
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
6
6
  log.id,
7
7
  log.taskId,
@@ -0,0 +1,14 @@
1
+ import { type Project } from '../../repositories/project.repository.js';
2
+ export declare class ProjectService {
3
+ private projectRepo;
4
+ getCurrentProject(): Project | undefined;
5
+ getCurrentProjectPath(): string;
6
+ getAllProjects(): Project[];
7
+ getProjectById(id: string | string[]): Project | undefined;
8
+ setCurrentProject(projectId: string | string[]): void;
9
+ createProject(name: string, projectPath: string, description?: string): Project;
10
+ createOrGetProject(): Project;
11
+ deleteProject(projectId: string | string[]): void;
12
+ }
13
+ export declare const projectService: ProjectService;
14
+ //# sourceMappingURL=project.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/services/project/project.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,0CAA0C,CAAC;AAE3F,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAA2B;IAE9C,iBAAiB,IAAI,OAAO,GAAG,SAAS;IAIxC,qBAAqB,IAAI,MAAM;IAK/B,cAAc,IAAI,OAAO,EAAE;IAI3B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS;IAI1D,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IASrD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IAS/E,kBAAkB,IAAI,OAAO;IAM7B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;CAIlD;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import * as path from 'path';
2
+ import { ProjectRepository } from '../../repositories/project.repository.js';
3
+ export class ProjectService {
4
+ constructor() {
5
+ this.projectRepo = new ProjectRepository();
6
+ }
7
+ getCurrentProject() {
8
+ return this.projectRepo.findActive();
9
+ }
10
+ getCurrentProjectPath() {
11
+ const project = this.getCurrentProject();
12
+ return project?.path || process.cwd();
13
+ }
14
+ getAllProjects() {
15
+ return this.projectRepo.findAll();
16
+ }
17
+ getProjectById(id) {
18
+ return this.projectRepo.findById(id);
19
+ }
20
+ setCurrentProject(projectId) {
21
+ const normalizedId = Array.isArray(projectId) ? projectId[0] : projectId;
22
+ const project = this.projectRepo.findById(normalizedId);
23
+ if (!project) {
24
+ throw new Error('Project not found');
25
+ }
26
+ this.projectRepo.setActive(normalizedId);
27
+ }
28
+ createProject(name, projectPath, description) {
29
+ const existing = this.projectRepo.findByPath(projectPath);
30
+ if (existing) {
31
+ this.projectRepo.setActive(existing.id);
32
+ return existing;
33
+ }
34
+ return this.projectRepo.insert({ name, path: projectPath, description });
35
+ }
36
+ createOrGetProject() {
37
+ const cwd = process.cwd();
38
+ const name = path.basename(cwd);
39
+ return this.createProject(name, cwd);
40
+ }
41
+ deleteProject(projectId) {
42
+ const normalizedId = Array.isArray(projectId) ? projectId[0] : projectId;
43
+ this.projectRepo.delete(normalizedId);
44
+ }
45
+ }
46
+ export const projectService = new ProjectService();
47
+ //# sourceMappingURL=project.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../../../src/modules/services/project/project.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAgB,MAAM,0CAA0C,CAAC;AAE3F,MAAM,OAAO,cAAc;IAA3B;QACU,gBAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;IA+ChD,CAAC;IA7CC,iBAAiB;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,qBAAqB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,EAAqB;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,WAAmB,EAAE,WAAoB;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,kBAAkB;QAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,SAA4B;QACxC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -1,36 +1,36 @@
1
- ### 工具skill
2
- 加载一个专门的 Skill(技能),该技能提供特定领域的指令和工作流程。
3
-
4
- **功能**:
5
- - 当你识别到任务匹配以下列出的可用技能时,使用此工具加载完整的技能说明
6
- - Skill 会将详细的指令、工作流程和访问绑定资源(脚本、参考、模板)注入对话上下文
7
- - 工具输出包含一个 `<skill_content name="...">` 块,其中包含加载的内容
8
-
9
- **使用说明**:
10
- - 当你识别到任务匹配某个可用 Skill 时,使用此工具加载该技能的完整说明
11
- - 技能会注入详细的指令、工作流程,以及对捆绑资源(脚本、参考、模板)的访问
12
- - 工具输出包含一个 `<skill_content name="...">` 块,其中包含加载的内容
13
- - 该技能的相对路径(如 scripts/、reference/)是相对于技能的基础目录
14
-
15
- **当前可用的 Skills**:
16
- Invoke this tool to load a skill when a task matches one of the available skills listed above.
17
-
18
- 举例:
19
- ```xml
20
- <react>
21
- <thought>加载代码审查技能</thought>
22
- <action>
23
- <action_name>skill</action_name>
24
- <action_input>
25
- <name>code-review</name>
26
- </action_input>
27
- </action>
28
- <keep_context>true</keep_context>
29
- </react>
30
- ```
31
-
32
- 参数说明:
33
-
34
- | 字段 | 类型 | 说明 |
35
- |------|------|
36
- | `name` | string | Skill 的名称(必需) |
1
+ ### 工具skill
2
+ 加载一个专门的 Skill(技能),该技能提供特定领域的指令和工作流程。
3
+
4
+ **功能**:
5
+ - 当你识别到任务匹配以下列出的可用技能时,使用此工具加载完整的技能说明
6
+ - Skill 会将详细的指令、工作流程和访问绑定资源(脚本、参考、模板)注入对话上下文
7
+ - 工具输出包含一个 `<skill_content name="...">` 块,其中包含加载的内容
8
+
9
+ **使用说明**:
10
+ - 当你识别到任务匹配某个可用 Skill 时,使用此工具加载该技能的完整说明
11
+ - 技能会注入详细的指令、工作流程,以及对捆绑资源(脚本、参考、模板)的访问
12
+ - 工具输出包含一个 `<skill_content name="...">` 块,其中包含加载的内容
13
+ - 该技能的相对路径(如 scripts/、reference/)是相对于技能的基础目录
14
+
15
+ **当前可用的 Skills**:
16
+ Invoke this tool to load a skill when a task matches one of the available skills listed above.
17
+
18
+ 举例:
19
+ ```xml
20
+ <react>
21
+ <thought>加载代码审查技能</thought>
22
+ <action>
23
+ <action_name>skill</action_name>
24
+ <action_input>
25
+ <name>code-review</name>
26
+ </action_input>
27
+ </action>
28
+ <keep_context>true</keep_context>
29
+ </react>
30
+ ```
31
+
32
+ 参数说明:
33
+
34
+ | 字段 | 类型 | 说明 |
35
+ |------|------|
36
+ | `name` | string | Skill 的名称(必需) |
@@ -16,45 +16,45 @@ export class SpecInjector {
16
16
  if (requiredSpecs.length === 0 && optionalSpecs.length === 0) {
17
17
  return '';
18
18
  }
19
- let injection = `
20
-
21
- ## 用户问题
22
- {{原始用户问题}}
23
-
24
- ## 规范说明
19
+ let injection = `
20
+
21
+ ## 用户问题
22
+ {{原始用户问题}}
23
+
24
+ ## 规范说明
25
25
  你来分析一下这个问题是否为一个开发任务,如果是开发任务你必须要先阅读规范,然后严格按照规范开发,如果不是开发任务可以选择不读`;
26
26
  if (requiredSpecs.length > 0) {
27
- injection += `
28
-
29
- ### 必读规范
27
+ injection += `
28
+
29
+ ### 必读规范
30
30
  <specs>`;
31
31
  for (const spec of requiredSpecs) {
32
32
  const specPath = this.getSpecPath(spec.name, projectPath);
33
- injection += `
34
- <spec>
35
- <name>${this.escapeXml(spec.name)}</name>
36
- <description>${this.escapeXml(spec.description)}</description>
37
- <path>${specPath}</path>
33
+ injection += `
34
+ <spec>
35
+ <name>${this.escapeXml(spec.name)}</name>
36
+ <description>${this.escapeXml(spec.description)}</description>
37
+ <path>${specPath}</path>
38
38
  </spec>`;
39
39
  }
40
- injection += `
40
+ injection += `
41
41
  </specs>`;
42
42
  }
43
43
  if (optionalSpecs.length > 0) {
44
- injection += `
45
-
46
- ### 选读规范
44
+ injection += `
45
+
46
+ ### 选读规范
47
47
  <specs>`;
48
48
  for (const spec of optionalSpecs) {
49
49
  const specPath = this.getSpecPath(spec.name, projectPath);
50
- injection += `
51
- <spec>
52
- <name>${this.escapeXml(spec.name)}</name>
53
- <description>${this.escapeXml(spec.description)}</description>
54
- <path>${specPath}</path>
50
+ injection += `
51
+ <spec>
52
+ <name>${this.escapeXml(spec.name)}</name>
53
+ <description>${this.escapeXml(spec.description)}</description>
54
+ <path>${specPath}</path>
55
55
  </spec>`;
56
56
  }
57
- injection += `
57
+ injection += `
58
58
  </specs>`;
59
59
  }
60
60
  return injection;
@@ -1,47 +1,47 @@
1
- ### 工具bash
2
- 在持久化 shell 会话中执行 bash 命令,支持可选超时,确保正确的处理和安全措施。
3
-
4
- 所有命令默认在 ${directory} 执行。如需在其他目录运行命令,使用 `workdir` 参数。**禁止使用 `cd <目录> && <命令>` 模式**,应该使用 `workdir` 参数代替。
5
-
6
- **重要**:此工具仅用于终端操作如 git、npm、docker 等。**禁止**用于文件操作(读取、写入、编辑、搜索文件)——请使用专用工具。
7
-
8
- ## 执行前验证
9
-
10
- 1. **目录验证**:
11
- - 如果命令会创建新目录或文件,先用 `ls` 验证父目录存在
12
- - 例如:运行 "mkdir foo/bar" 前,先用 `ls foo` 确认 "foo" 存在
13
-
14
- 2. **命令执行**:
15
- - 包含空格的路径必须用双引号包裹
16
- - 正确示例:`mkdir "/Users/name/My Documents"`
17
- - 错误示例:`mkdir /Users/name/My Documents`(会失败)
18
- - 确保正确引用后执行命令
19
-
20
- ## 使用说明
21
-
22
- - `command` 参数是必需的
23
- - 可选超时时间(毫秒),默认 120000ms(2分钟)
24
- - 请用 5-10 个字写清楚命令作用的描述
25
- - 如果输出超过 2000 行或 51200 字节,会被截断并保存到文件
26
- - 可以用 Read 的 offset/limit 读取特定部分,或用 grep 搜索全部内容
27
- - **禁止**使用 `head`、`tail` 等命令限制输出
28
-
29
- **禁止使用 bash 执行以下操作**,请使用专用工具:
30
- - 文件搜索:用 glob(不用 find 或 ls)
31
- - 内容搜索:用 grep(不用 grep 或 rg)
32
- - 读取文件:用 read_file(不用 cat/head/tail)
33
- - 编辑文件:用 edit_file(不用 sed/awk)
34
- - 写入文件:用 write_file(不用 echo >/cat <<EOF)
35
- - 输出文本:直接输出(不用 echo/printf)
36
-
37
- **多命令执行**:
38
- - 独立命令可以并行执行多个 Bash 调用
39
- - 顺序依赖的命令用 `&&` 链接(如 `git add . && git commit -m "message" && git push`)
40
- - 不关心前置结果时用 `;` 分隔
41
- - **禁止**使用换行符分隔命令(在引号字符串中除外)
42
-
43
- **注意事项**:
44
- - 禁止使用交互式 git 命令(如 `git rebase -i` 或 `git add -i`)
45
- - 除非用户明确要求,不要推送到远程
46
- - 没有变更时不创建空提交
47
-
1
+ ### 工具bash
2
+ 在持久化 shell 会话中执行 bash 命令,支持可选超时,确保正确的处理和安全措施。
3
+
4
+ 所有命令默认在 ${directory} 执行。如需在其他目录运行命令,使用 `workdir` 参数。**禁止使用 `cd <目录> && <命令>` 模式**,应该使用 `workdir` 参数代替。
5
+
6
+ **重要**:此工具仅用于终端操作如 git、npm、docker 等。**禁止**用于文件操作(读取、写入、编辑、搜索文件)——请使用专用工具。
7
+
8
+ ## 执行前验证
9
+
10
+ 1. **目录验证**:
11
+ - 如果命令会创建新目录或文件,先用 `ls` 验证父目录存在
12
+ - 例如:运行 "mkdir foo/bar" 前,先用 `ls foo` 确认 "foo" 存在
13
+
14
+ 2. **命令执行**:
15
+ - 包含空格的路径必须用双引号包裹
16
+ - 正确示例:`mkdir "/Users/name/My Documents"`
17
+ - 错误示例:`mkdir /Users/name/My Documents`(会失败)
18
+ - 确保正确引用后执行命令
19
+
20
+ ## 使用说明
21
+
22
+ - `command` 参数是必需的
23
+ - 可选超时时间(毫秒),默认 120000ms(2分钟)
24
+ - 请用 5-10 个字写清楚命令作用的描述
25
+ - 如果输出超过 2000 行或 51200 字节,会被截断并保存到文件
26
+ - 可以用 Read 的 offset/limit 读取特定部分,或用 grep 搜索全部内容
27
+ - **禁止**使用 `head`、`tail` 等命令限制输出
28
+
29
+ **禁止使用 bash 执行以下操作**,请使用专用工具:
30
+ - 文件搜索:用 glob(不用 find 或 ls)
31
+ - 内容搜索:用 grep(不用 grep 或 rg)
32
+ - 读取文件:用 read_file(不用 cat/head/tail)
33
+ - 编辑文件:用 edit_file(不用 sed/awk)
34
+ - 写入文件:用 write_file(不用 echo >/cat <<EOF)
35
+ - 输出文本:直接输出(不用 echo/printf)
36
+
37
+ **多命令执行**:
38
+ - 独立命令可以并行执行多个 Bash 调用
39
+ - 顺序依赖的命令用 `&&` 链接(如 `git add . && git commit -m "message" && git push`)
40
+ - 不关心前置结果时用 `;` 分隔
41
+ - **禁止**使用换行符分隔命令(在引号字符串中除外)
42
+
43
+ **注意事项**:
44
+ - 禁止使用交互式 git 命令(如 `git rebase -i` 或 `git add -i`)
45
+ - 除非用户明确要求,不要推送到远程
46
+ - 没有变更时不创建空提交
47
+
@@ -1,20 +1,20 @@
1
- ### 工具code_search
2
- 使用 Exa Code API 搜索编程相关的代码和上下文。
3
-
4
- **功能**:
5
- - 为任何编程任务提供最高质量和最新鲜的上下文
6
- - 提供库、SDK 和 API 的全面代码示例、文档和 API 参考
7
- - 用于任何编程相关问题
8
- - 优化用于查找特定编程模式和解决方案
9
-
10
- **使用说明**:
11
- - 可调整的 token 数量(1000-50000)用于聚焦或全面的结果
12
- - 默认 5000 tokens 为大多数查询提供平衡的上下文
13
- - 特定问题用较低值,全面文档用较高值
14
- - 支持关于框架、库、API 和编程概念的查询
15
-
16
- **示例**:
17
- - 'React useState hook examples'
18
- - 'Python pandas dataframe filtering'
19
- - 'Express.js middleware'
20
-
1
+ ### 工具code_search
2
+ 使用 Exa Code API 搜索编程相关的代码和上下文。
3
+
4
+ **功能**:
5
+ - 为任何编程任务提供最高质量和最新鲜的上下文
6
+ - 提供库、SDK 和 API 的全面代码示例、文档和 API 参考
7
+ - 用于任何编程相关问题
8
+ - 优化用于查找特定编程模式和解决方案
9
+
10
+ **使用说明**:
11
+ - 可调整的 token 数量(1000-50000)用于聚焦或全面的结果
12
+ - 默认 5000 tokens 为大多数查询提供平衡的上下文
13
+ - 特定问题用较低值,全面文档用较高值
14
+ - 支持关于框架、库、API 和编程概念的查询
15
+
16
+ **示例**:
17
+ - 'React useState hook examples'
18
+ - 'Python pandas dataframe filtering'
19
+ - 'Express.js middleware'
20
+
@@ -1,13 +1,13 @@
1
- ### 工具edit_file
2
- 对文件执行精确的字符串替换。当文件已经存在时,应该直接调用edit_file工具修改,而不是删除后重新新建,除非客户要求。
3
-
4
- **功能**:
5
- - 在编辑前,**必须**至少使用过一次 Read 工具。未读取文件就编辑会报错
6
- - 从 Read 工具输出编辑文本时,确保保留精确的缩进(空格/制表符)。行号前缀格式是:行号 + 冒号 + 空格(如 `1: `)。`old_string` 和 `new_string` 中**禁止**包含行号前缀的任何部分
7
- - **优先**编辑现有文件,**禁止**创建新文件除非明确需要
8
- - 只有用户明确要求时才使用表情符号
9
- - 如果 `old_string` 在文件中找不到会**失败**
10
- - 如果 `old_string` 在文件中出现多次会**失败**,可以提供更多上下文使其唯一,或使用 `replace_all` 替换所有匹配项
11
- - `replace_all` 用于在整个文件中替换和重命名字符串
12
-
13
-
1
+ ### 工具edit_file
2
+ 对文件执行精确的字符串替换。当文件已经存在时,应该直接调用edit_file工具修改,而不是删除后重新新建,除非客户要求。
3
+
4
+ **功能**:
5
+ - 在编辑前,**必须**至少使用过一次 Read 工具。未读取文件就编辑会报错
6
+ - 从 Read 工具输出编辑文本时,确保保留精确的缩进(空格/制表符)。行号前缀格式是:行号 + 冒号 + 空格(如 `1: `)。`old_string` 和 `new_string` 中**禁止**包含行号前缀的任何部分
7
+ - **优先**编辑现有文件,**禁止**创建新文件除非明确需要
8
+ - 只有用户明确要求时才使用表情符号
9
+ - 如果 `old_string` 在文件中找不到会**失败**
10
+ - 如果 `old_string` 在文件中出现多次会**失败**,可以提供更多上下文使其唯一,或使用 `replace_all` 替换所有匹配项
11
+ - `replace_all` 用于在整个文件中替换和重命名字符串
12
+
13
+
@@ -1,12 +1,12 @@
1
- ### 工具glob
2
- 快速的文件模式匹配工具,适用于任何规模的代码库。
3
-
4
- **功能**:
5
- - 支持 glob 模式如 "**/*.js" 或 "src/**/*.ts"
6
- - 返回匹配文件的路径,按修改时间排序
7
- - 当你需要按名称模式查找文件时使用此工具
8
-
9
- **注意**:当你需要进行可能需要多轮 glob 和 grep 的开放式搜索时,使用 Task 工具。
10
-
11
- **最佳实践**:可以并行调用多个工具,总是更好地批量执行多个可能有用的搜索。
12
-
1
+ ### 工具glob
2
+ 快速的文件模式匹配工具,适用于任何规模的代码库。
3
+
4
+ **功能**:
5
+ - 支持 glob 模式如 "**/*.js" 或 "src/**/*.ts"
6
+ - 返回匹配文件的路径,按修改时间排序
7
+ - 当你需要按名称模式查找文件时使用此工具
8
+
9
+ **注意**:当你需要进行可能需要多轮 glob 和 grep 的开放式搜索时,使用 Task 工具。
10
+
11
+ **最佳实践**:可以并行调用多个工具,总是更好地批量执行多个可能有用的搜索。
12
+
@@ -1,14 +1,14 @@
1
- ### 工具grep
2
- 快速的内容搜索工具,适用于任何规模的代码库。
3
-
4
- **功能**:
5
- - 使用正则表达式搜索文件内容
6
- - 支持完整正则语法(如 "log.*Error", "function\s+\w+" 等)
7
- - 用 `include` 参数按文件模式过滤(如 "*.js", "*.{ts,tsx}")
8
- - 返回有匹配的文件路径和行号,按修改时间排序
9
- - 当你需要查找包含特定模式的文件时使用此工具
10
-
11
- **注意**:
12
- - 如果需要识别/统计文件中的匹配数量,直接用 Bash 工具运行 `rg` (ripgrep),**不要**用 Grep
13
- - 当你需要可能需要多轮搜索的开放式搜索时,使用 Task 工具
14
-
1
+ ### 工具grep
2
+ 快速的内容搜索工具,适用于任何规模的代码库。
3
+
4
+ **功能**:
5
+ - 使用正则表达式搜索文件内容
6
+ - 支持完整正则语法(如 "log.*Error", "function\s+\w+" 等)
7
+ - 用 `include` 参数按文件模式过滤(如 "*.js", "*.{ts,tsx}")
8
+ - 返回有匹配的文件路径和行号,按修改时间排序
9
+ - 当你需要查找包含特定模式的文件时使用此工具
10
+
11
+ **注意**:
12
+ - 如果需要识别/统计文件中的匹配数量,直接用 Bash 工具运行 `rg` (ripgrep),**不要**用 Grep
13
+ - 当你需要可能需要多轮搜索的开放式搜索时,使用 Task 工具
14
+
@@ -1,19 +1,19 @@
1
- ### 工具lsp
2
- 与语言服务器协议(LSP)服务器交互,获取代码智能功能。
3
-
4
- **支持的操作**:
5
- - gotoDefinition:查找符号定义位置
6
- - findReferences:查找符号的所有引用
7
- - hover:获取悬停信息(文档、类型信息)
8
- - documentSymbol:获取文档中的所有符号(函数、类、变量)
9
- - workspaceSymbol:在整个工作区搜索符号
10
- - gotoImplementation:查找接口或抽象方法的实现
11
- - callHierarchy:获取位置的调用层次结构项(函数/方法)
12
-
13
- **所有操作需要**:
14
- - `filePath`:要操作的文件
15
- - `line`:行号(从 1 开始,编辑器中显示的那样)
16
- - `character`:字符偏移(从 1 开始)
17
-
18
- **注意**:需要为文件类型配置 LSP 服务器。如果文件类型没有可用的服务器,返回错误。
19
-
1
+ ### 工具lsp
2
+ 与语言服务器协议(LSP)服务器交互,获取代码智能功能。
3
+
4
+ **支持的操作**:
5
+ - gotoDefinition:查找符号定义位置
6
+ - findReferences:查找符号的所有引用
7
+ - hover:获取悬停信息(文档、类型信息)
8
+ - documentSymbol:获取文档中的所有符号(函数、类、变量)
9
+ - workspaceSymbol:在整个工作区搜索符号
10
+ - gotoImplementation:查找接口或抽象方法的实现
11
+ - callHierarchy:获取位置的调用层次结构项(函数/方法)
12
+
13
+ **所有操作需要**:
14
+ - `filePath`:要操作的文件
15
+ - `line`:行号(从 1 开始,编辑器中显示的那样)
16
+ - `character`:字符偏移(从 1 开始)
17
+
18
+ **注意**:需要为文件类型配置 LSP 服务器。如果文件类型没有可用的服务器,返回错误。
19
+
@@ -1,22 +1,22 @@
1
- 将持久信息保存到跨会话保留的持久记忆中。记忆会在未来的对话轮次中被注入,因此请保持内容紧凑,专注于未来仍然重要的事实。
2
-
3
- ## 何时保存(主动执行,无需等待用户要求):
4
- - 用户纠正你,或说“记住这个” / “以后别再这么做了”
5
- - 用户分享偏好、习惯或个人细节(姓名、角色、时区、编码风格)
6
- - 你发现了与环境相关的信息(操作系统、已安装工具、项目结构)
7
- - 你了解到特定于该用户使用习惯的约定、API 特性或工作流程
8
- - 你识别出在未来会话中仍会有用的稳定事实
9
-
10
- 优先级(PRIORITY): 用户偏好与纠正 > 环境事实 > 过程性知识。最有价值的记忆是能避免用户重复自己的话。
11
-
12
- ## 不值得记录的内容
13
- - 任务进度、会话结果、已完成工作日志或临时的待办事项状态。
14
- - 闲聊、打招呼、无关寒暄
15
- - 单次的技术问答(除非用户表示很重要)
16
- - 测试性问题、无意义的重复
17
- - 用户明确表示“不用记”的内容
18
-
19
-
20
- 操作类型: add(新增条目)、replace(更新已有条目——通过 old_text 定位原内容)、remove(删除——通过 old_text 定位原内容)
21
-
1
+ 将持久信息保存到跨会话保留的持久记忆中。记忆会在未来的对话轮次中被注入,因此请保持内容紧凑,专注于未来仍然重要的事实。
2
+
3
+ ## 何时保存(主动执行,无需等待用户要求):
4
+ - 用户纠正你,或说“记住这个” / “以后别再这么做了”
5
+ - 用户分享偏好、习惯或个人细节(姓名、角色、时区、编码风格)
6
+ - 你发现了与环境相关的信息(操作系统、已安装工具、项目结构)
7
+ - 你了解到特定于该用户使用习惯的约定、API 特性或工作流程
8
+ - 你识别出在未来会话中仍会有用的稳定事实
9
+
10
+ 优先级(PRIORITY): 用户偏好与纠正 > 环境事实 > 过程性知识。最有价值的记忆是能避免用户重复自己的话。
11
+
12
+ ## 不值得记录的内容
13
+ - 任务进度、会话结果、已完成工作日志或临时的待办事项状态。
14
+ - 闲聊、打招呼、无关寒暄
15
+ - 单次的技术问答(除非用户表示很重要)
16
+ - 测试性问题、无意义的重复
17
+ - 用户明确表示“不用记”的内容
18
+
19
+
20
+ 操作类型: add(新增条目)、replace(更新已有条目——通过 old_text 定位原内容)、remove(删除——通过 old_text 定位原内容)
21
+
22
22
  跳过保存的情况: 琐碎/显而易见的信息、容易重新发现的内容、原始数据转储、以及临时性的任务状态。