@marifold/core 0.60.0

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 (310) hide show
  1. package/LICENSE +674 -0
  2. package/dist/agent/AgentEvents.d.ts +106 -0
  3. package/dist/agent/AgentEvents.d.ts.map +1 -0
  4. package/dist/agent/AgentEvents.js +3 -0
  5. package/dist/agent/AgentEvents.js.map +1 -0
  6. package/dist/agent/AgentHistory.d.ts +27 -0
  7. package/dist/agent/AgentHistory.d.ts.map +1 -0
  8. package/dist/agent/AgentHistory.js +42 -0
  9. package/dist/agent/AgentHistory.js.map +1 -0
  10. package/dist/agent/AgentRunner.d.ts +149 -0
  11. package/dist/agent/AgentRunner.d.ts.map +1 -0
  12. package/dist/agent/AgentRunner.js +727 -0
  13. package/dist/agent/AgentRunner.js.map +1 -0
  14. package/dist/agent/ApprovalPolicy.d.ts +71 -0
  15. package/dist/agent/ApprovalPolicy.d.ts.map +1 -0
  16. package/dist/agent/ApprovalPolicy.js +29 -0
  17. package/dist/agent/ApprovalPolicy.js.map +1 -0
  18. package/dist/agent/ControlBlockTools.d.ts +9 -0
  19. package/dist/agent/ControlBlockTools.d.ts.map +1 -0
  20. package/dist/agent/ControlBlockTools.js +49 -0
  21. package/dist/agent/ControlBlockTools.js.map +1 -0
  22. package/dist/agent/RunWorkspace.d.ts +92 -0
  23. package/dist/agent/RunWorkspace.d.ts.map +1 -0
  24. package/dist/agent/RunWorkspace.js +328 -0
  25. package/dist/agent/RunWorkspace.js.map +1 -0
  26. package/dist/agent/ScopedProcess.d.ts +35 -0
  27. package/dist/agent/ScopedProcess.d.ts.map +1 -0
  28. package/dist/agent/ScopedProcess.js +280 -0
  29. package/dist/agent/ScopedProcess.js.map +1 -0
  30. package/dist/agent/ToolRegistry.d.ts +80 -0
  31. package/dist/agent/ToolRegistry.d.ts.map +1 -0
  32. package/dist/agent/ToolRegistry.js +45 -0
  33. package/dist/agent/ToolRegistry.js.map +1 -0
  34. package/dist/agent/UserInput.d.ts +59 -0
  35. package/dist/agent/UserInput.d.ts.map +1 -0
  36. package/dist/agent/UserInput.js +203 -0
  37. package/dist/agent/UserInput.js.map +1 -0
  38. package/dist/agent/tools/AskUserTool.d.ts +71 -0
  39. package/dist/agent/tools/AskUserTool.d.ts.map +1 -0
  40. package/dist/agent/tools/AskUserTool.js +70 -0
  41. package/dist/agent/tools/AskUserTool.js.map +1 -0
  42. package/dist/agent/tools/DelegateTool.d.ts +49 -0
  43. package/dist/agent/tools/DelegateTool.d.ts.map +1 -0
  44. package/dist/agent/tools/DelegateTool.js +62 -0
  45. package/dist/agent/tools/DelegateTool.js.map +1 -0
  46. package/dist/agent/tools/InspectAttachmentTool.d.ts +25 -0
  47. package/dist/agent/tools/InspectAttachmentTool.d.ts.map +1 -0
  48. package/dist/agent/tools/InspectAttachmentTool.js +129 -0
  49. package/dist/agent/tools/InspectAttachmentTool.js.map +1 -0
  50. package/dist/agent/tools/PythonPackageTool.d.ts +26 -0
  51. package/dist/agent/tools/PythonPackageTool.d.ts.map +1 -0
  52. package/dist/agent/tools/PythonPackageTool.js +105 -0
  53. package/dist/agent/tools/PythonPackageTool.js.map +1 -0
  54. package/dist/agent/tools/ReadFileTool.d.ts +24 -0
  55. package/dist/agent/tools/ReadFileTool.d.ts.map +1 -0
  56. package/dist/agent/tools/ReadFileTool.js +112 -0
  57. package/dist/agent/tools/ReadFileTool.js.map +1 -0
  58. package/dist/agent/tools/ShellExecTool.d.ts +23 -0
  59. package/dist/agent/tools/ShellExecTool.d.ts.map +1 -0
  60. package/dist/agent/tools/ShellExecTool.js +75 -0
  61. package/dist/agent/tools/ShellExecTool.js.map +1 -0
  62. package/dist/agent/tools/WebSearchTool.d.ts +26 -0
  63. package/dist/agent/tools/WebSearchTool.d.ts.map +1 -0
  64. package/dist/agent/tools/WebSearchTool.js +52 -0
  65. package/dist/agent/tools/WebSearchTool.js.map +1 -0
  66. package/dist/agent/tools/WriteFileTool.d.ts +30 -0
  67. package/dist/agent/tools/WriteFileTool.d.ts.map +1 -0
  68. package/dist/agent/tools/WriteFileTool.js +155 -0
  69. package/dist/agent/tools/WriteFileTool.js.map +1 -0
  70. package/dist/app/AppActionResolver.d.ts +15 -0
  71. package/dist/app/AppActionResolver.d.ts.map +1 -0
  72. package/dist/app/AppActionResolver.js +98 -0
  73. package/dist/app/AppActionResolver.js.map +1 -0
  74. package/dist/app/AppSchema.d.ts +83 -0
  75. package/dist/app/AppSchema.d.ts.map +1 -0
  76. package/dist/app/AppSchema.js +17 -0
  77. package/dist/app/AppSchema.js.map +1 -0
  78. package/dist/app/AppStore.d.ts +14 -0
  79. package/dist/app/AppStore.d.ts.map +1 -0
  80. package/dist/app/AppStore.js +146 -0
  81. package/dist/app/AppStore.js.map +1 -0
  82. package/dist/app/AppValidator.d.ts +10 -0
  83. package/dist/app/AppValidator.d.ts.map +1 -0
  84. package/dist/app/AppValidator.js +503 -0
  85. package/dist/app/AppValidator.js.map +1 -0
  86. package/dist/app/SkillAppCompiler.d.ts +5 -0
  87. package/dist/app/SkillAppCompiler.d.ts.map +1 -0
  88. package/dist/app/SkillAppCompiler.js +632 -0
  89. package/dist/app/SkillAppCompiler.js.map +1 -0
  90. package/dist/app/SkillAppDsl.d.ts +93 -0
  91. package/dist/app/SkillAppDsl.d.ts.map +1 -0
  92. package/dist/app/SkillAppDsl.js +72 -0
  93. package/dist/app/SkillAppDsl.js.map +1 -0
  94. package/dist/app/SkillAppInstanceRegistry.d.ts +25 -0
  95. package/dist/app/SkillAppInstanceRegistry.d.ts.map +1 -0
  96. package/dist/app/SkillAppInstanceRegistry.js +218 -0
  97. package/dist/app/SkillAppInstanceRegistry.js.map +1 -0
  98. package/dist/app/SkillAppResolver.d.ts +12 -0
  99. package/dist/app/SkillAppResolver.d.ts.map +1 -0
  100. package/dist/app/SkillAppResolver.js +89 -0
  101. package/dist/app/SkillAppResolver.js.map +1 -0
  102. package/dist/app/SkillAppSchema.d.ts +116 -0
  103. package/dist/app/SkillAppSchema.d.ts.map +1 -0
  104. package/dist/app/SkillAppSchema.js +5 -0
  105. package/dist/app/SkillAppSchema.js.map +1 -0
  106. package/dist/channels/TelegramBridge.d.ts +103 -0
  107. package/dist/channels/TelegramBridge.d.ts.map +1 -0
  108. package/dist/channels/TelegramBridge.js +565 -0
  109. package/dist/channels/TelegramBridge.js.map +1 -0
  110. package/dist/channels/respond.d.ts +46 -0
  111. package/dist/channels/respond.d.ts.map +1 -0
  112. package/dist/channels/respond.js +41 -0
  113. package/dist/channels/respond.js.map +1 -0
  114. package/dist/config/ChatGptTokenRefresh.d.ts +18 -0
  115. package/dist/config/ChatGptTokenRefresh.d.ts.map +1 -0
  116. package/dist/config/ChatGptTokenRefresh.js +63 -0
  117. package/dist/config/ChatGptTokenRefresh.js.map +1 -0
  118. package/dist/config/ConfigBackup.d.ts +20 -0
  119. package/dist/config/ConfigBackup.d.ts.map +1 -0
  120. package/dist/config/ConfigBackup.js +197 -0
  121. package/dist/config/ConfigBackup.js.map +1 -0
  122. package/dist/config/ConfigLoader.d.ts +28 -0
  123. package/dist/config/ConfigLoader.d.ts.map +1 -0
  124. package/dist/config/ConfigLoader.js +335 -0
  125. package/dist/config/ConfigLoader.js.map +1 -0
  126. package/dist/config/ConfigManager.d.ts +55 -0
  127. package/dist/config/ConfigManager.d.ts.map +1 -0
  128. package/dist/config/ConfigManager.js +707 -0
  129. package/dist/config/ConfigManager.js.map +1 -0
  130. package/dist/config/ConfigSchema.d.ts +231 -0
  131. package/dist/config/ConfigSchema.d.ts.map +1 -0
  132. package/dist/config/ConfigSchema.js +15 -0
  133. package/dist/config/ConfigSchema.js.map +1 -0
  134. package/dist/config/GitHubCopilotAuth.d.ts +7 -0
  135. package/dist/config/GitHubCopilotAuth.d.ts.map +1 -0
  136. package/dist/config/GitHubCopilotAuth.js +40 -0
  137. package/dist/config/GitHubCopilotAuth.js.map +1 -0
  138. package/dist/config/MarifoldOpenAICompatProvider.d.ts +39 -0
  139. package/dist/config/MarifoldOpenAICompatProvider.d.ts.map +1 -0
  140. package/dist/config/MarifoldOpenAICompatProvider.js +158 -0
  141. package/dist/config/MarifoldOpenAICompatProvider.js.map +1 -0
  142. package/dist/config/OpenAICompatUrls.d.ts +7 -0
  143. package/dist/config/OpenAICompatUrls.d.ts.map +1 -0
  144. package/dist/config/OpenAICompatUrls.js +47 -0
  145. package/dist/config/OpenAICompatUrls.js.map +1 -0
  146. package/dist/config/ProviderFactory.d.ts +12 -0
  147. package/dist/config/ProviderFactory.d.ts.map +1 -0
  148. package/dist/config/ProviderFactory.js +61 -0
  149. package/dist/config/ProviderFactory.js.map +1 -0
  150. package/dist/config/ProviderInspector.d.ts +46 -0
  151. package/dist/config/ProviderInspector.d.ts.map +1 -0
  152. package/dist/config/ProviderInspector.js +356 -0
  153. package/dist/config/ProviderInspector.js.map +1 -0
  154. package/dist/config/ProviderRegistry.d.ts +19 -0
  155. package/dist/config/ProviderRegistry.d.ts.map +1 -0
  156. package/dist/config/ProviderRegistry.js +301 -0
  157. package/dist/config/ProviderRegistry.js.map +1 -0
  158. package/dist/config/XaiTokenRefresh.d.ts +15 -0
  159. package/dist/config/XaiTokenRefresh.d.ts.map +1 -0
  160. package/dist/config/XaiTokenRefresh.js +73 -0
  161. package/dist/config/XaiTokenRefresh.js.map +1 -0
  162. package/dist/errors/MarifoldError.d.ts +34 -0
  163. package/dist/errors/MarifoldError.d.ts.map +1 -0
  164. package/dist/errors/MarifoldError.js +100 -0
  165. package/dist/errors/MarifoldError.js.map +1 -0
  166. package/dist/images/ImageOptimizer.d.ts +34 -0
  167. package/dist/images/ImageOptimizer.d.ts.map +1 -0
  168. package/dist/images/ImageOptimizer.js +225 -0
  169. package/dist/images/ImageOptimizer.js.map +1 -0
  170. package/dist/index.d.ts +96 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +193 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/memory/MemoryControls.d.ts +26 -0
  175. package/dist/memory/MemoryControls.d.ts.map +1 -0
  176. package/dist/memory/MemoryControls.js +388 -0
  177. package/dist/memory/MemoryControls.js.map +1 -0
  178. package/dist/memory/MemoryStore.d.ts +122 -0
  179. package/dist/memory/MemoryStore.d.ts.map +1 -0
  180. package/dist/memory/MemoryStore.js +1096 -0
  181. package/dist/memory/MemoryStore.js.map +1 -0
  182. package/dist/profiles/ProfileManager.d.ts +139 -0
  183. package/dist/profiles/ProfileManager.d.ts.map +1 -0
  184. package/dist/profiles/ProfileManager.js +475 -0
  185. package/dist/profiles/ProfileManager.js.map +1 -0
  186. package/dist/profiles/ProfileResolver.d.ts +18 -0
  187. package/dist/profiles/ProfileResolver.d.ts.map +1 -0
  188. package/dist/profiles/ProfileResolver.js +280 -0
  189. package/dist/profiles/ProfileResolver.js.map +1 -0
  190. package/dist/runs/RunRegistry.d.ts +140 -0
  191. package/dist/runs/RunRegistry.d.ts.map +1 -0
  192. package/dist/runs/RunRegistry.js +432 -0
  193. package/dist/runs/RunRegistry.js.map +1 -0
  194. package/dist/runtime/MarifoldRuntime.d.ts +244 -0
  195. package/dist/runtime/MarifoldRuntime.d.ts.map +1 -0
  196. package/dist/runtime/MarifoldRuntime.js +1099 -0
  197. package/dist/runtime/MarifoldRuntime.js.map +1 -0
  198. package/dist/runtime/MarifoldTypes.d.ts +70 -0
  199. package/dist/runtime/MarifoldTypes.d.ts.map +1 -0
  200. package/dist/runtime/MarifoldTypes.js +3 -0
  201. package/dist/runtime/MarifoldTypes.js.map +1 -0
  202. package/dist/schedule/ScheduleStore.d.ts +60 -0
  203. package/dist/schedule/ScheduleStore.d.ts.map +1 -0
  204. package/dist/schedule/ScheduleStore.js +212 -0
  205. package/dist/schedule/ScheduleStore.js.map +1 -0
  206. package/dist/schedule/Scheduler.d.ts +28 -0
  207. package/dist/schedule/Scheduler.d.ts.map +1 -0
  208. package/dist/schedule/Scheduler.js +65 -0
  209. package/dist/schedule/Scheduler.js.map +1 -0
  210. package/dist/search/DuckDuckGoBackend.d.ts +18 -0
  211. package/dist/search/DuckDuckGoBackend.d.ts.map +1 -0
  212. package/dist/search/DuckDuckGoBackend.js +37 -0
  213. package/dist/search/DuckDuckGoBackend.js.map +1 -0
  214. package/dist/search/FirecrawlBackend.d.ts +28 -0
  215. package/dist/search/FirecrawlBackend.d.ts.map +1 -0
  216. package/dist/search/FirecrawlBackend.js +76 -0
  217. package/dist/search/FirecrawlBackend.js.map +1 -0
  218. package/dist/search/SearchBackend.d.ts +18 -0
  219. package/dist/search/SearchBackend.d.ts.map +1 -0
  220. package/dist/search/SearchBackend.js +24 -0
  221. package/dist/search/SearchBackend.js.map +1 -0
  222. package/dist/search/createSearchBackend.d.ts +16 -0
  223. package/dist/search/createSearchBackend.d.ts.map +1 -0
  224. package/dist/search/createSearchBackend.js +30 -0
  225. package/dist/search/createSearchBackend.js.map +1 -0
  226. package/dist/sessions/ResponseMetrics.d.ts +17 -0
  227. package/dist/sessions/ResponseMetrics.d.ts.map +1 -0
  228. package/dist/sessions/ResponseMetrics.js +3 -0
  229. package/dist/sessions/ResponseMetrics.js.map +1 -0
  230. package/dist/sessions/SessionResolver.d.ts +135 -0
  231. package/dist/sessions/SessionResolver.d.ts.map +1 -0
  232. package/dist/sessions/SessionResolver.js +1173 -0
  233. package/dist/sessions/SessionResolver.js.map +1 -0
  234. package/dist/skill/BuiltInSkillManager.d.ts +11 -0
  235. package/dist/skill/BuiltInSkillManager.d.ts.map +1 -0
  236. package/dist/skill/BuiltInSkillManager.js +98 -0
  237. package/dist/skill/BuiltInSkillManager.js.map +1 -0
  238. package/dist/skill/SkillInvocation.d.ts +30 -0
  239. package/dist/skill/SkillInvocation.d.ts.map +1 -0
  240. package/dist/skill/SkillInvocation.js +135 -0
  241. package/dist/skill/SkillInvocation.js.map +1 -0
  242. package/dist/skill/SkillSchema.d.ts +37 -0
  243. package/dist/skill/SkillSchema.d.ts.map +1 -0
  244. package/dist/skill/SkillSchema.js +26 -0
  245. package/dist/skill/SkillSchema.js.map +1 -0
  246. package/dist/skill/SkillStore.d.ts +41 -0
  247. package/dist/skill/SkillStore.d.ts.map +1 -0
  248. package/dist/skill/SkillStore.js +184 -0
  249. package/dist/skill/SkillStore.js.map +1 -0
  250. package/dist/skill/SkillTemplater.d.ts +19 -0
  251. package/dist/skill/SkillTemplater.d.ts.map +1 -0
  252. package/dist/skill/SkillTemplater.js +36 -0
  253. package/dist/skill/SkillTemplater.js.map +1 -0
  254. package/dist/skill/SkillValidator.d.ts +10 -0
  255. package/dist/skill/SkillValidator.d.ts.map +1 -0
  256. package/dist/skill/SkillValidator.js +131 -0
  257. package/dist/skill/SkillValidator.js.map +1 -0
  258. package/dist/skill/SkillVars.d.ts +10 -0
  259. package/dist/skill/SkillVars.d.ts.map +1 -0
  260. package/dist/skill/SkillVars.js +65 -0
  261. package/dist/skill/SkillVars.js.map +1 -0
  262. package/dist/skill/index.d.ts +10 -0
  263. package/dist/skill/index.d.ts.map +1 -0
  264. package/dist/skill/index.js +22 -0
  265. package/dist/skill/index.js.map +1 -0
  266. package/dist/skillapp/SkillAppActionResolver.d.ts +13 -0
  267. package/dist/skillapp/SkillAppActionResolver.d.ts.map +1 -0
  268. package/dist/skillapp/SkillAppActionResolver.js +95 -0
  269. package/dist/skillapp/SkillAppActionResolver.js.map +1 -0
  270. package/dist/skillapp/SkillAppSchema.d.ts +79 -0
  271. package/dist/skillapp/SkillAppSchema.d.ts.map +1 -0
  272. package/dist/skillapp/SkillAppSchema.js +20 -0
  273. package/dist/skillapp/SkillAppSchema.js.map +1 -0
  274. package/dist/skillapp/SkillAppStore.d.ts +11 -0
  275. package/dist/skillapp/SkillAppStore.d.ts.map +1 -0
  276. package/dist/skillapp/SkillAppStore.js +98 -0
  277. package/dist/skillapp/SkillAppStore.js.map +1 -0
  278. package/dist/skillapp/SkillAppValidator.d.ts +10 -0
  279. package/dist/skillapp/SkillAppValidator.d.ts.map +1 -0
  280. package/dist/skillapp/SkillAppValidator.js +522 -0
  281. package/dist/skillapp/SkillAppValidator.js.map +1 -0
  282. package/dist/tasks/TaskStore.d.ts +110 -0
  283. package/dist/tasks/TaskStore.d.ts.map +1 -0
  284. package/dist/tasks/TaskStore.js +371 -0
  285. package/dist/tasks/TaskStore.js.map +1 -0
  286. package/dist/util/fetchRetry.d.ts +11 -0
  287. package/dist/util/fetchRetry.d.ts.map +1 -0
  288. package/dist/util/fetchRetry.js +48 -0
  289. package/dist/util/fetchRetry.js.map +1 -0
  290. package/dist/util/idToken.d.ts +12 -0
  291. package/dist/util/idToken.d.ts.map +1 -0
  292. package/dist/util/idToken.js +32 -0
  293. package/dist/util/idToken.js.map +1 -0
  294. package/dist/util/proxy.d.ts +18 -0
  295. package/dist/util/proxy.d.ts.map +1 -0
  296. package/dist/util/proxy.js +28 -0
  297. package/dist/util/proxy.js.map +1 -0
  298. package/dist/workspace/Workspace.d.ts +9 -0
  299. package/dist/workspace/Workspace.d.ts.map +1 -0
  300. package/dist/workspace/Workspace.js +55 -0
  301. package/dist/workspace/Workspace.js.map +1 -0
  302. package/dist/workspace/WorkspaceInitializer.d.ts +40 -0
  303. package/dist/workspace/WorkspaceInitializer.d.ts.map +1 -0
  304. package/dist/workspace/WorkspaceInitializer.js +212 -0
  305. package/dist/workspace/WorkspaceInitializer.js.map +1 -0
  306. package/dist/workspace/WorkspacePaths.d.ts +11 -0
  307. package/dist/workspace/WorkspacePaths.d.ts.map +1 -0
  308. package/dist/workspace/WorkspacePaths.js +82 -0
  309. package/dist/workspace/WorkspacePaths.js.map +1 -0
  310. package/package.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DuckDuckGoBackend.js","sourceRoot":"","sources":["../../src/search/DuckDuckGoBackend.ts"],"names":[],"mappings":";;;AAAA,uDAAuE;AAGvE,MAAM,MAAM,GAAG,OAAO,CAAC;AACvB,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAQ9B;;;;;GAKG;AACH;IACmB,KAAK,CAAqB;IAE3C,YAAY,OAAO,GAA6B,EAAE;QAChD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,SAAS,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAU,GAAG,mBAAmB;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAS,EAAC,KAAK,EAAE;YACtC,UAAU,EAAE,iCAAc,CAAC,QAAQ;YACnC,MAAM;SACP,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;aAC5B,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;aACjC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACd,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;YACrB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;SAC7C,CAAC,CAAC,CAAC;IACR,CAAC;CACF;;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { SearchBackend, SearchResultItem } from './SearchBackend';
