tianxincode 1.0.47 → 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 (302) 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/ai/provider/deepseek.provider.js +1 -1
  21. package/dist/core/ai/provider/deepseek.provider.js.map +1 -1
  22. package/dist/core/ai/provider/openai.provider.js +1 -1
  23. package/dist/core/ai/provider/openai.provider.js.map +1 -1
  24. package/dist/core/db/db.service.d.ts.map +1 -1
  25. package/dist/core/db/db.service.js +3 -1
  26. package/dist/core/db/db.service.js.map +1 -1
  27. package/dist/core/db/init_sql/ai_log.init.js +15 -15
  28. package/dist/core/db/init_sql/code_snippet.init.js +11 -11
  29. package/dist/core/db/init_sql/config.init.js +15 -15
  30. package/dist/core/db/init_sql/custom_action.init.js +10 -10
  31. package/dist/core/db/init_sql/dingding.init.js +9 -9
  32. package/dist/core/db/init_sql/email.init.js +14 -14
  33. package/dist/core/db/init_sql/lsp.init.js +8 -8
  34. package/dist/core/db/init_sql/message_file.init.js +11 -11
  35. package/dist/core/db/init_sql/project.init.js +20 -20
  36. package/dist/core/db/init_sql/provider.init.js +35 -35
  37. package/dist/core/db/init_sql/scheduler.init.js +32 -32
  38. package/dist/core/db/init_sql/session.init.js +23 -23
  39. package/dist/core/db/init_sql/spec.init.js +15 -15
  40. package/dist/core/db/init_sql/waf_gateway.init.js +9 -9
  41. package/dist/core/db/init_sql/zihao.init.js +11 -11
  42. package/dist/core/lsp/sql.js +11 -11
  43. package/dist/core/tools/provider/bash.txt +47 -47
  44. package/dist/core/tools/provider/code_search.txt +20 -20
  45. package/dist/core/tools/provider/edit_file.txt +13 -13
  46. package/dist/core/tools/provider/glob.txt +12 -12
  47. package/dist/core/tools/provider/grep.txt +14 -14
  48. package/dist/core/tools/provider/lsp.txt +19 -19
  49. package/dist/core/tools/provider/memory.txt +21 -21
  50. package/dist/core/tools/provider/read_file.txt +17 -17
  51. package/dist/core/tools/provider/todo_read.txt +16 -16
  52. package/dist/core/tools/provider/todo_write.txt +48 -48
  53. package/dist/core/tools/provider/web_fetch.txt +17 -17
  54. package/dist/core/tools/provider/web_search.txt +18 -18
  55. package/dist/core/tools/provider/write_file.txt +11 -11
  56. package/dist/gateway/api/skill/detail_skill.d.ts.map +1 -1
  57. package/dist/gateway/api/skill/detail_skill.js +7 -5
  58. package/dist/gateway/api/skill/detail_skill.js.map +1 -1
  59. package/dist/gateway/cli/commands.js +18 -18
  60. package/dist/modules/ai/agents/chat/prompts/role.txt +30 -30
  61. package/dist/modules/ai/agents/code/prompts/role.txt +50 -50
  62. package/dist/modules/ai/agents/mem/prompts/role.txt +35 -35
  63. package/dist/modules/ai/agents/skill/prompts/role.txt +61 -61
  64. package/dist/modules/ai/agents/task/prompts/role.txt +50 -50
  65. package/dist/modules/ai/ai-log.service.js +10 -10
  66. package/dist/modules/ai/provider/openai/prompt/role.txt +51 -51
  67. package/dist/modules/ai/summarizer/summarizer.prompts.js +30 -30
  68. package/dist/modules/config/config.service.js +5 -5
  69. package/dist/modules/db/db.service.js +252 -252
  70. package/dist/modules/email/email.config.repository.js +1 -1
  71. package/dist/modules/repositories/project.repository.d.ts +28 -0
  72. package/dist/modules/repositories/project.repository.d.ts.map +1 -0
  73. package/dist/modules/repositories/project.repository.js +47 -0
  74. package/dist/modules/repositories/project.repository.js.map +1 -0
  75. package/dist/modules/scheduler/task-log.service.js +1 -1
  76. package/dist/modules/services/project/project.service.d.ts +14 -0
  77. package/dist/modules/services/project/project.service.d.ts.map +1 -0
  78. package/dist/modules/services/project/project.service.js +47 -0
  79. package/dist/modules/services/project/project.service.js.map +1 -0
  80. package/dist/modules/skill/skill.txt +36 -36
  81. package/dist/modules/spec/spec.injector.js +24 -24
  82. package/dist/modules/tools/provider/bash.txt +47 -47
  83. package/dist/modules/tools/provider/code_search.txt +20 -20
  84. package/dist/modules/tools/provider/edit_file.txt +13 -13
  85. package/dist/modules/tools/provider/glob.txt +12 -12
  86. package/dist/modules/tools/provider/grep.txt +14 -14
  87. package/dist/modules/tools/provider/lsp.txt +19 -19
  88. package/dist/modules/tools/provider/memory.txt +21 -21
  89. package/dist/modules/tools/provider/read_file.txt +17 -17
  90. package/dist/modules/tools/provider/todo_read.txt +16 -16
  91. package/dist/modules/tools/provider/todo_write.txt +48 -48
  92. package/dist/modules/tools/provider/web_fetch.txt +17 -17
  93. package/dist/modules/tools/provider/web_search.txt +18 -18
  94. package/dist/modules/tools/provider/write_file.txt +11 -11
  95. package/dist/modules/waf-gateway/waf-gateway.module.js +8 -8
  96. package/dist/modules/waf-gateway/waf-gateway.service.js +12 -12
  97. package/dist/repositories/project.repository.d.ts +28 -0
  98. package/dist/repositories/project.repository.d.ts.map +1 -0
  99. package/dist/repositories/project.repository.js +47 -0
  100. package/dist/repositories/project.repository.js.map +1 -0
  101. package/dist/repository/ai_log.repository.js +1 -1
  102. package/dist/repository/config.repository.js +5 -5
  103. package/dist/repository/email.repository.js +1 -1
  104. package/dist/repository/memory.repository.js +1 -1
  105. package/dist/repository/project.repository.js +3 -3
  106. package/dist/repository/scheduler.repository.js +2 -2
  107. package/dist/repository/session.repository.js +1 -1
  108. package/dist/repository/zihao-config.repository.js +1 -1
  109. package/dist/services/skill/skill.tool.d.ts.map +1 -1
  110. package/dist/services/skill/skill.tool.js +6 -1
  111. package/dist/services/skill/skill.tool.js.map +1 -1
  112. package/dist/services/skill/skill.txt +36 -36
  113. package/package.json +76 -76
  114. package/scripts/copy-txt.js +31 -31
  115. package/scripts/ink-scroll-demo.tsx +147 -147
  116. package/tsconfig.test.json +9 -9
  117. package/web/dist/assets/{ConfirmDialog-B2bVsPFI.js → ConfirmDialog-B03GcCHQ.js} +1 -1
  118. package/web/dist/assets/PcLayout-CYW3zqcs.css +1 -0
  119. package/web/dist/assets/{PcLayout-DeXNBHu2.js → PcLayout-ZTdJNg7G.js} +1 -1
  120. package/web/dist/assets/{aiLogsView-JvjhLmyo.js → aiLogsView-Bt8Xg1Qx.js} +1 -1
  121. package/web/dist/assets/{cssMode-sYHhwUZh.js → cssMode-CBb6D87U.js} +1 -1
  122. package/web/dist/assets/{customActionsView-Cvmzxvl4.js → customActionsView-DdjnHzwm.js} +1 -1
  123. package/web/dist/assets/deployView-CD7ji9IS.css +1 -0
  124. package/web/dist/assets/{deployView-CjV4ySrf.js → deployView-Cj51_Job.js} +1 -1
  125. package/web/dist/assets/designView-C3pSX4nP.css +1 -0
  126. package/web/dist/assets/designView-RT8tKEN9.js +18 -0
  127. package/web/dist/assets/devWorkflowView-BTozmaiN.js +36 -0
  128. package/web/dist/assets/devWorkflowView-DYhIfbCB.css +1 -0
  129. package/web/dist/assets/devWorkflowViewApp-CErbhC2s.css +1 -0
  130. package/web/dist/assets/{devWorkflowViewApp-DPlFgiS_.js → devWorkflowViewApp-DLslXEq9.js} +3 -3
  131. package/web/dist/assets/{fileZihao-DvZmuTYu.js → fileZihao-CtZ4bUIH.js} +1 -1
  132. package/web/dist/assets/{freemarker2-DTyAQBBj.js → freemarker2-CX3jc3l2.js} +1 -1
  133. package/web/dist/assets/gitChanges-D6QxPcii.css +1 -0
  134. package/web/dist/assets/{gitChanges-Cpf4HHoF.js → gitChanges-DFRvzL5I.js} +1 -1
  135. package/web/dist/assets/gitChangesApp-Bjn-MCmr.css +1 -0
  136. package/web/dist/assets/{gitChangesApp-BOURDd_l.js → gitChangesApp-ZI7-V8oB.js} +2 -2
  137. package/web/dist/assets/{handlebars-DiWIXxOG.js → handlebars-CTaQD6FN.js} +1 -1
  138. package/web/dist/assets/{html-BCQWkFzH.js → html-BruJsfYv.js} +1 -1
  139. package/web/dist/assets/{htmlMode-BbMA34cR.js → htmlMode-wewroXLr.js} +1 -1
  140. package/web/dist/assets/{index-C_tz4Wda.css → index-C0xmVTIn.css} +1 -1
  141. package/web/dist/assets/{index-C7axH05o.js → index-Cn73hS12.js} +9 -9
  142. package/web/dist/assets/{javascript-By4MYHaO.js → javascript-B4ku8P1-.js} +1 -1
  143. package/web/dist/assets/{jsonMode-5JIz7tDN.js → jsonMode-BIvVuBMG.js} +1 -1
  144. package/web/dist/assets/{liquid-BQBVii4f.js → liquid-Bo3G0Ep7.js} +1 -1
  145. package/web/dist/assets/{mdx-Cwk7nqzM.js → mdx-Duv0ylZz.js} +1 -1
  146. package/web/dist/assets/{mediaChat-DivTDoIv.js → mediaChat-RT7iqqYb.js} +1 -1
  147. package/web/dist/assets/{python-L_kGfe1T.js → python-CEhCctGm.js} +1 -1
  148. package/web/dist/assets/{razor-XGuHliMI.js → razor-DPK8nTD7.js} +1 -1
  149. package/web/dist/assets/{taskView-BcJ3LAxp.js → taskView-sOyebRqn.js} +1 -1
  150. package/web/dist/assets/{terminalView-q-UKzK0M.js → terminalView-GTYtDlus.js} +2 -2
  151. package/web/dist/assets/{terminalView-CQVYh6D3.css → terminalView-eZ0agsPP.css} +1 -1
  152. package/web/dist/assets/{tsMode-SuiD3mJa.js → tsMode-BZvUU1nf.js} +1 -1
  153. package/web/dist/assets/{typescript-DJcyqRjT.js → typescript-CmEn-k1B.js} +1 -1
  154. package/web/dist/assets/{wikiView-ygHSGyPp.css → wikiView-C-oqMnJM.css} +1 -1
  155. package/web/dist/assets/{wikiView-B3GIPUlD.js → wikiView-CRjg-cZ8.js} +1 -1
  156. package/web/dist/assets/{xml-DQgCzk55.js → xml-bjvdKeyy.js} +1 -1
  157. package/web/dist/assets/{yaml-DBdEYBPA.js → yaml-N5RXWxJk.js} +1 -1
  158. package/web/dist/index.html +2 -2
  159. package/web/package.json +28 -28
  160. package/dist/modules/ai/react/index.d.ts +0 -5
  161. package/dist/modules/ai/react/index.d.ts.map +0 -1
  162. package/dist/modules/ai/react/index.js +0 -4
  163. package/dist/modules/ai/react/index.js.map +0 -1
  164. package/dist/modules/ai/react/prompt/role.txt +0 -51
  165. package/dist/modules/ai/react/provider.parser.d.ts +0 -20
  166. package/dist/modules/ai/react/provider.parser.d.ts.map +0 -1
  167. package/dist/modules/ai/react/provider.parser.js +0 -88
  168. package/dist/modules/ai/react/provider.parser.js.map +0 -1
  169. package/dist/modules/ai/react/react.parser.d.ts +0 -80
  170. package/dist/modules/ai/react/react.parser.d.ts.map +0 -1
  171. package/dist/modules/ai/react/react.parser.js +0 -365
  172. package/dist/modules/ai/react/react.parser.js.map +0 -1
  173. package/dist/modules/ai/react/react.prompts.d.ts +0 -26
  174. package/dist/modules/ai/react/react.prompts.d.ts.map +0 -1
  175. package/dist/modules/ai/react/react.prompts.js +0 -170
  176. package/dist/modules/ai/react/react.prompts.js.map +0 -1
  177. package/dist/modules/ai/react/react.types.d.ts +0 -50
  178. package/dist/modules/ai/react/react.types.d.ts.map +0 -1
  179. package/dist/modules/ai/react/react.types.js +0 -2
  180. package/dist/modules/ai/react/react.types.js.map +0 -1
  181. package/dist/modules/ai/react/react.validator.d.ts +0 -14
  182. package/dist/modules/ai/react/react.validator.d.ts.map +0 -1
  183. package/dist/modules/ai/react/react.validator.js +0 -53
  184. package/dist/modules/ai/react/react.validator.js.map +0 -1
  185. package/dist/modules/ai/react.agent.d.ts +0 -82
  186. package/dist/modules/ai/react.agent.d.ts.map +0 -1
  187. package/dist/modules/ai/react.agent.js +0 -220
  188. package/dist/modules/ai/react.agent.js.map +0 -1
  189. package/dist/modules/skill/skill.service.d.ts +0 -72
  190. package/dist/modules/skill/skill.service.d.ts.map +0 -1
  191. package/dist/modules/skill/skill.service.js +0 -283
  192. package/dist/modules/skill/skill.service.js.map +0 -1
  193. package/dist/modules/tools/builtin/bash.d.ts +0 -3
  194. package/dist/modules/tools/builtin/bash.d.ts.map +0 -1
  195. package/dist/modules/tools/builtin/bash.js +0 -126
  196. package/dist/modules/tools/builtin/bash.js.map +0 -1
  197. package/dist/modules/tools/builtin/bash.tool.d.ts +0 -6
  198. package/dist/modules/tools/builtin/bash.tool.d.ts.map +0 -1
  199. package/dist/modules/tools/builtin/bash.tool.js +0 -52
  200. package/dist/modules/tools/builtin/bash.tool.js.map +0 -1
  201. package/dist/modules/tools/builtin/bash.txt +0 -69
  202. package/dist/modules/tools/builtin/code_search.d.ts +0 -3
  203. package/dist/modules/tools/builtin/code_search.d.ts.map +0 -1
  204. package/dist/modules/tools/builtin/code_search.js +0 -86
  205. package/dist/modules/tools/builtin/code_search.js.map +0 -1
  206. package/dist/modules/tools/builtin/code_search.txt +0 -41
  207. package/dist/modules/tools/builtin/edit-file.tool.d.ts +0 -6
  208. package/dist/modules/tools/builtin/edit-file.tool.d.ts.map +0 -1
  209. package/dist/modules/tools/builtin/edit-file.tool.js +0 -58
  210. package/dist/modules/tools/builtin/edit-file.tool.js.map +0 -1
  211. package/dist/modules/tools/builtin/edit_file.d.ts +0 -3
  212. package/dist/modules/tools/builtin/edit_file.d.ts.map +0 -1
  213. package/dist/modules/tools/builtin/edit_file.js +0 -105
  214. package/dist/modules/tools/builtin/edit_file.js.map +0 -1
  215. package/dist/modules/tools/builtin/edit_file.txt +0 -61
  216. package/dist/modules/tools/builtin/glob.d.ts +0 -3
  217. package/dist/modules/tools/builtin/glob.d.ts.map +0 -1
  218. package/dist/modules/tools/builtin/glob.js +0 -85
  219. package/dist/modules/tools/builtin/glob.js.map +0 -1
  220. package/dist/modules/tools/builtin/glob.tool.d.ts +0 -6
  221. package/dist/modules/tools/builtin/glob.tool.d.ts.map +0 -1
  222. package/dist/modules/tools/builtin/glob.tool.js +0 -81
  223. package/dist/modules/tools/builtin/glob.tool.js.map +0 -1
  224. package/dist/modules/tools/builtin/glob.txt +0 -33
  225. package/dist/modules/tools/builtin/grep.d.ts +0 -3
  226. package/dist/modules/tools/builtin/grep.d.ts.map +0 -1
  227. package/dist/modules/tools/builtin/grep.js +0 -94
  228. package/dist/modules/tools/builtin/grep.js.map +0 -1
  229. package/dist/modules/tools/builtin/grep.tool.d.ts +0 -6
  230. package/dist/modules/tools/builtin/grep.tool.d.ts.map +0 -1
  231. package/dist/modules/tools/builtin/grep.tool.js +0 -96
  232. package/dist/modules/tools/builtin/grep.tool.js.map +0 -1
  233. package/dist/modules/tools/builtin/grep.txt +0 -37
  234. package/dist/modules/tools/builtin/index.d.ts +0 -8
  235. package/dist/modules/tools/builtin/index.d.ts.map +0 -1
  236. package/dist/modules/tools/builtin/index.js +0 -80
  237. package/dist/modules/tools/builtin/index.js.map +0 -1
  238. package/dist/modules/tools/builtin/lsp.d.ts +0 -7
  239. package/dist/modules/tools/builtin/lsp.d.ts.map +0 -1
  240. package/dist/modules/tools/builtin/lsp.js +0 -126
  241. package/dist/modules/tools/builtin/lsp.js.map +0 -1
  242. package/dist/modules/tools/builtin/lsp.txt +0 -45
  243. package/dist/modules/tools/builtin/memory.d.ts +0 -3
  244. package/dist/modules/tools/builtin/memory.d.ts.map +0 -1
  245. package/dist/modules/tools/builtin/memory.js +0 -77
  246. package/dist/modules/tools/builtin/memory.js.map +0 -1
  247. package/dist/modules/tools/builtin/memory.txt +0 -58
  248. package/dist/modules/tools/builtin/read-file.tool.d.ts +0 -6
  249. package/dist/modules/tools/builtin/read-file.tool.d.ts.map +0 -1
  250. package/dist/modules/tools/builtin/read-file.tool.js +0 -46
  251. package/dist/modules/tools/builtin/read-file.tool.js.map +0 -1
  252. package/dist/modules/tools/builtin/read_file.d.ts +0 -3
  253. package/dist/modules/tools/builtin/read_file.d.ts.map +0 -1
  254. package/dist/modules/tools/builtin/read_file.js +0 -107
  255. package/dist/modules/tools/builtin/read_file.js.map +0 -1
  256. package/dist/modules/tools/builtin/read_file.txt +0 -38
  257. package/dist/modules/tools/builtin/todo_read.d.ts +0 -6
  258. package/dist/modules/tools/builtin/todo_read.d.ts.map +0 -1
  259. package/dist/modules/tools/builtin/todo_read.js +0 -25
  260. package/dist/modules/tools/builtin/todo_read.js.map +0 -1
  261. package/dist/modules/tools/builtin/todo_read.txt +0 -34
  262. package/dist/modules/tools/builtin/todo_write.d.ts +0 -6
  263. package/dist/modules/tools/builtin/todo_write.d.ts.map +0 -1
  264. package/dist/modules/tools/builtin/todo_write.js +0 -46
  265. package/dist/modules/tools/builtin/todo_write.js.map +0 -1
  266. package/dist/modules/tools/builtin/todo_write.txt +0 -67
  267. package/dist/modules/tools/builtin/web_fetch.d.ts +0 -3
  268. package/dist/modules/tools/builtin/web_fetch.d.ts.map +0 -1
  269. package/dist/modules/tools/builtin/web_fetch.js +0 -52
  270. package/dist/modules/tools/builtin/web_fetch.js.map +0 -1
  271. package/dist/modules/tools/builtin/web_fetch.txt +0 -38
  272. package/dist/modules/tools/builtin/web_search.d.ts +0 -3
  273. package/dist/modules/tools/builtin/web_search.d.ts.map +0 -1
  274. package/dist/modules/tools/builtin/web_search.js +0 -100
  275. package/dist/modules/tools/builtin/web_search.js.map +0 -1
  276. package/dist/modules/tools/builtin/web_search.txt +0 -43
  277. package/dist/modules/tools/builtin/write-file.tool.d.ts +0 -6
  278. package/dist/modules/tools/builtin/write-file.tool.d.ts.map +0 -1
  279. package/dist/modules/tools/builtin/write-file.tool.js +0 -38
  280. package/dist/modules/tools/builtin/write-file.tool.js.map +0 -1
  281. package/dist/modules/tools/builtin/write_file.d.ts +0 -3
  282. package/dist/modules/tools/builtin/write_file.d.ts.map +0 -1
  283. package/dist/modules/tools/builtin/write_file.js +0 -61
  284. package/dist/modules/tools/builtin/write_file.js.map +0 -1
  285. package/dist/modules/tools/builtin/write_file.txt +0 -58
  286. package/dist/modules/tools/provider/openai/tools.d.ts +0 -3
  287. package/dist/modules/tools/provider/openai/tools.d.ts.map +0 -1
  288. package/dist/modules/tools/provider/openai/tools.js +0 -212
  289. package/dist/modules/tools/provider/openai/tools.js.map +0 -1
  290. package/dist/modules/tools/provider/skill.d.ts +0 -6
  291. package/dist/modules/tools/provider/skill.d.ts.map +0 -1
  292. package/dist/modules/tools/provider/skill.js +0 -64
  293. package/dist/modules/tools/provider/skill.js.map +0 -1
  294. package/web/dist/assets/PcLayout-L-XuK1oQ.css +0 -1
  295. package/web/dist/assets/deployView-hCh3_M8H.css +0 -1
  296. package/web/dist/assets/designView-CqZ75hOS.css +0 -1
  297. package/web/dist/assets/designView-DrUNRVEE.js +0 -18
  298. package/web/dist/assets/devWorkflowView-BpdJTMEb.js +0 -36
  299. package/web/dist/assets/devWorkflowView-D7EKjoLj.css +0 -1
  300. package/web/dist/assets/devWorkflowViewApp-BYYMIdCm.css +0 -1
  301. package/web/dist/assets/gitChanges-BYj-Y2K-.css +0 -1
  302. package/web/dist/assets/gitChangesApp-Btw-XKcP.css +0 -1
