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,496 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.secureFileService = exports.SecureFileService = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const node_os_1 = require("node:os");
7
+ const file_1 = require("./file");
8
+ const cwd_1 = require("./cwd");
9
+ /**
10
+ * 安全文件系统操作服务
11
+ * 解决文件系统操作中缺少适当验证和错误处理的问题
12
+ */
13
+ class SecureFileService {
14
+ constructor() {
15
+ // 默认最大文件大小 (2MB)
16
+ this.maxFileSize = 2 * 1024 * 1024;
17
+ // 允许的文件扩展名
18
+ this.allowedExtensions = new Set([
19
+ '.txt', '.md', '.json', '.js', '.ts', '.tsx', '.jsx',
20
+ '.yaml', '.yml', '.toml', '.ini', '.env', '.log',
21
+ '.html', '.css', '.scss', '.less', '.xml', '.csv',
22
+ '.py', '.go', '.rs', '.java', '.cpp', '.c', '.h',
23
+ '.sh', '.bash', '.zsh', '.fish', '.ps1', '.bat',
24
+ '.dockerfile', '.gitignore', '.npmignore', '.eslintignore'
25
+ ]);
26
+ // 静态基础路径(不包含动态工作目录)
27
+ this.allowedBasePaths = new Set([
28
+ (0, node_os_1.homedir)(),
29
+ '/tmp',
30
+ '/var/tmp'
31
+ ]);
32
+ }
33
+ static getInstance() {
34
+ if (!SecureFileService.instance) {
35
+ SecureFileService.instance = new SecureFileService();
36
+ }
37
+ return SecureFileService.instance;
38
+ }
39
+ /**
40
+ * 验证文件路径是否安全
41
+ * @param filePath 文件路径
42
+ * @returns 验证结果
43
+ */
44
+ validateFilePath(filePath) {
45
+ try {
46
+ // 使用我们的路径标准化函数,支持Unix风格路径
47
+ const normalizedPath = (0, file_1.normalizeFilePath)(filePath);
48
+ // 检查路径长度
49
+ if (normalizedPath.length > 4096) {
50
+ return {
51
+ isValid: false,
52
+ normalizedPath,
53
+ error: 'Path too long (max 4096 characters)'
54
+ };
55
+ }
56
+ // 检查是否包含路径遍历字符
57
+ if (normalizedPath.includes('..') || normalizedPath.includes('~')) {
58
+ return {
59
+ isValid: false,
60
+ normalizedPath,
61
+ error: 'Path contains traversal characters'
62
+ };
63
+ }
64
+ // 检查是否包含可疑的字符序列
65
+ const suspiciousPatterns = [
66
+ /\.\./, // 父目录
67
+ /~/, // 用户目录
68
+ /\$\{/, // 环境变量
69
+ /`/, // 命令执行
70
+ /\|/, // 管道符
71
+ /;/, // 命令分隔符
72
+ /&/, // 后台执行
73
+ />/, // 输出重定向
74
+ /</, // 输入重定向
75
+ ];
76
+ for (const pattern of suspiciousPatterns) {
77
+ if (pattern.test(normalizedPath)) {
78
+ return {
79
+ isValid: false,
80
+ normalizedPath,
81
+ error: `Path contains suspicious pattern: ${pattern}`
82
+ };
83
+ }
84
+ }
85
+ // normalizeFilePath已经返回绝对路径,直接使用
86
+ const absolutePath = normalizedPath;
87
+ // 检查是否在允许的基础路径中
88
+ // 动态构建允许的基础路径列表,包含当前工作目录
89
+ const currentAllowedPaths = [
90
+ (0, cwd_1.getCwd)(), // 动态获取当前工作目录
91
+ ...Array.from(this.allowedBasePaths) // 静态基础路径
92
+ ];
93
+ const isInAllowedPath = currentAllowedPaths.some((basePath, index) => {
94
+ // console.log(`[SecureFileService] 检查基础路径 ${index + 1}: ${basePath}`)
95
+ // 统一标准化基础路径,确保Unix风格路径被正确处理
96
+ const base = (0, file_1.normalizeFilePath)(basePath);
97
+ // console.log(`[SecureFileService] 标准化基础路径: ${base}`)
98
+ const rel = (0, node_path_1.relative)(base, absolutePath);
99
+ // console.log(`[SecureFileService] 相对路径: "${rel}"`)
100
+ if (!rel || rel === '') {
101
+ // console.log(`[SecureFileService] ✅ 相同路径,允许访问`)
102
+ return true;
103
+ }
104
+ if (rel.startsWith('..')) {
105
+ console.log(`[SecureFileService] ❌ 向上跳出路径,拒绝访问`);
106
+ return false;
107
+ }
108
+ if ((0, node_path_1.isAbsolute)(rel)) {
109
+ console.log(`[SecureFileService] ❌ 绝对相对路径,拒绝访问`);
110
+ return false;
111
+ }
112
+ // console.log(`[SecureFileService] ✅ 子路径,允许访问`)
113
+ return true;
114
+ });
115
+ if (!isInAllowedPath) {
116
+ return {
117
+ isValid: false,
118
+ normalizedPath,
119
+ error: 'Path is outside allowed directories'
120
+ };
121
+ }
122
+ return { isValid: true, normalizedPath: absolutePath };
123
+ }
124
+ catch (error) {
125
+ return {
126
+ isValid: false,
127
+ normalizedPath: filePath,
128
+ error: `Path validation failed: ${error instanceof Error ? error.message : String(error)}`
129
+ };
130
+ }
131
+ }
132
+ /**
133
+ * 安全地检查文件是否存在
134
+ * @param filePath 文件路径
135
+ * @returns 文件是否存在
136
+ */
137
+ safeExists(filePath) {
138
+ const validation = this.validateFilePath(filePath);
139
+ if (!validation.isValid) {
140
+ return false;
141
+ }
142
+ try {
143
+ return (0, node_fs_1.existsSync)(validation.normalizedPath);
144
+ }
145
+ catch (error) {
146
+ return false;
147
+ }
148
+ }
149
+ /**
150
+ * 安全地读取文件
151
+ * @param filePath 文件路径
152
+ * @param options 读取选项
153
+ * @returns 读取结果
154
+ */
155
+ safeReadFile(filePath, options = {}) {
156
+ const validation = this.validateFilePath(filePath);
157
+ if (!validation.isValid) {
158
+ return { success: false, error: validation.error };
159
+ }
160
+ try {
161
+ const normalizedPath = validation.normalizedPath;
162
+ // 检查文件扩展名(如果启用)
163
+ if (options.checkFileExtension !== false) {
164
+ const ext = (0, node_path_1.extname)(normalizedPath).toLowerCase();
165
+ const allowedExts = options.allowedExtensions ||
166
+ Array.from(this.allowedExtensions);
167
+ if (allowedExts.length > 0 && !allowedExts.includes(ext)) {
168
+ return {
169
+ success: false,
170
+ error: `File extension '${ext}' is not allowed`
171
+ };
172
+ }
173
+ }
174
+ // 检查文件是否存在
175
+ if (!(0, node_fs_1.existsSync)(normalizedPath)) {
176
+ return { success: false, error: `File '${normalizedPath}' does not exist` };
177
+ }
178
+ // 获取文件信息
179
+ const stats = (0, node_fs_1.statSync)(normalizedPath);
180
+ const maxSize = options.maxFileSize || this.maxFileSize;
181
+ // 检查文件大小
182
+ if (stats.size > maxSize) {
183
+ return {
184
+ success: false,
185
+ error: `File too large (${stats.size} bytes, max ${maxSize} bytes)`
186
+ };
187
+ }
188
+ // 检查文件类型
189
+ if (!stats.isFile()) {
190
+ return { success: false, error: 'Path is not a file' };
191
+ }
192
+ // 检查文件权限
193
+ if ((stats.mode & parseInt('400', 8)) === 0) { // 检查读权限
194
+ return { success: false, error: 'No read permission' };
195
+ }
196
+ // 读取文件内容
197
+ const content = (0, node_fs_1.readFileSync)(normalizedPath, {
198
+ encoding: options.encoding || 'utf8'
199
+ });
200
+ return {
201
+ success: true,
202
+ content,
203
+ stats: {
204
+ size: stats.size,
205
+ mtime: stats.mtime,
206
+ atime: stats.atime,
207
+ mode: stats.mode
208
+ }
209
+ };
210
+ }
211
+ catch (error) {
212
+ return {
213
+ success: false,
214
+ error: `Failed to read file: ${error instanceof Error ? error.message : String(error)}`
215
+ };
216
+ }
217
+ }
218
+ /**
219
+ * 安全地写入文件
220
+ * @param filePath 文件路径
221
+ * @param content 文件内容
222
+ * @param options 写入选项
223
+ * @returns 写入结果
224
+ */
225
+ safeWriteFile(filePath, content, options = {}) {
226
+ const validation = this.validateFilePath(filePath);
227
+ if (!validation.isValid) {
228
+ return { success: false, error: validation.error };
229
+ }
230
+ try {
231
+ const normalizedPath = validation.normalizedPath;
232
+ // 检查文件扩展名(如果启用)
233
+ if (options.checkFileExtension !== false) {
234
+ const ext = (0, node_path_1.extname)(normalizedPath).toLowerCase();
235
+ const allowedExts = options.allowedExtensions ||
236
+ Array.from(this.allowedExtensions);
237
+ if (allowedExts.length > 0 && !allowedExts.includes(ext)) {
238
+ return {
239
+ success: false,
240
+ error: `File extension '${ext}' is not allowed`
241
+ };
242
+ }
243
+ }
244
+ // 检查内容大小
245
+ const contentSize = typeof content === 'string' ?
246
+ Buffer.byteLength(content, options.encoding || 'utf8') :
247
+ content.length;
248
+ const maxSize = options.maxSize || this.maxFileSize;
249
+ if (contentSize > maxSize) {
250
+ return {
251
+ success: false,
252
+ error: `Content too large (${contentSize} bytes, max ${maxSize} bytes)`
253
+ };
254
+ }
255
+ // 创建目录(如果需要)
256
+ if (options.createDirectory) {
257
+ const dir = (0, node_path_1.dirname)(normalizedPath);
258
+ if (!(0, node_fs_1.existsSync)(dir)) {
259
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true, mode: 0o755 });
260
+ }
261
+ }
262
+ // 原子写入(如果启用)
263
+ if (options.atomic) {
264
+ const tempPath = `${normalizedPath}.tmp.${Date.now()}`;
265
+ try {
266
+ // 写入临时文件
267
+ (0, node_fs_1.writeFileSync)(tempPath, content, {
268
+ encoding: options.encoding || 'utf8',
269
+ mode: options.mode || 0o644
270
+ });
271
+ // 重命名为目标文件
272
+ (0, node_fs_1.renameSync)(tempPath, normalizedPath);
273
+ }
274
+ catch (renameError) {
275
+ // 清理临时文件
276
+ try {
277
+ if ((0, node_fs_1.existsSync)(tempPath)) {
278
+ (0, node_fs_1.unlinkSync)(tempPath);
279
+ }
280
+ }
281
+ catch {
282
+ // 忽略清理错误
283
+ }
284
+ throw renameError;
285
+ }
286
+ }
287
+ else {
288
+ // 直接写入
289
+ (0, node_fs_1.writeFileSync)(normalizedPath, content, {
290
+ encoding: options.encoding || 'utf8',
291
+ mode: options.mode || 0o644
292
+ });
293
+ }
294
+ return { success: true };
295
+ }
296
+ catch (error) {
297
+ return {
298
+ success: false,
299
+ error: `Failed to write file: ${error instanceof Error ? error.message : String(error)}`
300
+ };
301
+ }
302
+ }
303
+ /**
304
+ * 安全地删除文件
305
+ * @param filePath 文件路径
306
+ * @returns 删除结果
307
+ */
308
+ safeDeleteFile(filePath) {
309
+ const validation = this.validateFilePath(filePath);
310
+ if (!validation.isValid) {
311
+ return { success: false, error: validation.error };
312
+ }
313
+ try {
314
+ const normalizedPath = validation.normalizedPath;
315
+ // 检查文件是否存在
316
+ if (!(0, node_fs_1.existsSync)(normalizedPath)) {
317
+ return { success: false, error: 'File does not exist' };
318
+ }
319
+ // 检查文件类型
320
+ const stats = (0, node_fs_1.statSync)(normalizedPath);
321
+ if (!stats.isFile()) {
322
+ return { success: false, error: 'Path is not a file' };
323
+ }
324
+ // 检查写权限
325
+ if ((stats.mode & parseInt('200', 8)) === 0) {
326
+ return { success: false, error: 'No write permission' };
327
+ }
328
+ // 安全删除
329
+ (0, node_fs_1.unlinkSync)(normalizedPath);
330
+ return { success: true };
331
+ }
332
+ catch (error) {
333
+ return {
334
+ success: false,
335
+ error: `Failed to delete file: ${error instanceof Error ? error.message : String(error)}`
336
+ };
337
+ }
338
+ }
339
+ /**
340
+ * 安全地创建目录
341
+ * @param dirPath 目录路径
342
+ * @param mode 目录权限
343
+ * @returns 创建结果
344
+ */
345
+ safeCreateDirectory(dirPath, mode = 0o755) {
346
+ const validation = this.validateFilePath(dirPath);
347
+ if (!validation.isValid) {
348
+ return { success: false, error: validation.error };
349
+ }
350
+ try {
351
+ const normalizedPath = validation.normalizedPath;
352
+ if ((0, node_fs_1.existsSync)(normalizedPath)) {
353
+ const stats = (0, node_fs_1.statSync)(normalizedPath);
354
+ if (!stats.isDirectory()) {
355
+ return { success: false, error: 'Path already exists and is not a directory' };
356
+ }
357
+ return { success: true };
358
+ }
359
+ (0, node_fs_1.mkdirSync)(normalizedPath, { recursive: true, mode });
360
+ return { success: true };
361
+ }
362
+ catch (error) {
363
+ return {
364
+ success: false,
365
+ error: `Failed to create directory: ${error instanceof Error ? error.message : String(error)}`
366
+ };
367
+ }
368
+ }
369
+ /**
370
+ * 安全地获取文件信息
371
+ * @param filePath 文件路径
372
+ * @returns 文件信息
373
+ */
374
+ safeGetFileInfo(filePath) {
375
+ const validation = this.validateFilePath(filePath);
376
+ if (!validation.isValid) {
377
+ return { success: false, error: validation.error };
378
+ }
379
+ try {
380
+ const normalizedPath = validation.normalizedPath;
381
+ if (!(0, node_fs_1.existsSync)(normalizedPath)) {
382
+ return { success: false, error: `File '${normalizedPath}' does not exist` };
383
+ }
384
+ const stats = (0, node_fs_1.statSync)(normalizedPath);
385
+ return {
386
+ success: true,
387
+ stats: {
388
+ size: stats.size,
389
+ isFile: stats.isFile(),
390
+ isDirectory: stats.isDirectory(),
391
+ mode: stats.mode,
392
+ atime: stats.atime,
393
+ mtime: stats.mtime,
394
+ ctime: stats.ctime
395
+ }
396
+ };
397
+ }
398
+ catch (error) {
399
+ return {
400
+ success: false,
401
+ error: `Failed to get file info: ${error instanceof Error ? error.message : String(error)}`
402
+ };
403
+ }
404
+ }
405
+ /**
406
+ * 添加允许的基础路径
407
+ * @param basePath 基础路径
408
+ */
409
+ addAllowedBasePath(basePath) {
410
+ try {
411
+ const normalized = (0, node_path_1.normalize)((0, node_path_1.resolve)(basePath));
412
+ // 验证路径是否存在
413
+ if (!(0, node_fs_1.existsSync)(normalized)) {
414
+ return { success: false, error: 'Base path does not exist' };
415
+ }
416
+ this.allowedBasePaths.add(normalized);
417
+ return { success: true };
418
+ }
419
+ catch (error) {
420
+ return {
421
+ success: false,
422
+ error: `Failed to add base path: ${error instanceof Error ? error.message : String(error)}`
423
+ };
424
+ }
425
+ }
426
+ /**
427
+ * 设置最大文件大小
428
+ * @param maxSize 最大文件大小(字节)
429
+ */
430
+ setMaxFileSize(maxSize) {
431
+ this.maxFileSize = maxSize;
432
+ }
433
+ /**
434
+ * 添加允许的文件扩展名
435
+ * @param extensions 文件扩展名数组
436
+ */
437
+ addAllowedExtensions(extensions) {
438
+ extensions.forEach(ext => {
439
+ if (!ext.startsWith('.')) {
440
+ ext = '.' + ext;
441
+ }
442
+ this.allowedExtensions.add(ext.toLowerCase());
443
+ });
444
+ }
445
+ /**
446
+ * 检查文件是否在允许的基础路径中
447
+ * @param filePath 文件路径
448
+ * @returns 是否允许
449
+ */
450
+ isPathAllowed(filePath) {
451
+ const validation = this.validateFilePath(filePath);
452
+ return validation.isValid;
453
+ }
454
+ /**
455
+ * 验证文件名安全性
456
+ * @param filename 文件名
457
+ * @returns 验证结果
458
+ */
459
+ validateFileName(filename) {
460
+ // 检查文件名长度
461
+ if (filename.length === 0) {
462
+ return { isValid: false, error: 'Filename cannot be empty' };
463
+ }
464
+ if (filename.length > 255) {
465
+ return { isValid: false, error: 'Filename too long (max 255 characters)' };
466
+ }
467
+ // 检查文件名字符
468
+ const invalidChars = /[<>:"/\\|?*\x00-\x1F]/;
469
+ if (invalidChars.test(filename)) {
470
+ return { isValid: false, error: 'Filename contains invalid characters' };
471
+ }
472
+ // 检查保留文件名
473
+ const reservedNames = [
474
+ 'CON', 'PRN', 'AUX', 'NUL',
475
+ 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9',
476
+ 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9'
477
+ ];
478
+ const baseName = filename.split('.')[0].toUpperCase();
479
+ if (reservedNames.includes(baseName)) {
480
+ return { isValid: false, error: 'Filename is reserved' };
481
+ }
482
+ // 检查是否以点开头或结尾
483
+ if (filename.startsWith('.') || filename.endsWith('.')) {
484
+ return { isValid: false, error: 'Filename cannot start or end with a dot' };
485
+ }
486
+ // 检查是否以空格开头或结尾
487
+ if (filename.startsWith(' ') || filename.endsWith(' ')) {
488
+ return { isValid: false, error: 'Filename cannot start or end with spaces' };
489
+ }
490
+ return { isValid: true };
491
+ }
492
+ }
493
+ exports.SecureFileService = SecureFileService;
494
+ // 导出单例实例
495
+ exports.secureFileService = SecureFileService.getInstance();
496
+ //# sourceMappingURL=secureFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secureFile.js","sourceRoot":"","sources":["../../src/util/secureFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 会话管理工具函数
3
+ */
4
+ /**
5
+ * 从历史路径中解析 sessionId
6
+ * 历史路径格式: ~/.sema/history/2025-01-01_{sessionId}.json
7
+ * @param historyPath 历史文件路径
8
+ * @returns sessionId 或 null(如果解析失败)
9
+ */
10
+ export declare function parseSessionIdFromHistoryPath(historyPath: string): string | null;
11
+ /**
12
+ * 生成新的 sessionId
13
+ * @returns 新的短 UUID 格式的 sessionId(8位)
14
+ */
15
+ export declare function generateSessionId(): string;
16
+ /**
17
+ * 初始化 sessionId
18
+ * 如果提供了 historyPath 且能成功解析出 sessionId,则使用解析出的 sessionId
19
+ * 否则生成新的 sessionId
20
+ * @param historyPath 可选的历史文件路径
21
+ * @returns sessionId
22
+ */
23
+ export declare function initializeSessionId(historyPath?: string): string;
24
+ /**
25
+ * 验证 sessionId 格式
26
+ * @param sessionId 要验证的 sessionId
27
+ * @returns 是否为有效的短 UUID 格式
28
+ */
29
+ export declare function validateSessionId(sessionId: string): boolean;
30
+ /**
31
+ * 根据 sessionId 生成历史文件路径
32
+ * @param sessionId 会话ID
33
+ * @param baseDir 基础目录,默认使用 path.ts 中的统一配置
34
+ * @returns 历史文件路径
35
+ */
36
+ export declare function generateHistoryPath(sessionId: string, baseDir?: string): string;
37
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/util/session.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBhF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAShE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAS/E"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseSessionIdFromHistoryPath = parseSessionIdFromHistoryPath;
37
+ exports.generateSessionId = generateSessionId;
38
+ exports.initializeSessionId = initializeSessionId;
39
+ exports.validateSessionId = validateSessionId;
40
+ exports.generateHistoryPath = generateHistoryPath;
41
+ const crypto = __importStar(require("crypto"));
42
+ const path = __importStar(require("path"));
43
+ const time_1 = require("./time");
44
+ const savePath_1 = require("./savePath");
45
+ /**
46
+ * 会话管理工具函数
47
+ */
48
+ /**
49
+ * 从历史路径中解析 sessionId
50
+ * 历史路径格式: ~/.sema/history/2025-01-01_{sessionId}.json
51
+ * @param historyPath 历史文件路径
52
+ * @returns sessionId 或 null(如果解析失败)
53
+ */
54
+ function parseSessionIdFromHistoryPath(historyPath) {
55
+ try {
56
+ const fileName = path.basename(historyPath, '.json');
57
+ const underscoreIndex = fileName.lastIndexOf('_');
58
+ if (underscoreIndex === -1) {
59
+ return null;
60
+ }
61
+ const sessionId = fileName.substring(underscoreIndex + 1);
62
+ // 验证 sessionId 格式(8位短 UUID 格式)
63
+ const shortIdRegex = /^[0-9a-f]{8}$/i;
64
+ if (!shortIdRegex.test(sessionId)) {
65
+ return null;
66
+ }
67
+ return sessionId;
68
+ }
69
+ catch (error) {
70
+ return null;
71
+ }
72
+ }
73
+ /**
74
+ * 生成新的 sessionId
75
+ * @returns 新的短 UUID 格式的 sessionId(8位)
76
+ */
77
+ function generateSessionId() {
78
+ return crypto.randomUUID().replace(/-/g, '').substring(0, 8);
79
+ }
80
+ /**
81
+ * 初始化 sessionId
82
+ * 如果提供了 historyPath 且能成功解析出 sessionId,则使用解析出的 sessionId
83
+ * 否则生成新的 sessionId
84
+ * @param historyPath 可选的历史文件路径
85
+ * @returns sessionId
86
+ */
87
+ function initializeSessionId(historyPath) {
88
+ if (historyPath) {
89
+ const parsedSessionId = parseSessionIdFromHistoryPath(historyPath);
90
+ if (parsedSessionId) {
91
+ return parsedSessionId;
92
+ }
93
+ }
94
+ return generateSessionId();
95
+ }
96
+ /**
97
+ * 验证 sessionId 格式
98
+ * @param sessionId 要验证的 sessionId
99
+ * @returns 是否为有效的短 UUID 格式
100
+ */
101
+ function validateSessionId(sessionId) {
102
+ const shortIdRegex = /^[0-9a-f]{8}$/i;
103
+ return shortIdRegex.test(sessionId);
104
+ }
105
+ /**
106
+ * 根据 sessionId 生成历史文件路径
107
+ * @param sessionId 会话ID
108
+ * @param baseDir 基础目录,默认使用 path.ts 中的统一配置
109
+ * @returns 历史文件路径
110
+ */
111
+ function generateHistoryPath(sessionId, baseDir) {
112
+ if (baseDir) {
113
+ const today = (0, time_1.getDayTimeString)(); // YYYY-MM-DD 格式
114
+ const fileName = `${today}_${sessionId}.json`;
115
+ return path.join(baseDir, fileName);
116
+ }
117
+ // 使用 path.ts 中统一的路径获取函数
118
+ return (0, savePath_1.getHistoryFilePath)(sessionId);
119
+ }
120
+ //# sourceMappingURL=session.js.map