2
+ export interface FirecrawlBackendOptions {
3
+ /** API key (BYOK). When absent, falls back to the env var named by
4
+ * `apiKeyEnv`, then to keyless requests (rate-limited by Firecrawl). */
5
+ apiKey?: string;
6
+ apiKeyEnv?: string;
7
+ /** Scrape each result into LLM-ready markdown. Firecrawl charges more for
8
+ * this; off by default. */
9
+ scrape?: boolean;
10
+ /** HTTP proxy, e.g. "http://127.0.0.1:7890". Falls back to
11
+ * HTTPS_PROXY/https_proxy. Applied best-effort via undici when available. */
12
+ proxy?: string;
13
+ maxResults?: number;
14
+ }
15
+ /**
16
+ * Firecrawl search backend (https://firecrawl.dev). Searches the web and, when
17
+ * `scrape` is set, returns each result as clean LLM-ready markdown. Works
18
+ * keyless with provider rate limits; a key (BYOK) lifts them.
19
+ */
20
+ export declare class FirecrawlBackend implements SearchBackend {
21
+ private readonly apiKey;
22
+ private readonly scrape;
23
+ private readonly proxy;
24
+ private readonly maxResults;
25
+ constructor(options?: FirecrawlBackendOptions);
26
+ search(query: string, maxResults?: number): Promise<SearchResultItem[]>;
27
+ }
28
+ //# sourceMappingURL=FirecrawlBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirecrawlBackend.d.ts","sourceRoot":"","sources":["../../src/search/FirecrawlBackend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMlE,MAAM,WAAW,uBAAuB;IACtC;4EACwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;+BAC2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;iFAC6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,OAAO,GAAE,uBAA4B,EAMhD;IAEK,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkCrF;CACF"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FirecrawlBackend = void 0;
4
+ const proxy_1 = require("../util/proxy");
5
+ const FIRECRAWL_SEARCH_URL = 'https://api.firecrawl.dev/v2/search';
6
+ const DEFAULT_MAX_RESULTS = 5;
7
+ /**
8
+ * Firecrawl search backend (https://firecrawl.dev). Searches the web and, when
9
+ * `scrape` is set, returns each result as clean LLM-ready markdown. Works
10
+ * keyless with provider rate limits; a key (BYOK) lifts them.
11
+ */
12
+ class FirecrawlBackend {
13
+ apiKey;
14
+ scrape;
15
+ proxy;
16
+ maxResults;
17
+ constructor(options = {}) {
18
+ this.apiKey = options.apiKey
19
+ ?? (options.apiKeyEnv ? process.env[options.apiKeyEnv] : undefined);
20
+ this.scrape = options.scrape ?? false;
21
+ this.proxy = options.proxy || process.env.HTTPS_PROXY || process.env.https_proxy || undefined;
22
+ this.maxResults = options.maxResults ?? DEFAULT_MAX_RESULTS;
23
+ }
24
+ async search(query, maxResults = this.maxResults) {
25
+ const limit = Math.max(1, maxResults);
26
+ const body = {
27
+ query,
28
+ limit,
29
+ sources: ['web'],
30
+ ...(this.scrape ? { scrapeOptions: { formats: ['markdown'] } } : {}),
31
+ };
32
+ const headers = { 'content-type': 'application/json' };
33
+ if (this.apiKey)
34
+ headers.authorization = `Bearer ${this.apiKey}`;
35
+ const init = {
36
+ method: 'POST',
37
+ headers,
38
+ body: JSON.stringify(body),
39
+ };
40
+ const dispatcher = (0, proxy_1.proxyDispatcher)(this.proxy);
41
+ if (dispatcher)
42
+ init.dispatcher = dispatcher;
43
+ const response = await fetch(FIRECRAWL_SEARCH_URL, init);
44
+ if (!response.ok) {
45
+ const detail = await safeText(response);
46
+ throw new Error(`Firecrawl search failed: HTTP ${response.status}${detail ? ` — ${detail}` : ''}`);
47
+ }
48
+ const payload = await response.json();
49
+ return extractResults(payload.data)
50
+ .slice(0, limit)
51
+ .map(result => ({
52
+ title: (result.title ?? '').trim(),
53
+ url: result.url ?? '',
54
+ // In scrape mode the markdown body is the LLM-ready value-add; fall back
55
+ // to the description snippet otherwise.
56
+ snippet: ((this.scrape ? result.markdown : undefined) ?? result.description ?? '').trim(),
57
+ }));
58
+ }
59
+ }
60
+ exports.FirecrawlBackend = FirecrawlBackend;
61
+ /** Firecrawl v2 groups results under `data.web`; v1 returned a flat `data[]`.
62
+ * Accept either so the backend survives an API version bump. */
63
+ function extractResults(data) {
64
+ if (Array.isArray(data))
65
+ return data;
66
+ return data?.web ?? [];
67
+ }
68
+ async function safeText(response) {
69
+ try {
70
+ return (await response.text()).slice(0, 200);
71
+ }
72
+ catch {
73
+ return '';
74
+ }
75
+ }
76
+ //# sourceMappingURL=FirecrawlBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirecrawlBackend.js","sourceRoot":"","sources":["../../src/search/FirecrawlBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface SearchResultItem {
2
+ title: string;
3
+ url: string;
4
+ snippet: string;
5
+ }
6
+ /**
7
+ * Pluggable web search backend. DuckDuckGo scraping is the no-API-key
8
+ * default, but it is brittle by nature — keep this interface narrow so
9
+ * Brave/SearXNG/other backends can replace it without touching callers.
10
+ */
11
+ export interface SearchBackend {
12
+ search(query: string, maxResults?: number): Promise<SearchResultItem[]>;
13
+ }
14
+ /** Format results as the numbered text block priests injects (search.py). */
15
+ export declare function formatSearchResults(query: string, results: SearchResultItem[]): string;
16
+ /** Wrap raw search results with turn-local instructions for the model. */
17
+ export declare function formatSearchContext(searchResults: string): string;
18
+ //# sourceMappingURL=SearchBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBackend.d.ts","sourceRoot":"","sources":["../../src/search/SearchBackend.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACzE;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAStF;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAQjE"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatSearchResults = formatSearchResults;
4
+ exports.formatSearchContext = formatSearchContext;
5
+ /** Format results as the numbered text block priests injects (search.py). */
6
+ function formatSearchResults(query, results) {
7
+ if (results.length === 0) {
8
+ return `Web search for '${query}' returned no results.`;
9
+ }
10
+ const lines = [`## Web search results for: ${query}\n`];
11
+ results.forEach((result, index) => {
12
+ lines.push(`${index + 1}. **${result.title}**\n ${result.url}\n ${result.snippet}\n`);
13
+ });
14
+ return lines.join('\n');
15
+ }
16
+ /** Wrap raw search results with turn-local instructions for the model. */
17
+ function formatSearchContext(searchResults) {
18
+ return ('## Web search results\n\n'
19
+ + "Use the following web search results to answer the user's current question. "
20
+ + 'Do not request another web search for this turn. '
21
+ + 'If the results are insufficient or irrelevant, say what could not be confirmed.\n\n'
22
+ + searchResults);
23
+ }
24
+ //# sourceMappingURL=SearchBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBackend.js","sourceRoot":"","sources":["../../src/search/SearchBackend.ts"],"names":[],"mappings":";;;;AAeA,6EAA6E;AAC7E,6BAAoC,KAAa,EAAE,OAA2B;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,KAAK,wBAAwB,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,8BAA8B,KAAK,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAG,QAAQ,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,0EAA0E;AAC1E,6BAAoC,aAAqB;IACvD,OAAO,CACL,2BAA2B;UACzB,8EAA8E;UAC9E,mDAAmD;UACnD,qFAAqF;UACrF,aAAa,CAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { MarifoldWebSearchConfig } from '../config/ConfigSchema';
2
+ import { SearchBackend } from './SearchBackend';
3
+ /**
4
+ * Select the active web-search backend from the resolved [web_search] config.
5
+ *
6
+ * Priority is a config-time selection of ONE backend (not a runtime retry
7
+ * cascade):
8
+ * - `firecrawl` → FirecrawlBackend (BYOK; AI-ready scraped results)
9
+ * - else → DuckDuckGoBackend (keyless best-effort floor)
10
+ *
11
+ * Future tier-1 "native" model search (provider server-side web_search) resolves
12
+ * in priest, not here — marifold would simply skip registering its own
13
+ * web_search tool for such a profile. See docs/roadmap.
14
+ */
15
+ export declare function createSearchBackend(config: MarifoldWebSearchConfig): SearchBackend;
16
+ //# sourceMappingURL=createSearchBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSearchBackend.d.ts","sourceRoot":"","sources":["../../src/search/createSearchBackend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,GAAG,aAAa,CAWlF"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSearchBackend = createSearchBackend;
4
+ const DuckDuckGoBackend_1 = require("./DuckDuckGoBackend");
5
+ const FirecrawlBackend_1 = require("./FirecrawlBackend");
6
+ /**
7
+ * Select the active web-search backend from the resolved [web_search] config.
8
+ *
9
+ * Priority is a config-time selection of ONE backend (not a runtime retry
10
+ * cascade):
11
+ * - `firecrawl` → FirecrawlBackend (BYOK; AI-ready scraped results)
12
+ * - else → DuckDuckGoBackend (keyless best-effort floor)
13
+ *
14
+ * Future tier-1 "native" model search (provider server-side web_search) resolves
15
+ * in priest, not here — marifold would simply skip registering its own
16
+ * web_search tool for such a profile. See docs/roadmap.
17
+ */
18
+ function createSearchBackend(config) {
19
+ if (config.provider === 'firecrawl') {
20
+ return new FirecrawlBackend_1.FirecrawlBackend({
21
+ apiKey: config.apiKey,
22
+ apiKeyEnv: config.apiKeyEnv,
23
+ scrape: config.scrape,
24
+ proxy: config.proxy,
25
+ maxResults: config.maxResults,
26
+ });
27
+ }
28
+ return new DuckDuckGoBackend_1.DuckDuckGoBackend({ proxy: config.proxy });
29
+ }
30
+ //# sourceMappingURL=createSearchBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSearchBackend.js","sourceRoot":"","sources":["../../src/search/createSearchBackend.ts"],"names":[],"mappings":";;;AACA,2DAAwD;AACxD,yDAAsD;AAGtD;;;;;;;;;;;GAWG;AACH,6BAAoC,MAA+B;IACjE,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,mCAAgB,CAAC;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,qCAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { AgentUsage } from '../agent/AgentEvents';
2
+ /**
3
+ * Durable, content-free metadata for one completed user→assistant exchange.
4
+ * Stored in a Marifold-owned companion table so Priest's transcript schema
5
+ * remains untouched and future statistics can aggregate across modes/models.
6
+ */
7
+ export interface ResponseMetrics {
8
+ mode: 'agent' | 'chat';
9
+ provider: string;
10
+ model: string;
11
+ think: boolean;
12
+ startedAt: string;
13
+ finishedAt: string;
14
+ latencyMs: number;
15
+ usage?: AgentUsage;
16
+ }
17
+ //# sourceMappingURL=ResponseMetrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseMetrics.d.ts","sourceRoot":"","sources":["../../src/sessions/ResponseMetrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ResponseMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseMetrics.js","sourceRoot":"","sources":["../../src/sessions/ResponseMetrics.ts"],"names":[],"mappings":""}
@@ -0,0 +1,135 @@
1
+ import { ImageInput, SQLiteSessionStore } from '@priest-ai/core';
2
+ import { SessionDetail, SessionSummary, SessionTurnSummary } from '../config/ConfigSchema';
3
+ import type { ResponseMetrics } from './ResponseMetrics';
4
+ export interface SessionDisplayUpdate {
5
+ /** `null` clears a custom title and restores the first-message preview. */
6
+ title?: string | null;
7
+ pinned?: boolean;
8
+ archived?: boolean;
9
+ }
10
+ export interface SessionListOptions {
11
+ /** Default is active sessions only. */
12
+ archived?: boolean;
13
+ /** Case-insensitive search across custom titles and first-message previews. */
14
+ search?: string;
15
+ /** `display` keeps pinned sessions first; `recent` ignores pin state. */
16
+ order?: 'display' | 'recent';
17
+ }
18
+ /** Result of a session-DB integrity check (used by `marifold doctor`). */
19
+ export interface SessionDbHealth {
20
+ ok: boolean;
21
+ /** False when the DB file does not exist yet (fresh install — not an error). */
22
+ exists: boolean;
23
+ /** First integrity-check failures, or the open error, when not ok. */
24
+ error?: string;
25
+ sessions?: number;
26
+ turns?: number;
27
+ }
28
+ export interface SessionTruncateResult {
29
+ found: boolean;
30
+ removedTurns: number;
31
+ }
32
+ export interface SessionReplaceResult {
33
+ found: boolean;
34
+ replaced: boolean;
35
+ }
36
+ export interface ProfileActivitySummary {
37
+ profileName: string;
38
+ pinned?: boolean;
39
+ updatedAt?: string;
40
+ preview?: string;
41
+ }
42
+ export declare class SessionResolver {
43
+ private readonly sessionsDb;
44
+ private store?;
45
+ constructor(sessionsDb: string);
46
+ /** Open a connection with crash-resilience pragmas. `journal_mode = WAL` is a
47
+ * persistent file property — set by any connection it sticks and is inherited
48
+ * by every later opener (including priest's session store), making interrupted
49
+ * writes far less likely to corrupt the file. `synchronous` and `busy_timeout`
50
+ * are per-connection, so they are reapplied on every open. */
51
+ private open;
52
+ /** Read-only health check. Safe to run when the DB is corrupt (it is the whole
53
+ * point — `marifold doctor` must work when the app won't start), and never
54
+ * throws: failures are returned as `{ ok: false }`. Opens read/write like the
55
+ * app does, so a pass means the app can actually read the DB. */
56
+ checkIntegrity(): SessionDbHealth;
57
+ openStore(): SQLiteSessionStore;
58
+ list(limit?: number, profileName?: string, options?: SessionListOptions): SessionSummary[];
59
+ /** Contact-list metadata for every profile represented either by a session
60
+ * or a pinned display row. The latest session determines activity/preview. */
61
+ profileActivity(): ProfileActivitySummary[];
62
+ setProfilePinned(profileName: string, pinned: boolean): void;
63
+ deleteProfileDisplay(profileName: string): void;
64
+ latest(profileName?: string): SessionSummary | undefined;
65
+ get(sessionId: string): SessionDetail | undefined;
66
+ /** Read one persisted image without including its bytes in the session
67
+ * transcript payload. The service exposes this through an authenticated
68
+ * binary route so clients can fetch only visible/previewed images. */
69
+ getAttachment(sessionId: string, userTurnIndex: number, attachmentIndex: number): {
70
+ mediaType: string;
71
+ data?: string;
72
+ url?: string;
73
+ } | undefined;
74
+ delete(sessionId: string): boolean;
75
+ /** Update sidebar-only session fields without touching ids, turns, recency,
76
+ * or Priest's metadata column. A separate table prevents a model save that
77
+ * finishes later from overwriting a rename/pin made during the run. */
78
+ updateDisplay(sessionId: string, update: SessionDisplayUpdate): boolean;
79
+ /** Delete one user turn and the entire conversation branch after it. The
80
+ * ordinal is zero-based among user turns, so it remains stable even though
81
+ * Priest rewrites SQLite turn ids whenever a session is saved. */
82
+ truncateFromUserTurn(sessionId: string, userTurnIndex: number): SessionTruncateResult;
83
+ /** Return only the completed turns before a zero-based user-turn ordinal.
84
+ * Historical edits use this as model context so later exchanges cannot leak
85
+ * into the regenerated answer. `undefined` means the session/turn is absent. */
86
+ turnsBeforeUserTurn(sessionId: string, userTurnIndex: number): SessionTurnSummary[] | undefined;
87
+ /** Replace one persisted user→assistant exchange in place. Later exchanges
88
+ * keep their ids/order and therefore remain visible and available as future
89
+ * model context. Attachments are replaced only when `images` is provided. */
90
+ replaceExchange(sessionId: string, userTurnIndex: number, userText: string, assistantText: string, images?: ImageInput[], responseMetrics?: ResponseMetrics): SessionReplaceResult;
91
+ clear(options?: {
92
+ profileName?: string;
93
+ before?: string;
94
+ keepLast?: number;
95
+ }): {
96
+ count: number;
97
+ ids: string[];
98
+ };
99
+ replaceLastAssistantTurn(sessionId: string, content: string): boolean;
100
+ replaceLastUserTurn(sessionId: string, content: string): boolean;
101
+ /** Append one clean user→assistant exchange to a session (creating it if
102
+ * needed). Agent runs use this to record the objective + final answer as a
103
+ * single tidy pair, instead of priest's raw per-iteration `Objective:`/tool
104
+ * framing that made resumed transcripts confusing. */
105
+ appendExchange(sessionId: string, profileName: string, userText: string, assistantText: string, images?: ImageInput[], responseMetrics?: ResponseMetrics): Promise<void>;
106
+ /** Persist display-only image sources against the newest user turn. Priest
107
+ * intentionally stores text-only session history, so Marifold owns this
108
+ * side table and keeps it out of later model context. Local filesystem paths
109
+ * are deliberately skipped rather than exposed through the service API. */
110
+ saveLastUserTurnAttachments(sessionId: string, images?: ImageInput[]): void;
111
+ /** Persist content-free completion metadata against the newest user turn.
112
+ * Like attachments, the zero-based user-turn ordinal survives Priest's
113
+ * whole-session turn-row rewrites. */
114
+ saveLastResponseMetrics(sessionId: string, responseMetrics: ResponseMetrics): void;
115
+ rename(fromSessionId: string, toSessionId: string): boolean;
116
+ close(): void;
117
+ private listTurns;
118
+ private ensureAttachmentsTable;
119
+ private hasAttachmentsTable;
120
+ private listAttachments;
121
+ private replaceUserTurnAttachments;
122
+ private deleteAttachmentsForSession;
123
+ private ensureResponseMetricsTable;
124
+ private hasResponseMetricsTable;
125
+ private upsertResponseMetrics;
126
+ private listResponseMetrics;
127
+ private deleteResponseMetricsForSession;
128
+ private ensureSessionDisplayTable;
129
+ private ensureProfileDisplayTable;
130
+ private hasProfileDisplayTable;
131
+ private hasSessionDisplayTable;
132
+ private deleteDisplayForSession;
133
+ private storeError;
134
+ }
135
+ //# sourceMappingURL=SessionResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionResolver.d.ts","sourceRoot":"","sources":["../../src/sessions/SessionResolver.ts"],"names":[],"mappings":"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"}