@@ -175,12 +175,12 @@ export class DbService {
175
175
  runMigrations() {
176
176
  if (!this.db)
177
177
  throw new Error('Database not initialized');
178
- this.db.run(`
179
- CREATE TABLE IF NOT EXISTS migrations (
180
- id INTEGER PRIMARY KEY,
181
- name TEXT NOT NULL,
182
- applied_at DATETIME DEFAULT CURRENT_TIMESTAMP
183
- )
178
+ this.db.run(`
179
+ CREATE TABLE IF NOT EXISTS migrations (
180
+ id INTEGER PRIMARY KEY,
181
+ name TEXT NOT NULL,
182
+ applied_at DATETIME DEFAULT CURRENT_TIMESTAMP
183
+ )
184
184
  `);
185
185
  const migrations = [
186
186
  () => this.migration001Initial(),
@@ -213,97 +213,97 @@ export class DbService {
213
213
  migration001Initial() {
214
214
  if (!this.db)
215
215
  return;
216
- this.db.run(`
217
- CREATE TABLE IF NOT EXISTS sessions (
218
- id TEXT PRIMARY KEY,
219
- title TEXT NOT NULL,
220
- project_path TEXT,
221
- summary_message_id INTEGER,
222
- prompt_tokens INTEGER DEFAULT 0,
223
- completion_tokens INTEGER DEFAULT 0,
224
- cost REAL DEFAULT 0,
225
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
226
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
227
- )
216
+ this.db.run(`
217
+ CREATE TABLE IF NOT EXISTS sessions (
218
+ id TEXT PRIMARY KEY,
219
+ title TEXT NOT NULL,
220
+ project_path TEXT,
221
+ summary_message_id INTEGER,
222
+ prompt_tokens INTEGER DEFAULT 0,
223
+ completion_tokens INTEGER DEFAULT 0,
224
+ cost REAL DEFAULT 0,
225
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
226
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
227
+ )
228
228
  `);
229
- this.db.run(`
230
- CREATE TABLE IF NOT EXISTS messages (
231
- id INTEGER PRIMARY KEY AUTOINCREMENT,
232
- session_id TEXT NOT NULL,
233
- role TEXT NOT NULL CHECK (role IN ('user', 'assistant', 'system', 'tool')),
234
- content TEXT NOT NULL,
235
- keep_context INTEGER DEFAULT 1,
236
- is_original INTEGER DEFAULT 0,
237
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
238
- FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
239
- )
229
+ this.db.run(`
230
+ CREATE TABLE IF NOT EXISTS messages (
231
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
232
+ session_id TEXT NOT NULL,
233
+ role TEXT NOT NULL CHECK (role IN ('user', 'assistant', 'system', 'tool')),
234
+ content TEXT NOT NULL,
235
+ keep_context INTEGER DEFAULT 1,
236
+ is_original INTEGER DEFAULT 0,
237
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
238
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
239
+ )
240
240
  `);
241
- this.db.run(`
242
- CREATE TABLE IF NOT EXISTS project_knowledge (
243
- id INTEGER PRIMARY KEY AUTOINCREMENT,
244
- project_path TEXT NOT NULL,
245
- key TEXT NOT NULL,
246
- value TEXT NOT NULL,
247
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
248
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
249
- UNIQUE(project_path, key)
250
- )
241
+ this.db.run(`
242
+ CREATE TABLE IF NOT EXISTS project_knowledge (
243
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
244
+ project_path TEXT NOT NULL,
245
+ key TEXT NOT NULL,
246
+ value TEXT NOT NULL,
247
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
248
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
249
+ UNIQUE(project_path, key)
250
+ )
251
251
  `);
252
- this.db.run(`
253
- CREATE TABLE IF NOT EXISTS code_snippets (
254
- id INTEGER PRIMARY KEY AUTOINCREMENT,
255
- session_id TEXT,
256
- lang TEXT NOT NULL,
257
- description TEXT,
258
- code TEXT NOT NULL,
259
- tags TEXT,
260
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
261
- FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE SET NULL
262
- )
252
+ this.db.run(`
253
+ CREATE TABLE IF NOT EXISTS code_snippets (
254
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
255
+ session_id TEXT,
256
+ lang TEXT NOT NULL,
257
+ description TEXT,
258
+ code TEXT NOT NULL,
259
+ tags TEXT,
260
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
261
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE SET NULL
262
+ )
263
263
  `);
264
- this.db.run(`
265
- CREATE TABLE IF NOT EXISTS providers (
266
- id TEXT PRIMARY KEY,
267
- name TEXT NOT NULL,
268
- api_key TEXT NOT NULL,
269
- base_url TEXT DEFAULT 'https://api.openai.com/v1',
270
- enabled INTEGER DEFAULT 1,
271
- is_default INTEGER DEFAULT 0,
272
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
273
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
274
- )
264
+ this.db.run(`
265
+ CREATE TABLE IF NOT EXISTS providers (
266
+ id TEXT PRIMARY KEY,
267
+ name TEXT NOT NULL,
268
+ api_key TEXT NOT NULL,
269
+ base_url TEXT DEFAULT 'https://api.openai.com/v1',
270
+ enabled INTEGER DEFAULT 1,
271
+ is_default INTEGER DEFAULT 0,
272
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
273
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
274
+ )
275
275
  `);
276
- this.db.run(`
277
- CREATE TABLE IF NOT EXISTS models (
278
- id TEXT PRIMARY KEY,
279
- provider_id TEXT NOT NULL,
280
- name TEXT NOT NULL,
281
- context_window INTEGER DEFAULT 4096,
282
- max_output_tokens INTEGER DEFAULT 4096,
283
- supports_vision INTEGER DEFAULT 0,
284
- supports_tools INTEGER DEFAULT 1,
285
- enabled INTEGER DEFAULT 1,
286
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
287
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
288
- FOREIGN KEY (provider_id) REFERENCES providers(id) ON DELETE CASCADE
289
- )
276
+ this.db.run(`
277
+ CREATE TABLE IF NOT EXISTS models (
278
+ id TEXT PRIMARY KEY,
279
+ provider_id TEXT NOT NULL,
280
+ name TEXT NOT NULL,
281
+ context_window INTEGER DEFAULT 4096,
282
+ max_output_tokens INTEGER DEFAULT 4096,
283
+ supports_vision INTEGER DEFAULT 0,
284
+ supports_tools INTEGER DEFAULT 1,
285
+ enabled INTEGER DEFAULT 1,
286
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
287
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
288
+ FOREIGN KEY (provider_id) REFERENCES providers(id) ON DELETE CASCADE
289
+ )
290
290
  `);
291
- this.db.run(`
292
- CREATE TABLE IF NOT EXISTS config (
293
- key TEXT PRIMARY KEY,
294
- value TEXT NOT NULL,
295
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
296
- )
291
+ this.db.run(`
292
+ CREATE TABLE IF NOT EXISTS config (
293
+ key TEXT PRIMARY KEY,
294
+ value TEXT NOT NULL,
295
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
296
+ )
297
297
  `);
298
- this.db.run(`
299
- CREATE TABLE IF NOT EXISTS dingding_config (
300
- id INTEGER PRIMARY KEY CHECK (id = 1),
301
- enabled INTEGER DEFAULT 0,
302
- client_id TEXT DEFAULT '',
303
- client_secret TEXT DEFAULT '',
304
- bot_name TEXT DEFAULT '',
305
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
306
- )
298
+ this.db.run(`
299
+ CREATE TABLE IF NOT EXISTS dingding_config (
300
+ id INTEGER PRIMARY KEY CHECK (id = 1),
301
+ enabled INTEGER DEFAULT 0,
302
+ client_id TEXT DEFAULT '',
303
+ client_secret TEXT DEFAULT '',
304
+ bot_name TEXT DEFAULT '',
305
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
306
+ )
307
307
  `);
308
308
  this.db.run(`INSERT OR IGNORE INTO dingding_config (id) VALUES (1)`);
309
309
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_messages_session_id ON messages(session_id)`);
@@ -384,14 +384,14 @@ export class DbService {
384
384
  migration003AddLspServers() {
385
385
  if (!this.db)
386
386
  return;
387
- this.db.run(`
388
- CREATE TABLE IF NOT EXISTS lsp_server (
389
- id TEXT PRIMARY KEY,
390
- enabled INTEGER NOT NULL DEFAULT 0,
391
- auto_start INTEGER NOT NULL DEFAULT 1,
392
- created_at INTEGER NOT NULL,
393
- updated_at INTEGER NOT NULL
394
- )
387
+ this.db.run(`
388
+ CREATE TABLE IF NOT EXISTS lsp_server (
389
+ id TEXT PRIMARY KEY,
390
+ enabled INTEGER NOT NULL DEFAULT 0,
391
+ auto_start INTEGER NOT NULL DEFAULT 1,
392
+ created_at INTEGER NOT NULL,
393
+ updated_at INTEGER NOT NULL
394
+ )
395
395
  `);
396
396
  const now = Date.now();
397
397
  const defaultServers = [
@@ -407,16 +407,16 @@ export class DbService {
407
407
  migration004AddProjects() {
408
408
  if (!this.db)
409
409
  return;
410
- this.db.run(`
411
- CREATE TABLE IF NOT EXISTS projects (
412
- id TEXT PRIMARY KEY,
413
- name TEXT NOT NULL,
414
- path TEXT NOT NULL UNIQUE,
415
- description TEXT DEFAULT '',
416
- is_active INTEGER DEFAULT 0,
417
- is_favorite INTEGER DEFAULT 0,
418
- last_opened_at DATETIME DEFAULT CURRENT_TIMESTAMP
419
- )
410
+ this.db.run(`
411
+ CREATE TABLE IF NOT EXISTS projects (
412
+ id TEXT PRIMARY KEY,
413
+ name TEXT NOT NULL,
414
+ path TEXT NOT NULL UNIQUE,
415
+ description TEXT DEFAULT '',
416
+ is_active INTEGER DEFAULT 0,
417
+ is_favorite INTEGER DEFAULT 0,
418
+ last_opened_at DATETIME DEFAULT CURRENT_TIMESTAMP
419
+ )
420
420
  `);
421
421
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_projects_path ON projects(path)`);
422
422
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_projects_active ON projects(is_active)`);
@@ -424,21 +424,21 @@ export class DbService {
424
424
  migration005AddAiCallLogs() {
425
425
  if (!this.db)
426
426
  return;
427
- this.db.run(`
428
- CREATE TABLE IF NOT EXISTS ai_call_logs (
429
- id INTEGER PRIMARY KEY AUTOINCREMENT,
430
- model_address TEXT NOT NULL,
431
- model_name TEXT NOT NULL,
432
- request_time DATETIME DEFAULT (datetime('now', 'localtime')),
433
- response_time DATETIME,
434
- duration_ms INTEGER DEFAULT 0,
435
- input_tokens INTEGER DEFAULT 0,
436
- output_tokens INTEGER DEFAULT 0,
437
- cost REAL DEFAULT 0,
438
- call_type TEXT NOT NULL CHECK (call_type IN ('tool_call', 'normal')),
439
- session_id TEXT,
440
- created_at DATETIME DEFAULT (datetime('now', 'localtime'))
441
- )
427
+ this.db.run(`
428
+ CREATE TABLE IF NOT EXISTS ai_call_logs (
429
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
430
+ model_address TEXT NOT NULL,
431
+ model_name TEXT NOT NULL,
432
+ request_time DATETIME DEFAULT (datetime('now', 'localtime')),
433
+ response_time DATETIME,
434
+ duration_ms INTEGER DEFAULT 0,
435
+ input_tokens INTEGER DEFAULT 0,
436
+ output_tokens INTEGER DEFAULT 0,
437
+ cost REAL DEFAULT 0,
438
+ call_type TEXT NOT NULL CHECK (call_type IN ('tool_call', 'normal')),
439
+ session_id TEXT,
440
+ created_at DATETIME DEFAULT (datetime('now', 'localtime'))
441
+ )
442
442
  `);
443
443
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_ai_logs_request_time ON ai_call_logs(request_time)`);
444
444
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_ai_logs_session_id ON ai_call_logs(session_id)`);
@@ -447,55 +447,55 @@ export class DbService {
447
447
  migration006AddDingdingConfig() {
448
448
  if (!this.db)
449
449
  return;
450
- this.db.run(`
451
- CREATE TABLE IF NOT EXISTS dingding_config (
452
- id INTEGER PRIMARY KEY CHECK (id = 1),
453
- enabled INTEGER DEFAULT 0,
454
- client_id TEXT DEFAULT '',
455
- client_secret TEXT DEFAULT '',
456
- bot_name TEXT DEFAULT '',
457
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
458
- )
450
+ this.db.run(`
451
+ CREATE TABLE IF NOT EXISTS dingding_config (
452
+ id INTEGER PRIMARY KEY CHECK (id = 1),
453
+ enabled INTEGER DEFAULT 0,
454
+ client_id TEXT DEFAULT '',
455
+ client_secret TEXT DEFAULT '',
456
+ bot_name TEXT DEFAULT '',
457
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
458
+ )
459
459
  `);
460
460
  this.db.run(`INSERT OR IGNORE INTO dingding_config (id) VALUES (1)`);
461
461
  }
462
462
  migration007AddScheduledTasks() {
463
463
  if (!this.db)
464
464
  return;
465
- this.db.run(`
466
- CREATE TABLE IF NOT EXISTS scheduled_tasks (
467
- id TEXT PRIMARY KEY,
468
- name TEXT NOT NULL,
469
- schedule_type TEXT NOT NULL,
470
- model TEXT NOT NULL,
471
- content TEXT NOT NULL,
472
- notify_type TEXT NOT NULL DEFAULT 'message',
473
- enabled INTEGER DEFAULT 1,
474
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
475
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
476
- )
465
+ this.db.run(`
466
+ CREATE TABLE IF NOT EXISTS scheduled_tasks (
467
+ id TEXT PRIMARY KEY,
468
+ name TEXT NOT NULL,
469
+ schedule_type TEXT NOT NULL,
470
+ model TEXT NOT NULL,
471
+ content TEXT NOT NULL,
472
+ notify_type TEXT NOT NULL DEFAULT 'message',
473
+ enabled INTEGER DEFAULT 1,
474
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
475
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
476
+ )
477
477
  `);
478
- this.db.run(`
479
- CREATE TABLE IF NOT EXISTS task_skills (
480
- id TEXT PRIMARY KEY,
481
- task_id TEXT NOT NULL,
482
- skill TEXT NOT NULL,
483
- skill_order INTEGER DEFAULT 0,
484
- FOREIGN KEY (task_id) REFERENCES scheduled_tasks(id) ON DELETE CASCADE
485
- )
478
+ this.db.run(`
479
+ CREATE TABLE IF NOT EXISTS task_skills (
480
+ id TEXT PRIMARY KEY,
481
+ task_id TEXT NOT NULL,
482
+ skill TEXT NOT NULL,
483
+ skill_order INTEGER DEFAULT 0,
484
+ FOREIGN KEY (task_id) REFERENCES scheduled_tasks(id) ON DELETE CASCADE
485
+ )
486
486
  `);
487
- this.db.run(`
488
- CREATE TABLE IF NOT EXISTS task_logs (
489
- id TEXT PRIMARY KEY,
490
- task_id TEXT NOT NULL,
491
- status TEXT NOT NULL CHECK (status IN ('success', 'failed')),
492
- prompt TEXT,
493
- result TEXT,
494
- error TEXT,
495
- duration INTEGER,
496
- executed_at DATETIME DEFAULT CURRENT_TIMESTAMP,
497
- FOREIGN KEY (task_id) REFERENCES scheduled_tasks(id) ON DELETE CASCADE
498
- )
487
+ this.db.run(`
488
+ CREATE TABLE IF NOT EXISTS task_logs (
489
+ id TEXT PRIMARY KEY,
490
+ task_id TEXT NOT NULL,
491
+ status TEXT NOT NULL CHECK (status IN ('success', 'failed')),
492
+ prompt TEXT,
493
+ result TEXT,
494
+ error TEXT,
495
+ duration INTEGER,
496
+ executed_at DATETIME DEFAULT CURRENT_TIMESTAMP,
497
+ FOREIGN KEY (task_id) REFERENCES scheduled_tasks(id) ON DELETE CASCADE
498
+ )
499
499
  `);
500
500
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_task_skills_task_id ON task_skills(task_id)`);
501
501
  this.db.run(`CREATE INDEX IF NOT EXISTS idx_task_logs_task_id ON task_logs(task_id)`);
@@ -504,20 +504,20 @@ export class DbService {
504
504
  migration008AddEmailConfig() {
505
505
  if (!this.db)
506
506
  return;
507
- this.db.run(`
508
- CREATE TABLE IF NOT EXISTS email_config (
509
- id INTEGER PRIMARY KEY AUTOINCREMENT,
510
- name TEXT NOT NULL,
511
- host TEXT NOT NULL,
512
- port INTEGER DEFAULT 587,
513
- secure INTEGER DEFAULT 0,
514
- user TEXT NOT NULL,
515
- password TEXT NOT NULL,
516
- from_name TEXT,
517
- is_default INTEGER DEFAULT 0,
518
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
519
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
520
- )
507
+ this.db.run(`
508
+ CREATE TABLE IF NOT EXISTS email_config (
509
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
510
+ name TEXT NOT NULL,
511
+ host TEXT NOT NULL,
512
+ port INTEGER DEFAULT 587,
513
+ secure INTEGER DEFAULT 0,
514
+ user TEXT NOT NULL,
515
+ password TEXT NOT NULL,
516
+ from_name TEXT,
517
+ is_default INTEGER DEFAULT 0,
518
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
519
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
520
+ )
521
521
  `);
522
522
  }
523
523
  migration009AddSessionStatus() {
@@ -531,116 +531,116 @@ export class DbService {
531
531
  migration010AddCustomActions() {
532
532
  if (!this.db)
533
533
  return;
534
- this.db.run(`
535
- CREATE TABLE IF NOT EXISTS custom_actions (
536
- id INTEGER PRIMARY KEY AUTOINCREMENT,
537
- action_type TEXT NOT NULL CHECK(action_type IN ('design', 'code', 'test')),
538
- name TEXT NOT NULL,
539
- prompt TEXT NOT NULL,
540
- auto_send INTEGER DEFAULT 0,
541
- sort_order INTEGER DEFAULT 0,
542
- created_at TEXT DEFAULT (datetime('now'))
543
- )
534
+ this.db.run(`
535
+ CREATE TABLE IF NOT EXISTS custom_actions (
536
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
537
+ action_type TEXT NOT NULL CHECK(action_type IN ('design', 'code', 'test')),
538
+ name TEXT NOT NULL,
539
+ prompt TEXT NOT NULL,
540
+ auto_send INTEGER DEFAULT 0,
541
+ sort_order INTEGER DEFAULT 0,
542
+ created_at TEXT DEFAULT (datetime('now'))
543
+ )
544
544
  `);
545
545
  }
546
546
  migration011AddWafGatewayConfig() {
547
547
  if (!this.db)
548
548
  return;
549
- this.db.run(`
550
- CREATE TABLE IF NOT EXISTS waf_gateway_config (
551
- id INTEGER PRIMARY KEY AUTOINCREMENT,
552
- secret_key TEXT DEFAULT '',
553
- server_ip TEXT DEFAULT '',
554
- status TEXT DEFAULT 'stopped',
555
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
556
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
557
- )
549
+ this.db.run(`
550
+ CREATE TABLE IF NOT EXISTS waf_gateway_config (
551
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
552
+ secret_key TEXT DEFAULT '',
553
+ server_ip TEXT DEFAULT '',
554
+ status TEXT DEFAULT 'stopped',
555
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
556
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
557
+ )
558
558
  `);
559
559
  this.db.run(`INSERT OR IGNORE INTO waf_gateway_config (id) VALUES (1)`);
560
560
  }
561
561
  migration012AddSpecRepositories() {
562
562
  if (!this.db)
563
563
  return;
564
- this.db.run(`
565
- CREATE TABLE IF NOT EXISTS spec_repositories (
566
- id TEXT PRIMARY KEY,
567
- name TEXT NOT NULL,
568
- url TEXT NOT NULL,
569
- type TEXT DEFAULT 'default',
570
- enabled INTEGER DEFAULT 1,
571
- repo_path TEXT,
572
- last_sync_at DATETIME,
573
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
574
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
575
- )
564
+ this.db.run(`
565
+ CREATE TABLE IF NOT EXISTS spec_repositories (
566
+ id TEXT PRIMARY KEY,
567
+ name TEXT NOT NULL,
568
+ url TEXT NOT NULL,
569
+ type TEXT DEFAULT 'default',
570
+ enabled INTEGER DEFAULT 1,
571
+ repo_path TEXT,
572
+ last_sync_at DATETIME,
573
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
574
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
575
+ )
576
576
  `);
577
577
  const columns = this.getTableColumns('spec_repositories');
578
578
  if (!columns.includes('repo_path')) {
579
579
  this.db.run('ALTER TABLE spec_repositories ADD COLUMN repo_path TEXT');
580
580
  }
581
- this.db.run(`
582
- INSERT OR IGNORE INTO spec_repositories (id, name, url, type, repo_path)
583
- VALUES ('default', 'txcode官方规范库', 'https://gitee.com/homecommunity/txcode', 'default', '')
581
+ this.db.run(`
582
+ INSERT OR IGNORE INTO spec_repositories (id, name, url, type, repo_path)
583
+ VALUES ('default', 'txcode官方规范库', 'https://gitee.com/homecommunity/txcode', 'default', '')
584
584
  `);
585
585
  }
586
586
  migration014AddZihaoConfig() {
587
587
  if (!this.db)
588
588
  return;
589
- this.db.run(`
590
- CREATE TABLE IF NOT EXISTS zihao_config (
591
- id TEXT PRIMARY KEY,
592
- name TEXT NOT NULL,
593
- url TEXT NOT NULL,
594
- username TEXT NOT NULL,
595
- password TEXT NOT NULL,
596
- is_active INTEGER DEFAULT 0,
597
- created_at TEXT DEFAULT (datetime('now')),
598
- updated_at TEXT DEFAULT (datetime('now'))
599
- )
589
+ this.db.run(`
590
+ CREATE TABLE IF NOT EXISTS zihao_config (
591
+ id TEXT PRIMARY KEY,
592
+ name TEXT NOT NULL,
593
+ url TEXT NOT NULL,
594
+ username TEXT NOT NULL,
595
+ password TEXT NOT NULL,
596
+ is_active INTEGER DEFAULT 0,
597
+ created_at TEXT DEFAULT (datetime('now')),
598
+ updated_at TEXT DEFAULT (datetime('now'))
599
+ )
600
600
  `);
601
601
  }
602
602
  migration015ProviderAuth() {
603
603
  if (!this.db)
604
604
  return;
605
- this.db.run(`
606
- CREATE TABLE IF NOT EXISTS provider_auth (
607
- id TEXT PRIMARY KEY,
608
- provider_name TEXT NOT NULL,
609
- key TEXT NOT NULL DEFAULT '',
610
- auth_url TEXT DEFAULT '',
611
- active INTEGER DEFAULT 0,
612
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
613
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
614
- )
605
+ this.db.run(`
606
+ CREATE TABLE IF NOT EXISTS provider_auth (
607
+ id TEXT PRIMARY KEY,
608
+ provider_name TEXT NOT NULL,
609
+ key TEXT NOT NULL DEFAULT '',
610
+ auth_url TEXT DEFAULT '',
611
+ active INTEGER DEFAULT 0,
612
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
613
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
614
+ )
615
615
  `);
616
616
  }
617
617
  migration016ProviderAuth() {
618
618
  if (!this.db)
619
619
  return;
620
- this.db.run(`
621
- CREATE TABLE IF NOT EXISTS provider_auth (
622
- id TEXT PRIMARY KEY,
623
- provider_name TEXT NOT NULL,
624
- key TEXT NOT NULL DEFAULT '',
625
- auth_url TEXT DEFAULT '',
626
- active INTEGER DEFAULT 0,
627
- created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
628
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
629
- )
620
+ this.db.run(`
621
+ CREATE TABLE IF NOT EXISTS provider_auth (
622
+ id TEXT PRIMARY KEY,
623
+ provider_name TEXT NOT NULL,
624
+ key TEXT NOT NULL DEFAULT '',
625
+ auth_url TEXT DEFAULT '',
626
+ active INTEGER DEFAULT 0,
627
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
628
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
629
+ )
630
630
  `);
631
631
  }
632
632
  migration017ProxyConfig() {
633
633
  if (!this.db)
634
634
  return;
635
- this.db.run(`
636
- CREATE TABLE IF NOT EXISTS proxy_config (
637
- id INTEGER PRIMARY KEY DEFAULT 1,
638
- enabled INTEGER DEFAULT 0,
639
- type TEXT DEFAULT 'http',
640
- host TEXT DEFAULT '',
641
- port INTEGER DEFAULT 1080,
642
- updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
643
- )
635
+ this.db.run(`
636
+ CREATE TABLE IF NOT EXISTS proxy_config (
637
+ id INTEGER PRIMARY KEY DEFAULT 1,
638
+ enabled INTEGER DEFAULT 0,
639
+ type TEXT DEFAULT 'http',
640
+ host TEXT DEFAULT '',
641
+ port INTEGER DEFAULT 1080,
642
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
643
+ )
644
644
  `);
645
645
  this.db.run(`INSERT OR IGNORE INTO proxy_config (id) VALUES (1)`);
646
646
  }
@@ -1,7 +1,7 @@
1
1
  import { dbService } from '../db/db.service.js';
2
2
  export class EmailConfigRepository {
3
3
  create(config) {
4
- const result = dbService.run(`INSERT INTO email_config (name, host, port, secure, user, password, from_name, is_default)
4
+ const result = dbService.run(`INSERT INTO email_config (name, host, port, secure, user, password, from_name, is_default)
5
5
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [config.name, config.host, config.port, config.secure, config.user, config.password, config.from_name || null, config.is_default]);
6
6
  return { id: result.lastInsertRowid };
7
7
  }
@@ -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"}