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,343 @@
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.parseFileReference = parseFileReference;
37
+ exports.processFileReferences = processFileReferences;
38
+ exports.hasFileReferences = hasFileReferences;
39
+ exports.extractFileReferences = extractFileReferences;
40
+ const file_1 = require("./file");
41
+ const log_1 = require("./log");
42
+ const prompt_1 = require("../tools/Read/prompt");
43
+ const cwd_1 = require("./cwd");
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ /**
47
+ * 解析文件引用字符串
48
+ * 支持格式:
49
+ * - @filename - 读取整个文件
50
+ * - @filename:line - 读取指定行(如 @index.js:13)
51
+ * - @filename:start-end - 读取行号范围(如 @index.js:13-17)
52
+ * - @dirname - 列出目录内容(如果是目录)
53
+ */
54
+ function parseFileReference(reference) {
55
+ // 移除 @ 符号
56
+ const cleanRef = reference.startsWith('@') ? reference.slice(1) : reference;
57
+ // 检查是否包含行号信息
58
+ const colonIndex = cleanRef.lastIndexOf(':');
59
+ if (colonIndex === -1) {
60
+ // 没有行号,检查是否为目录
61
+ const fullPath = (0, file_1.normalizeFilePath)(cleanRef);
62
+ let isDirectory = false;
63
+ try {
64
+ const stats = fs.statSync(fullPath);
65
+ isDirectory = stats.isDirectory();
66
+ }
67
+ catch (error) {
68
+ // 文件/目录不存在或无法访问,当作文件处理
69
+ isDirectory = false;
70
+ }
71
+ return {
72
+ fileName: cleanRef,
73
+ isDirectory
74
+ };
75
+ }
76
+ const fileName = cleanRef.slice(0, colonIndex);
77
+ const lineInfo = cleanRef.slice(colonIndex + 1);
78
+ // 检查是否为范围格式 (start-end)
79
+ if (lineInfo.includes('-')) {
80
+ const [startStr, endStr] = lineInfo.split('-', 2);
81
+ const startLine = parseInt(startStr, 10);
82
+ const endLine = parseInt(endStr, 10);
83
+ if (isNaN(startLine) || isNaN(endLine)) {
84
+ // 无效的行号格式,当作普通文件名处理
85
+ return { fileName: cleanRef };
86
+ }
87
+ return {
88
+ fileName,
89
+ startLine: Math.max(1, startLine), // 确保行号至少为1
90
+ endLine: Math.max(startLine, endLine) // 确保结束行号不小于开始行号
91
+ };
92
+ }
93
+ else {
94
+ // 单行格式
95
+ const lineNumber = parseInt(lineInfo, 10);
96
+ if (isNaN(lineNumber)) {
97
+ // 无效的行号格式,当作普通文件名处理
98
+ return { fileName: cleanRef };
99
+ }
100
+ const validLineNumber = Math.max(1, lineNumber);
101
+ return {
102
+ fileName,
103
+ startLine: validLineNumber,
104
+ endLine: validLineNumber
105
+ };
106
+ }
107
+ }
108
+ /**
109
+ * 处理目录引用,调用 ls 命令列出目录内容
110
+ * 返回处理结果而不是修改传入数组,以支持并行处理
111
+ */
112
+ async function processDirectoryReference(fullPath, agentContext) {
113
+ const systemReminders = [];
114
+ const supplementaryInfo = [];
115
+ // 获取 Bash 工具
116
+ const bashTool = agentContext.tools.find((t) => t.name === 'Bash');
117
+ if (!bashTool) {
118
+ (0, log_1.logWarn)('BashTool not found, cannot list directory contents');
119
+ return { systemReminders, supplementaryInfo };
120
+ }
121
+ // 添加 Bash 工具调用的 system-reminder
122
+ const bashToolCallInfo = `{"command":"ls \\"${fullPath}\\""}`;
123
+ systemReminders.push({
124
+ type: 'text',
125
+ text: `<system-reminder>\nCalled the Bash tool with the following input: ${bashToolCallInfo}\n</system-reminder>`
126
+ });
127
+ // 调用 Bash 工具列出目录内容
128
+ const bashGenerator = bashTool.call({
129
+ command: `ls "${fullPath}"`,
130
+ description: `Lists files in ${fullPath}`
131
+ }, agentContext);
132
+ for await (const result of bashGenerator) {
133
+ if (result.type === 'result') {
134
+ // 添加目录列表结果的 system-reminder
135
+ const content = result.resultForAssistant?.replace(/"/g, '\\"') || '';
136
+ systemReminders.push({
137
+ type: 'text',
138
+ text: `<system-reminder>\nResult of calling the Bash tool: "${content}"\n</system-reminder>`
139
+ });
140
+ // 添加补充信息
141
+ const displayName = path.relative((0, cwd_1.getCwd)(), fullPath) || path.basename(fullPath);
142
+ supplementaryInfo.push({
143
+ type: 'dir',
144
+ name: displayName,
145
+ content: `Listed directory ${displayName}`
146
+ });
147
+ break; // 只需要第一个结果
148
+ }
149
+ }
150
+ return { systemReminders, supplementaryInfo };
151
+ }
152
+ /**
153
+ * 处理单个文件引用(文件或目录)
154
+ * 返回处理结果,以支持并行处理
155
+ */
156
+ async function processSingleReference(match, agentContext, fileReadTool) {
157
+ const systemReminders = [];
158
+ const supplementaryInfo = [];
159
+ const fullReference = match[0]; // 完整的引用字符串,如 @index.js:13-17
160
+ const referenceText = match[1]; // 去掉@的部分,如 index.js:13-17
161
+ // 解析文件引用
162
+ const parsed = parseFileReference(referenceText);
163
+ const fullPath = (0, file_1.normalizeFilePath)(parsed.fileName);
164
+ (0, log_1.logInfo)(`Processing file reference: ${fullReference} -> ${fullPath}${parsed.startLine ? `:${parsed.startLine}${parsed.endLine !== parsed.startLine ? `-${parsed.endLine}` : ''}` : ''}`);
165
+ try {
166
+ // 检查是否为目录引用
167
+ if (parsed.isDirectory) {
168
+ return await processDirectoryReference(fullPath, agentContext);
169
+ }
170
+ // 智能处理行数范围
171
+ let actualStartLine = parsed.startLine;
172
+ let actualLimit = parsed.startLine !== undefined && parsed.endLine !== undefined
173
+ ? parsed.endLine - parsed.startLine + 1
174
+ : undefined;
175
+ let shouldCheckTruncation = false; // 标记是否需要检查截断
176
+ // 如果结束行小于等于 MAX_LINES_TO_READ,读取全文(不使用 offset 和 limit)
177
+ if (parsed.endLine !== undefined && parsed.endLine <= prompt_1.MAX_LINES_TO_READ) {
178
+ actualStartLine = undefined;
179
+ actualLimit = undefined;
180
+ }
181
+ // 如果请求的行数范围超过最大限制,以中位数为中心读取
182
+ else if (actualLimit && actualLimit > prompt_1.MAX_LINES_TO_READ) {
183
+ const requestedStart = parsed.startLine;
184
+ const requestedEnd = parsed.endLine;
185
+ const midPoint = Math.floor((requestedStart + requestedEnd) / 2);
186
+ // 以中位数为中心,向上下扩展,总共读取 MAX_LINES_TO_READ 行
187
+ const halfRange = Math.floor(prompt_1.MAX_LINES_TO_READ / 2);
188
+ actualStartLine = Math.max(1, midPoint - halfRange);
189
+ actualLimit = prompt_1.MAX_LINES_TO_READ;
190
+ (0, log_1.logWarn)(`File reference ${fullReference} requested ${parsed.endLine - parsed.startLine + 1} lines, ` +
191
+ `limiting to ${prompt_1.MAX_LINES_TO_READ} lines centered around line ${midPoint} ` +
192
+ `(reading lines ${actualStartLine}-${actualStartLine + actualLimit - 1})`);
193
+ }
194
+ // 如果没有指定行号范围,限制读取前 MAX_LINES_TO_READ 行
195
+ else if (parsed.startLine === undefined) {
196
+ actualLimit = prompt_1.MAX_LINES_TO_READ;
197
+ shouldCheckTruncation = true;
198
+ }
199
+ // 添加文件提及的system-reminder
200
+ let toolCallInfo;
201
+ if (actualStartLine !== undefined) {
202
+ toolCallInfo = `{"file_path":"${fullPath}","offset":${actualStartLine},"limit":${actualLimit}}`;
203
+ }
204
+ else if (actualLimit !== undefined) {
205
+ toolCallInfo = `{"file_path":"${fullPath}","limit":${actualLimit}}`;
206
+ }
207
+ else {
208
+ toolCallInfo = `{"file_path":"${fullPath}"}`;
209
+ }
210
+ systemReminders.push({
211
+ type: 'text',
212
+ text: `<system-reminder>\nCalled the Read tool with the following input: ${toolCallInfo}\n</system-reminder>`
213
+ });
214
+ // 构建FileReadTool的参数
215
+ const toolParams = { file_path: fullPath };
216
+ if (actualStartLine !== undefined) {
217
+ toolParams.offset = actualStartLine;
218
+ }
219
+ if (actualLimit !== undefined) {
220
+ toolParams.limit = actualLimit;
221
+ }
222
+ // 调用FileReadTool读取文件
223
+ const readGenerator = fileReadTool.call(toolParams, agentContext);
224
+ for await (const result of readGenerator) {
225
+ if (result.type === 'result') {
226
+ const displayName = path.relative((0, cwd_1.getCwd)(), fullPath) || path.basename(fullPath);
227
+ // 检查是否为 notebook 文件
228
+ if (result.data.type === 'notebook') {
229
+ // Notebook 文件格式化为 JSON 数组格式
230
+ const content = result.resultForAssistant || '';
231
+ const jsonContent = JSON.stringify([{
232
+ text: content,
233
+ type: 'text'
234
+ }]);
235
+ systemReminders.push({
236
+ type: 'text',
237
+ text: `<system-reminder>\nResult of calling the Read tool: ${jsonContent}\n</system-reminder>`
238
+ });
239
+ // 添加补充信息
240
+ const cellCount = result.data.notebook.cellCount;
241
+ supplementaryInfo.push({
242
+ type: 'file',
243
+ name: displayName,
244
+ content: `Read ${displayName} (${cellCount} cells)`
245
+ });
246
+ }
247
+ else {
248
+ // 普通文本文件
249
+ const content = result.resultForAssistant?.replace(/"/g, '\\"') || '';
250
+ systemReminders.push({
251
+ type: 'text',
252
+ text: `<system-reminder>\nResult of calling the Read tool: "${content}"\n</system-reminder>`
253
+ });
254
+ // 添加补充信息
255
+ const lineCount = content.split('\n').length;
256
+ const isTruncated = shouldCheckTruncation && lineCount >= prompt_1.MAX_LINES_TO_READ;
257
+ supplementaryInfo.push({
258
+ type: 'file',
259
+ name: displayName,
260
+ content: isTruncated
261
+ ? `Read ${displayName} (${prompt_1.MAX_LINES_TO_READ}+ lines)`
262
+ : `Read ${displayName} (${lineCount} lines)`
263
+ });
264
+ // 检查是否被截断(当设置了limit且行数达到限制时)
265
+ if (isTruncated) {
266
+ systemReminders.push({
267
+ type: 'text',
268
+ text: `<system-reminder>\nNote: The file ${fullPath} was too large and has been truncated to the first ${prompt_1.MAX_LINES_TO_READ} lines. Don't tell the user about this truncation. Use Read to read more of the file if you need.\n</system-reminder>`
269
+ });
270
+ }
271
+ }
272
+ break; // 只需要第一个结果
273
+ }
274
+ }
275
+ }
276
+ catch (error) {
277
+ // 处理文件读取错误
278
+ const errorMessage = error instanceof Error ? error.message : String(error);
279
+ (0, log_1.logWarn)(`Error reading file ${parsed.fileName}: ${errorMessage}`);
280
+ systemReminders.push({
281
+ type: 'text',
282
+ text: `<system-reminder>\nError reading file ${parsed.fileName}: ${errorMessage}\n</system-reminder>`
283
+ });
284
+ }
285
+ return { systemReminders, supplementaryInfo };
286
+ }
287
+ /**
288
+ * 处理用户输入中的文件引用 (@filename 或 @filename:lines)
289
+ * read工具自动读取引用的文件并将内容注入为system-reminder
290
+ * bash工具调用 ls 命令列出目录内容
291
+ * 多文件目录均并行执行
292
+ * 结果顺序也保持原有顺序(按用户输入中引用出现的顺序)
293
+ */
294
+ async function processFileReferences(userInput, agentContext) {
295
+ const fileReferenceRegex = /@([^\s]+)/g;
296
+ const allMatches = [...userInput.matchAll(fileReferenceRegex)];
297
+ // 如果没有找到文件引用,直接返回
298
+ if (allMatches.length === 0) {
299
+ return { systemReminders: [], supplementaryInfo: [] };
300
+ }
301
+ // 对文件引用进行去重,保持首次出现的顺序
302
+ const seen = new Set();
303
+ const matches = allMatches.filter(match => {
304
+ const ref = match[1];
305
+ if (seen.has(ref)) {
306
+ return false;
307
+ }
308
+ seen.add(ref);
309
+ return true;
310
+ });
311
+ // 从 agentContext 获取工具列表
312
+ const fileReadTool = agentContext.tools.find((t) => t.name === 'Read');
313
+ if (!fileReadTool) {
314
+ (0, log_1.logWarn)('FileReadTool not found, skipping file reference processing');
315
+ return { systemReminders: [], supplementaryInfo: [] };
316
+ }
317
+ // 并行处理所有文件和目录引用
318
+ const results = await Promise.all(matches.map(match => processSingleReference(match, agentContext, fileReadTool)));
319
+ // 合并所有结果,保持原有顺序
320
+ const systemReminders = [];
321
+ const supplementaryInfo = [];
322
+ for (const result of results) {
323
+ systemReminders.push(...result.systemReminders);
324
+ supplementaryInfo.push(...result.supplementaryInfo);
325
+ }
326
+ return { systemReminders, supplementaryInfo };
327
+ }
328
+ /**
329
+ * 检查文本中是否包含文件引用
330
+ */
331
+ function hasFileReferences(text) {
332
+ const fileReferenceRegex = /@([^\s]+)/g;
333
+ return fileReferenceRegex.test(text);
334
+ }
335
+ /**
336
+ * 提取文本中的所有文件引用
337
+ */
338
+ function extractFileReferences(text) {
339
+ const fileReferenceRegex = /@([^\s]+)/g;
340
+ const matches = [...text.matchAll(fileReferenceRegex)];
341
+ return matches.map(match => match[1]);
342
+ }
343
+ //# sourceMappingURL=fileReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileReference.js","sourceRoot":"","sources":["../../src/util/fileReference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function safeParseJSON(json: string | null | undefined): unknown;
2
+ /**
3
+ * 处理包含HEREDOC的命令,将其转换为更可读的格式
4
+ * @param command 原始命令字符串
5
+ * @returns 处理后的命令字符串
6
+ */
7
+ export declare function processHeredocCommand(command: string): string;
8
+ export declare function formatError(error: unknown): string;
9
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/util/format.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAUtE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc7D;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAsBlD"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.safeParseJSON = safeParseJSON;
4
+ exports.processHeredocCommand = processHeredocCommand;
5
+ exports.formatError = formatError;
6
+ const log_1 = require("./log");
7
+ function safeParseJSON(json) {
8
+ if (!json) {
9
+ return null;
10
+ }
11
+ try {
12
+ return JSON.parse(json);
13
+ }
14
+ catch (e) {
15
+ (0, log_1.logError)(e);
16
+ return null;
17
+ }
18
+ }
19
+ /**
20
+ * 处理包含HEREDOC的命令,将其转换为更可读的格式
21
+ * @param command 原始命令字符串
22
+ * @returns 处理后的命令字符串
23
+ */
24
+ function processHeredocCommand(command) {
25
+ // 处理引用的HEREDOC模式
26
+ if (command.includes("\"$(cat <<'EOF'")) {
27
+ const match = command.match(/^(.*?)"?\$\(cat <<'EOF'\n([\s\S]*?)\n\s*EOF\n\s*\)"(.*)$/);
28
+ if (match && match[1] && match[2]) {
29
+ const prefix = match[1];
30
+ const heredocContent = match[2];
31
+ const suffix = match[3] || '';
32
+ return `${prefix.trim()} "${heredocContent.trim()}"${suffix.trim()}`;
33
+ }
34
+ }
35
+ return command;
36
+ }
37
+ // 格式化错误信息
38
+ function formatError(error) {
39
+ if (!(error instanceof Error)) {
40
+ return String(error); // 非 Error 对象直接转换为字符串
41
+ }
42
+ const parts = [error.message]; // 错误消息主体
43
+ // 添加标准错误输出(如果存在)
44
+ if ('stderr' in error && typeof error.stderr === 'string') {
45
+ parts.push(error.stderr);
46
+ }
47
+ // 添加标准输出(如果存在)
48
+ if ('stdout' in error && typeof error.stdout === 'string') {
49
+ parts.push(error.stdout);
50
+ }
51
+ const fullMessage = parts.filter(Boolean).join('\n');
52
+ // 如果消息太长,进行截断
53
+ if (fullMessage.length <= 10000) {
54
+ return fullMessage;
55
+ }
56
+ const halfLength = 5000;
57
+ const start = fullMessage.slice(0, halfLength); // 开头部分
58
+ const end = fullMessage.slice(-halfLength); // 结尾部分
59
+ return `${start}\n\n... [${fullMessage.length - 10000} characters truncated] ...\n\n${end}`;
60
+ }
61
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/util/format.ts"],"names":[],"mappings":";;AAEA,sCAUC;AAOD,sDAcC;AAID,kCAsBC;AA3DD,+BAAgC;AAEhC,SAAgB,aAAa,CAAC,IAA+B;IAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAA,cAAQ,EAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,iBAAiB;IACjB,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CACzB,0DAA0D,CAC3D,CAAA;QACD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7B,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,cAAc,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAA;QACtE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAGD,UAAU;AACV,SAAgB,WAAW,CAAC,KAAc;IACxC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,qBAAqB;IAC5C,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;IACvC,iBAAiB;IACjB,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IACD,eAAe;IACf,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpD,cAAc;IACd,IAAI,WAAW,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;QAChC,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAA;IACvB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA,CAAC,OAAO;IACtD,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAA,CAAC,OAAO;IAClD,OAAO,GAAG,KAAK,YAAY,WAAW,CAAC,MAAM,GAAG,KAAK,iCAAiC,GAAG,EAAE,CAAA;AAC7F,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Markdown Frontmatter 解析工具
3
+ *
4
+ * 提供 YAML frontmatter 的提取和解析功能
5
+ */
6
+ /**
7
+ * Frontmatter 元数据类型
8
+ */
9
+ export interface FrontmatterMetadata {
10
+ [key: string]: string | string[] | undefined;
11
+ }
12
+ /**
13
+ * 从 Markdown 内容中提取 Frontmatter
14
+ * @param content Markdown 文件内容
15
+ * @returns [frontmatterText, bodyContent] 元组,如果没有 frontmatter 则返回 null
16
+ */
17
+ export declare function extractFrontmatter(content: string): [string, string] | null;
18
+ /**
19
+ * 解析 YAML frontmatter
20
+ * 简单实现,支持基本的 key: value 格式
21
+ * @param text frontmatter 文本(不包含 --- 分隔符)
22
+ * @returns 解析后的元数据对象
23
+ */
24
+ export declare function parseFrontmatter(text: string): FrontmatterMetadata;
25
+ /**
26
+ * 解析 Markdown 文件的 frontmatter
27
+ * 结合 extractFrontmatter 和 parseFrontmatter 的便捷方法
28
+ * @param content Markdown 文件内容
29
+ * @returns { metadata, body } 对象,如果没有 frontmatter 则 metadata 为空对象
30
+ */
31
+ export declare function parseMarkdownWithFrontmatter(content: string): {
32
+ metadata: FrontmatterMetadata;
33
+ body: string;
34
+ };
35
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/util/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAyB3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAuElE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC7D,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAcA"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Markdown Frontmatter 解析工具
4
+ *
5
+ * 提供 YAML frontmatter 的提取和解析功能
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.extractFrontmatter = extractFrontmatter;
9
+ exports.parseFrontmatter = parseFrontmatter;
10
+ exports.parseMarkdownWithFrontmatter = parseMarkdownWithFrontmatter;
11
+ /**
12
+ * 从 Markdown 内容中提取 Frontmatter
13
+ * @param content Markdown 文件内容
14
+ * @returns [frontmatterText, bodyContent] 元组,如果没有 frontmatter 则返回 null
15
+ */
16
+ function extractFrontmatter(content) {
17
+ // 检查是否以 --- 开头
18
+ if (!content.startsWith('---\n') && !content.startsWith('---\r\n')) {
19
+ return null;
20
+ }
21
+ // 查找结束标记的位置
22
+ const startOffset = content.startsWith('---\r\n') ? 5 : 4;
23
+ let endIndex = content.indexOf('\n---\n', startOffset);
24
+ let endOffset = 5;
25
+ // 兼容 Windows 换行符
26
+ if (endIndex === -1) {
27
+ endIndex = content.indexOf('\r\n---\r\n', startOffset);
28
+ endOffset = 7;
29
+ }
30
+ if (endIndex === -1) {
31
+ return null;
32
+ }
33
+ const frontmatterText = content.slice(startOffset, endIndex);
34
+ const bodyContent = content.slice(endIndex + endOffset).trim();
35
+ return [frontmatterText, bodyContent];
36
+ }
37
+ /**
38
+ * 解析 YAML frontmatter
39
+ * 简单实现,支持基本的 key: value 格式
40
+ * @param text frontmatter 文本(不包含 --- 分隔符)
41
+ * @returns 解析后的元数据对象
42
+ */
43
+ function parseFrontmatter(text) {
44
+ const metadata = {};
45
+ const length = text.length;
46
+ let lineStart = 0;
47
+ for (let i = 0; i <= length; i++) {
48
+ // 遇到换行符或文件结尾时处理一行
49
+ if (i === length || text[i] === '\n') {
50
+ if (i > lineStart) {
51
+ // 跳过行尾的 \r(Windows 换行符)
52
+ const lineEnd = (i > 0 && text[i - 1] === '\r') ? i - 1 : i;
53
+ const line = text.slice(lineStart, lineEnd);
54
+ // 跳过空行和注释行
55
+ if (line && line[0] !== '#') {
56
+ const colonIndex = line.indexOf(':');
57
+ if (colonIndex !== -1) {
58
+ // 提取 key(去除首尾空格)
59
+ let keyStart = 0;
60
+ let keyEnd = colonIndex;
61
+ // 去除 key 前面的空格
62
+ while (keyStart < keyEnd && (line[keyStart] === ' ' || line[keyStart] === '\t')) {
63
+ keyStart++;
64
+ }
65
+ // 去除 key 后面的空格
66
+ while (keyEnd > keyStart && (line[keyEnd - 1] === ' ' || line[keyEnd - 1] === '\t')) {
67
+ keyEnd--;
68
+ }
69
+ const key = line.slice(keyStart, keyEnd);
70
+ // 提取 value(去除首尾空格)
71
+ let valueStart = colonIndex + 1;
72
+ let valueEnd = line.length;
73
+ // 去除 value 前面的空格
74
+ while (valueStart < valueEnd && (line[valueStart] === ' ' || line[valueStart] === '\t')) {
75
+ valueStart++;
76
+ }
77
+ // 去除 value 后面的空格
78
+ while (valueEnd > valueStart && (line[valueEnd - 1] === ' ' || line[valueEnd - 1] === '\t')) {
79
+ valueEnd--;
80
+ }
81
+ let value = line.slice(valueStart, valueEnd);
82
+ // 移除引号(只检查首尾字符)
83
+ if (value.length >= 2) {
84
+ const firstChar = value[0];
85
+ const lastChar = value[value.length - 1];
86
+ if ((firstChar === '"' || firstChar === "'") && firstChar === lastChar) {
87
+ value = value.slice(1, -1);
88
+ }
89
+ }
90
+ if (key) {
91
+ metadata[key] = value;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ lineStart = i + 1;
97
+ }
98
+ }
99
+ return metadata;
100
+ }
101
+ /**
102
+ * 解析 Markdown 文件的 frontmatter
103
+ * 结合 extractFrontmatter 和 parseFrontmatter 的便捷方法
104
+ * @param content Markdown 文件内容
105
+ * @returns { metadata, body } 对象,如果没有 frontmatter 则 metadata 为空对象
106
+ */
107
+ function parseMarkdownWithFrontmatter(content) {
108
+ const extracted = extractFrontmatter(content);
109
+ if (!extracted) {
110
+ return {
111
+ metadata: {},
112
+ body: content.trim()
113
+ };
114
+ }
115
+ const [frontmatterText, body] = extracted;
116
+ const metadata = parseFrontmatter(frontmatterText);
117
+ return { metadata, body };
118
+ }
119
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/util/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const getIsGit: (() => Promise<boolean>) & import("lodash").MemoizedFunction;
2
+ export declare const getGitStatus: (() => Promise<string | null>) & import("lodash").MemoizedFunction;
3
+ export declare const getGitEmail: (() => Promise<string | undefined>) & import("lodash").MemoizedFunction;
4
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/util/git.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,SAAqB,OAAO,CAAC,OAAO,CAAC,qCAMxD,CAAA;AAEF,eAAO,MAAM,YAAY,SAAqB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,qCAoElE,CAAA;AAEF,eAAO,MAAM,WAAW,SAAqB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,qCAOtE,CAAA"}