@dexto/core 1.1.4 → 1.1.6

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 (597) hide show
  1. package/README.md +125 -0
  2. package/dist/agent/DextoAgent.cjs +793 -0
  3. package/dist/agent/DextoAgent.d.cts +473 -0
  4. package/dist/agent/DextoAgent.d.ts +473 -0
  5. package/dist/agent/DextoAgent.js +774 -0
  6. package/dist/agent/agentCard.cjs +44 -0
  7. package/dist/agent/agentCard.d.cts +20 -0
  8. package/dist/agent/agentCard.d.ts +20 -0
  9. package/dist/agent/agentCard.js +20 -0
  10. package/dist/agent/error-codes.cjs +35 -0
  11. package/dist/agent/error-codes.d.cts +14 -0
  12. package/dist/agent/error-codes.d.ts +14 -0
  13. package/dist/agent/error-codes.js +11 -0
  14. package/dist/agent/errors.cjs +84 -0
  15. package/dist/agent/errors.d.cts +40 -0
  16. package/dist/agent/errors.d.ts +40 -0
  17. package/dist/agent/errors.js +60 -0
  18. package/dist/agent/index.cjs +44 -0
  19. package/dist/agent/index.d.cts +60 -0
  20. package/dist/agent/index.d.ts +60 -0
  21. package/dist/agent/index.js +13 -0
  22. package/dist/agent/registry/error-codes.cjs +42 -0
  23. package/dist/agent/registry/error-codes.d.cts +20 -0
  24. package/dist/agent/registry/error-codes.d.ts +20 -0
  25. package/dist/agent/registry/error-codes.js +18 -0
  26. package/dist/agent/registry/errors.cjs +158 -0
  27. package/dist/agent/registry/errors.d.cts +67 -0
  28. package/dist/agent/registry/errors.d.ts +67 -0
  29. package/dist/{chunk-PI6XFMEW.js → agent/registry/errors.js} +43 -50
  30. package/dist/agent/registry/registry.cjs +291 -0
  31. package/dist/agent/registry/registry.d.cts +67 -0
  32. package/dist/agent/registry/registry.d.ts +67 -0
  33. package/dist/agent/registry/registry.js +256 -0
  34. package/dist/agent/registry/types.cjs +41 -0
  35. package/dist/agent/registry/types.d.cts +100 -0
  36. package/dist/agent/registry/types.d.ts +100 -0
  37. package/dist/agent/registry/types.js +16 -0
  38. package/dist/agent/schemas.cjs +113 -0
  39. package/dist/agent/schemas.d.cts +1502 -0
  40. package/dist/agent/schemas.d.ts +1502 -0
  41. package/dist/agent/schemas.js +88 -0
  42. package/dist/agent/state-manager.cjs +214 -0
  43. package/dist/agent/state-manager.d.cts +97 -0
  44. package/dist/agent/state-manager.d.ts +97 -0
  45. package/dist/agent/state-manager.js +190 -0
  46. package/dist/config/agent-resolver.cjs +153 -0
  47. package/dist/config/agent-resolver.d.cts +15 -0
  48. package/dist/config/agent-resolver.d.ts +15 -0
  49. package/dist/config/agent-resolver.js +122 -0
  50. package/dist/config/error-codes.cjs +39 -0
  51. package/dist/config/error-codes.d.cts +17 -0
  52. package/dist/config/error-codes.d.ts +17 -0
  53. package/dist/config/error-codes.js +15 -0
  54. package/dist/config/errors.cjs +126 -0
  55. package/dist/config/errors.d.cts +49 -0
  56. package/dist/config/errors.d.ts +49 -0
  57. package/dist/config/errors.js +102 -0
  58. package/dist/config/index.cjs +26 -0
  59. package/dist/config/index.d.cts +7 -0
  60. package/dist/config/index.d.ts +7 -0
  61. package/dist/config/index.js +3 -0
  62. package/dist/config/loader.cjs +119 -0
  63. package/dist/config/loader.d.cts +19 -0
  64. package/dist/config/loader.d.ts +19 -0
  65. package/dist/config/loader.js +85 -0
  66. package/dist/config/writer.cjs +182 -0
  67. package/dist/config/writer.d.cts +38 -0
  68. package/dist/config/writer.d.ts +38 -0
  69. package/dist/config/writer.js +146 -0
  70. package/dist/context/compression/middle-removal.cjs +95 -0
  71. package/dist/context/compression/middle-removal.d.cts +48 -0
  72. package/dist/context/compression/middle-removal.d.ts +48 -0
  73. package/dist/context/compression/middle-removal.js +71 -0
  74. package/dist/context/compression/oldest-removal.cjs +70 -0
  75. package/dist/context/compression/oldest-removal.d.cts +43 -0
  76. package/dist/context/compression/oldest-removal.d.ts +43 -0
  77. package/dist/context/compression/oldest-removal.js +46 -0
  78. package/dist/context/compression/types.cjs +16 -0
  79. package/dist/context/compression/types.d.cts +21 -0
  80. package/dist/context/compression/types.d.ts +21 -0
  81. package/dist/context/compression/types.js +0 -0
  82. package/dist/context/error-codes.cjs +41 -0
  83. package/dist/context/error-codes.d.cts +19 -0
  84. package/dist/context/error-codes.d.ts +19 -0
  85. package/dist/context/error-codes.js +17 -0
  86. package/dist/context/errors.cjs +146 -0
  87. package/dist/context/errors.d.cts +36 -0
  88. package/dist/context/errors.d.ts +36 -0
  89. package/dist/context/errors.js +122 -0
  90. package/dist/context/index.cjs +24 -0
  91. package/dist/context/index.d.cts +19 -0
  92. package/dist/context/index.d.ts +19 -0
  93. package/dist/context/index.js +2 -0
  94. package/dist/context/manager.cjs +516 -0
  95. package/dist/context/manager.d.cts +254 -0
  96. package/dist/context/manager.d.ts +254 -0
  97. package/dist/context/manager.js +492 -0
  98. package/dist/context/types.cjs +16 -0
  99. package/dist/context/types.d.cts +113 -0
  100. package/dist/context/types.d.ts +113 -0
  101. package/dist/context/types.js +0 -0
  102. package/dist/context/utils.cjs +406 -0
  103. package/dist/context/utils.d.cts +79 -0
  104. package/dist/context/utils.d.ts +79 -0
  105. package/dist/context/utils.js +374 -0
  106. package/dist/errors/DextoBaseError.cjs +36 -0
  107. package/dist/errors/DextoBaseError.d.cts +15 -0
  108. package/dist/errors/DextoBaseError.d.ts +15 -0
  109. package/dist/errors/DextoBaseError.js +12 -0
  110. package/dist/errors/DextoRuntimeError.cjs +50 -0
  111. package/dist/errors/DextoRuntimeError.d.cts +37 -0
  112. package/dist/errors/DextoRuntimeError.d.ts +37 -0
  113. package/dist/errors/DextoRuntimeError.js +26 -0
  114. package/dist/errors/DextoValidationError.cjs +118 -0
  115. package/dist/errors/DextoValidationError.d.cts +65 -0
  116. package/dist/errors/DextoValidationError.d.ts +65 -0
  117. package/dist/{chunk-XFQLRBHE.js → errors/DextoValidationError.js} +4 -32
  118. package/dist/errors/index.cjs +42 -0
  119. package/dist/errors/index.d.cts +18 -0
  120. package/dist/errors/index.d.ts +18 -0
  121. package/dist/errors/index.js +13 -0
  122. package/dist/errors/result-bridge.cjs +38 -0
  123. package/dist/errors/result-bridge.d.cts +39 -0
  124. package/dist/errors/result-bridge.d.ts +39 -0
  125. package/dist/errors/result-bridge.js +14 -0
  126. package/dist/errors/types.cjs +54 -0
  127. package/dist/errors/types.d.cts +62 -0
  128. package/dist/errors/types.d.ts +62 -0
  129. package/dist/errors/types.js +29 -0
  130. package/dist/events/index.cjs +169 -0
  131. package/dist/events/index.d.cts +272 -0
  132. package/dist/events/index.d.ts +272 -0
  133. package/dist/events/index.js +136 -0
  134. package/dist/index.browser.cjs +9 -220
  135. package/dist/index.browser.d.cts +53 -379
  136. package/dist/index.browser.d.ts +53 -379
  137. package/dist/index.browser.js +4 -210
  138. package/dist/index.cjs +31 -15266
  139. package/dist/index.d.cts +89 -6842
  140. package/dist/index.d.ts +89 -6842
  141. package/dist/index.js +14 -9914
  142. package/dist/llm/error-codes.cjs +48 -0
  143. package/dist/llm/error-codes.d.cts +26 -0
  144. package/dist/llm/error-codes.d.ts +26 -0
  145. package/dist/llm/error-codes.js +24 -0
  146. package/dist/llm/errors.cjs +108 -0
  147. package/dist/llm/errors.d.cts +58 -0
  148. package/dist/llm/errors.d.ts +58 -0
  149. package/dist/llm/errors.js +84 -0
  150. package/dist/llm/formatters/anthropic.cjs +246 -0
  151. package/dist/llm/formatters/anthropic.d.cts +45 -0
  152. package/dist/llm/formatters/anthropic.d.ts +45 -0
  153. package/dist/llm/formatters/anthropic.js +227 -0
  154. package/dist/llm/formatters/factory.cjs +51 -0
  155. package/dist/llm/formatters/factory.d.cts +12 -0
  156. package/dist/llm/formatters/factory.d.ts +12 -0
  157. package/dist/llm/formatters/factory.js +27 -0
  158. package/dist/llm/formatters/openai.cjs +167 -0
  159. package/dist/llm/formatters/openai.d.cts +38 -0
  160. package/dist/llm/formatters/openai.d.ts +38 -0
  161. package/dist/llm/formatters/openai.js +147 -0
  162. package/dist/llm/formatters/types.cjs +16 -0
  163. package/dist/llm/formatters/types.d.cts +43 -0
  164. package/dist/llm/formatters/types.d.ts +43 -0
  165. package/dist/llm/formatters/types.js +0 -0
  166. package/dist/llm/formatters/vercel.cjs +411 -0
  167. package/dist/llm/formatters/vercel.d.cts +48 -0
  168. package/dist/llm/formatters/vercel.d.ts +48 -0
  169. package/dist/llm/formatters/vercel.js +387 -0
  170. package/dist/llm/index.cjs +34 -0
  171. package/dist/llm/index.d.cts +39 -0
  172. package/dist/llm/index.d.ts +39 -0
  173. package/dist/llm/index.js +7 -0
  174. package/dist/llm/registry.cjs +881 -0
  175. package/dist/llm/registry.d.cts +176 -0
  176. package/dist/llm/registry.d.ts +176 -0
  177. package/dist/{chunk-J6AXCN3H.js → llm/registry.js} +25 -455
  178. package/dist/llm/resolver.cjs +154 -0
  179. package/dist/llm/resolver.d.cts +34 -0
  180. package/dist/llm/resolver.d.ts +34 -0
  181. package/dist/llm/resolver.js +136 -0
  182. package/dist/llm/schemas.cjs +188 -0
  183. package/dist/llm/schemas.d.cts +111 -0
  184. package/dist/llm/schemas.d.ts +111 -0
  185. package/dist/llm/schemas.js +172 -0
  186. package/dist/llm/services/anthropic.cjs +398 -0
  187. package/dist/llm/services/anthropic.d.cts +65 -0
  188. package/dist/llm/services/anthropic.d.ts +65 -0
  189. package/dist/llm/services/anthropic.js +374 -0
  190. package/dist/llm/services/factory.cjs +164 -0
  191. package/dist/llm/services/factory.d.cts +39 -0
  192. package/dist/llm/services/factory.d.ts +39 -0
  193. package/dist/llm/services/factory.js +130 -0
  194. package/dist/llm/services/index.cjs +22 -0
  195. package/dist/llm/services/index.d.cts +21 -0
  196. package/dist/llm/services/index.d.ts +21 -0
  197. package/dist/llm/services/index.js +1 -0
  198. package/dist/llm/services/openai.cjs +470 -0
  199. package/dist/llm/services/openai.d.cts +65 -0
  200. package/dist/llm/services/openai.d.ts +65 -0
  201. package/dist/llm/services/openai.js +446 -0
  202. package/dist/llm/services/test-utils.integration.cjs +169 -0
  203. package/dist/llm/services/test-utils.integration.d.cts +83 -0
  204. package/dist/llm/services/test-utils.integration.d.ts +83 -0
  205. package/dist/llm/services/test-utils.integration.js +142 -0
  206. package/dist/llm/services/types.cjs +16 -0
  207. package/dist/llm/services/types.d.cts +56 -0
  208. package/dist/llm/services/types.d.ts +56 -0
  209. package/dist/llm/services/types.js +0 -0
  210. package/dist/llm/services/vercel.cjs +525 -0
  211. package/dist/llm/services/vercel.d.cts +72 -0
  212. package/dist/llm/services/vercel.d.ts +72 -0
  213. package/dist/llm/services/vercel.js +506 -0
  214. package/dist/llm/tokenizer/anthropic.cjs +43 -0
  215. package/dist/llm/tokenizer/anthropic.d.cts +21 -0
  216. package/dist/llm/tokenizer/anthropic.d.ts +21 -0
  217. package/dist/llm/tokenizer/anthropic.js +19 -0
  218. package/dist/llm/tokenizer/default.cjs +41 -0
  219. package/dist/llm/tokenizer/default.d.cts +16 -0
  220. package/dist/llm/tokenizer/default.d.ts +16 -0
  221. package/dist/llm/tokenizer/default.js +17 -0
  222. package/dist/llm/tokenizer/factory.cjs +44 -0
  223. package/dist/llm/tokenizer/factory.d.cts +12 -0
  224. package/dist/llm/tokenizer/factory.d.ts +12 -0
  225. package/dist/llm/tokenizer/factory.js +20 -0
  226. package/dist/llm/tokenizer/google.cjs +52 -0
  227. package/dist/llm/tokenizer/google.d.cts +31 -0
  228. package/dist/llm/tokenizer/google.d.ts +31 -0
  229. package/dist/llm/tokenizer/google.js +28 -0
  230. package/dist/llm/tokenizer/openai.cjs +108 -0
  231. package/dist/llm/tokenizer/openai.d.cts +32 -0
  232. package/dist/llm/tokenizer/openai.d.ts +32 -0
  233. package/dist/llm/tokenizer/openai.js +83 -0
  234. package/dist/llm/tokenizer/types.cjs +33 -0
  235. package/dist/llm/tokenizer/types.d.cts +19 -0
  236. package/dist/llm/tokenizer/types.d.ts +19 -0
  237. package/dist/llm/tokenizer/types.js +9 -0
  238. package/dist/llm/types.cjs +42 -0
  239. package/dist/llm/types.d.cts +29 -0
  240. package/dist/llm/types.d.ts +29 -0
  241. package/dist/llm/types.js +16 -0
  242. package/dist/llm/validation.cjs +162 -0
  243. package/dist/llm/validation.d.cts +60 -0
  244. package/dist/llm/validation.d.ts +60 -0
  245. package/dist/llm/validation.js +138 -0
  246. package/dist/logger/browser.cjs +86 -0
  247. package/dist/logger/browser.d.cts +29 -0
  248. package/dist/logger/browser.d.ts +29 -0
  249. package/dist/logger/browser.js +61 -0
  250. package/dist/logger/index.cjs +22 -0
  251. package/dist/logger/index.d.cts +1 -0
  252. package/dist/logger/index.d.ts +1 -0
  253. package/dist/logger/index.js +1 -0
  254. package/dist/logger/logger.cjs +362 -0
  255. package/dist/logger/logger.d.cts +52 -0
  256. package/dist/logger/logger.d.ts +52 -0
  257. package/dist/logger/logger.js +327 -0
  258. package/dist/mcp/error-codes.cjs +38 -0
  259. package/dist/mcp/error-codes.d.cts +16 -0
  260. package/dist/mcp/error-codes.d.ts +16 -0
  261. package/dist/mcp/error-codes.js +14 -0
  262. package/dist/mcp/errors.cjs +131 -0
  263. package/dist/mcp/errors.d.cts +72 -0
  264. package/dist/mcp/errors.d.ts +72 -0
  265. package/dist/mcp/errors.js +107 -0
  266. package/dist/mcp/index.cjs +34 -0
  267. package/dist/mcp/index.d.cts +26 -0
  268. package/dist/mcp/index.d.ts +26 -0
  269. package/dist/mcp/index.js +7 -0
  270. package/dist/mcp/manager.cjs +473 -0
  271. package/dist/mcp/manager.d.cts +163 -0
  272. package/dist/mcp/manager.d.ts +163 -0
  273. package/dist/mcp/manager.js +449 -0
  274. package/dist/mcp/mcp-client.cjs +420 -0
  275. package/dist/mcp/mcp-client.d.cts +108 -0
  276. package/dist/mcp/mcp-client.d.ts +108 -0
  277. package/dist/mcp/mcp-client.js +396 -0
  278. package/dist/mcp/resolver.cjs +78 -0
  279. package/dist/mcp/resolver.d.cts +22 -0
  280. package/dist/mcp/resolver.d.ts +22 -0
  281. package/dist/mcp/resolver.js +56 -0
  282. package/dist/mcp/schemas.cjs +82 -0
  283. package/dist/mcp/schemas.d.cts +266 -0
  284. package/dist/mcp/schemas.d.ts +266 -0
  285. package/dist/mcp/schemas.js +54 -0
  286. package/dist/mcp/types.cjs +16 -0
  287. package/dist/mcp/types.d.cts +21 -0
  288. package/dist/mcp/types.d.ts +21 -0
  289. package/dist/mcp/types.js +0 -0
  290. package/dist/preferences/constants.cjs +28 -0
  291. package/dist/preferences/constants.d.cts +3 -0
  292. package/dist/preferences/constants.d.ts +3 -0
  293. package/dist/preferences/constants.js +4 -0
  294. package/dist/preferences/error-codes.cjs +35 -0
  295. package/dist/preferences/error-codes.d.cts +9 -0
  296. package/dist/preferences/error-codes.d.ts +9 -0
  297. package/dist/preferences/error-codes.js +11 -0
  298. package/dist/preferences/errors.cjs +75 -0
  299. package/dist/preferences/errors.d.cts +33 -0
  300. package/dist/preferences/errors.d.ts +33 -0
  301. package/dist/preferences/errors.js +50 -0
  302. package/dist/preferences/index.cjs +55 -0
  303. package/dist/preferences/index.d.cts +21 -0
  304. package/dist/preferences/index.d.ts +21 -0
  305. package/dist/preferences/index.js +31 -0
  306. package/dist/preferences/loader.cjs +136 -0
  307. package/dist/preferences/loader.d.cts +45 -0
  308. package/dist/preferences/loader.d.ts +45 -0
  309. package/dist/preferences/loader.js +107 -0
  310. package/dist/preferences/schemas.cjs +74 -0
  311. package/dist/preferences/schemas.d.cts +104 -0
  312. package/dist/preferences/schemas.d.ts +104 -0
  313. package/dist/preferences/schemas.js +47 -0
  314. package/dist/search/index.cjs +28 -0
  315. package/dist/search/index.d.cts +5 -0
  316. package/dist/search/index.d.ts +5 -0
  317. package/dist/search/index.js +4 -0
  318. package/dist/search/search-service.cjs +245 -0
  319. package/dist/search/search-service.d.cts +47 -0
  320. package/dist/search/search-service.d.ts +47 -0
  321. package/dist/search/search-service.js +221 -0
  322. package/dist/search/types.cjs +16 -0
  323. package/dist/search/types.d.cts +78 -0
  324. package/dist/search/types.d.ts +78 -0
  325. package/dist/search/types.js +0 -0
  326. package/dist/session/chat-session.cjs +354 -0
  327. package/dist/session/chat-session.d.cts +284 -0
  328. package/dist/session/chat-session.d.ts +284 -0
  329. package/dist/session/chat-session.js +333 -0
  330. package/dist/session/error-codes.cjs +35 -0
  331. package/dist/session/error-codes.d.cts +13 -0
  332. package/dist/session/error-codes.d.ts +13 -0
  333. package/dist/session/error-codes.js +11 -0
  334. package/dist/session/errors.cjs +93 -0
  335. package/dist/session/errors.d.cts +58 -0
  336. package/dist/session/errors.d.ts +58 -0
  337. package/dist/session/errors.js +69 -0
  338. package/dist/session/history/database.cjs +95 -0
  339. package/dist/session/history/database.d.cts +28 -0
  340. package/dist/session/history/database.d.ts +28 -0
  341. package/dist/session/history/database.js +71 -0
  342. package/dist/session/history/factory.cjs +31 -0
  343. package/dist/session/history/factory.d.cts +11 -0
  344. package/dist/session/history/factory.d.ts +11 -0
  345. package/dist/session/history/factory.js +7 -0
  346. package/dist/session/history/types.cjs +16 -0
  347. package/dist/session/history/types.d.cts +17 -0
  348. package/dist/session/history/types.d.ts +17 -0
  349. package/dist/session/history/types.js +0 -0
  350. package/dist/session/index.cjs +37 -0
  351. package/dist/session/index.d.cts +53 -0
  352. package/dist/session/index.d.ts +53 -0
  353. package/dist/session/index.js +10 -0
  354. package/dist/session/schemas.cjs +32 -0
  355. package/dist/session/schemas.d.cts +16 -0
  356. package/dist/session/schemas.d.ts +16 -0
  357. package/dist/session/schemas.js +8 -0
  358. package/dist/session/session-manager.cjs +481 -0
  359. package/dist/session/session-manager.d.cts +219 -0
  360. package/dist/session/session-manager.d.ts +219 -0
  361. package/dist/session/session-manager.js +457 -0
  362. package/dist/storage/backend/cache-backend.cjs +16 -0
  363. package/dist/storage/backend/cache-backend.d.cts +15 -0
  364. package/dist/storage/backend/cache-backend.d.ts +15 -0
  365. package/dist/storage/backend/cache-backend.js +0 -0
  366. package/dist/storage/backend/database-backend.cjs +16 -0
  367. package/dist/storage/backend/database-backend.d.cts +19 -0
  368. package/dist/storage/backend/database-backend.d.ts +19 -0
  369. package/dist/storage/backend/database-backend.js +0 -0
  370. package/dist/storage/backend/memory-backend.cjs +140 -0
  371. package/dist/storage/backend/memory-backend.d.cts +34 -0
  372. package/dist/storage/backend/memory-backend.d.ts +34 -0
  373. package/dist/storage/backend/memory-backend.js +116 -0
  374. package/dist/storage/backend/postgres-backend.cjs +231 -0
  375. package/dist/storage/backend/postgres-backend.d.cts +37 -0
  376. package/dist/storage/backend/postgres-backend.d.ts +37 -0
  377. package/dist/{postgres-backend-WMWS7RAT.js → storage/backend/postgres-backend.js} +3 -12
  378. package/dist/storage/backend/redis-backend.cjs +184 -0
  379. package/dist/storage/backend/redis-backend.d.cts +36 -0
  380. package/dist/storage/backend/redis-backend.d.ts +36 -0
  381. package/dist/{redis-backend-BNLN3XHX.js → storage/backend/redis-backend.js} +3 -12
  382. package/dist/storage/backend/sqlite-backend.cjs +271 -0
  383. package/dist/storage/backend/sqlite-backend.d.cts +35 -0
  384. package/dist/storage/backend/sqlite-backend.d.ts +35 -0
  385. package/dist/{sqlite-backend-AR6XNK2Q.js → storage/backend/sqlite-backend.js} +6 -17
  386. package/dist/storage/backend/types.cjs +16 -0
  387. package/dist/storage/backend/types.d.cts +14 -0
  388. package/dist/storage/backend/types.d.ts +14 -0
  389. package/dist/storage/backend/types.js +0 -0
  390. package/dist/storage/error-codes.cjs +36 -0
  391. package/dist/storage/error-codes.d.cts +14 -0
  392. package/dist/storage/error-codes.d.ts +14 -0
  393. package/dist/storage/error-codes.js +12 -0
  394. package/dist/storage/errors.cjs +104 -0
  395. package/dist/storage/errors.d.cts +63 -0
  396. package/dist/storage/errors.d.ts +63 -0
  397. package/dist/{chunk-F2QFAECT.js → storage/errors.js} +23 -30
  398. package/dist/storage/index.cjs +33 -0
  399. package/dist/storage/index.d.cts +7 -0
  400. package/dist/storage/index.d.ts +7 -0
  401. package/dist/storage/index.js +7 -0
  402. package/dist/storage/schemas.cjs +113 -0
  403. package/dist/storage/schemas.d.cts +856 -0
  404. package/dist/storage/schemas.d.ts +856 -0
  405. package/dist/storage/schemas.js +89 -0
  406. package/dist/storage/storage-manager.cjs +208 -0
  407. package/dist/storage/storage-manager.d.cts +52 -0
  408. package/dist/storage/storage-manager.d.ts +52 -0
  409. package/dist/storage/storage-manager.js +173 -0
  410. package/dist/storage/types.cjs +16 -0
  411. package/dist/storage/types.d.cts +5 -0
  412. package/dist/storage/types.d.ts +5 -0
  413. package/dist/storage/types.js +0 -0
  414. package/dist/systemPrompt/contributors.cjs +146 -0
  415. package/dist/systemPrompt/contributors.d.cts +44 -0
  416. package/dist/systemPrompt/contributors.d.ts +44 -0
  417. package/dist/systemPrompt/contributors.js +120 -0
  418. package/dist/systemPrompt/error-codes.cjs +35 -0
  419. package/dist/systemPrompt/error-codes.d.cts +13 -0
  420. package/dist/systemPrompt/error-codes.d.ts +13 -0
  421. package/dist/systemPrompt/error-codes.js +11 -0
  422. package/dist/systemPrompt/errors.cjs +93 -0
  423. package/dist/systemPrompt/errors.d.cts +55 -0
  424. package/dist/systemPrompt/errors.d.ts +55 -0
  425. package/dist/systemPrompt/errors.js +69 -0
  426. package/dist/systemPrompt/in-built-prompts.cjs +68 -0
  427. package/dist/systemPrompt/in-built-prompts.d.cts +28 -0
  428. package/dist/systemPrompt/in-built-prompts.d.ts +28 -0
  429. package/dist/systemPrompt/in-built-prompts.js +42 -0
  430. package/dist/systemPrompt/index.cjs +30 -0
  431. package/dist/systemPrompt/index.d.cts +14 -0
  432. package/dist/systemPrompt/index.d.ts +14 -0
  433. package/dist/systemPrompt/index.js +5 -0
  434. package/dist/systemPrompt/manager.cjs +93 -0
  435. package/dist/systemPrompt/manager.d.cts +31 -0
  436. package/dist/systemPrompt/manager.d.ts +31 -0
  437. package/dist/systemPrompt/manager.js +69 -0
  438. package/dist/systemPrompt/registry.cjs +51 -0
  439. package/dist/systemPrompt/registry.d.cts +20 -0
  440. package/dist/systemPrompt/registry.d.ts +20 -0
  441. package/dist/systemPrompt/registry.js +15 -0
  442. package/dist/systemPrompt/schemas.cjs +107 -0
  443. package/dist/systemPrompt/schemas.d.cts +401 -0
  444. package/dist/systemPrompt/schemas.d.ts +401 -0
  445. package/dist/systemPrompt/schemas.js +81 -0
  446. package/dist/systemPrompt/types.cjs +16 -0
  447. package/dist/systemPrompt/types.d.cts +19 -0
  448. package/dist/systemPrompt/types.d.ts +19 -0
  449. package/dist/systemPrompt/types.js +0 -0
  450. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +44 -0
  451. package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +19 -0
  452. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +19 -0
  453. package/dist/tools/confirmation/allowed-tools-provider/factory.js +20 -0
  454. package/dist/tools/confirmation/allowed-tools-provider/in-memory.cjs +62 -0
  455. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +17 -0
  456. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +17 -0
  457. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +38 -0
  458. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +68 -0
  459. package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +26 -0
  460. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +26 -0
  461. package/dist/tools/confirmation/allowed-tools-provider/storage.js +44 -0
  462. package/dist/tools/confirmation/allowed-tools-provider/types.cjs +16 -0
  463. package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +35 -0
  464. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +35 -0
  465. package/dist/tools/confirmation/allowed-tools-provider/types.js +0 -0
  466. package/dist/tools/confirmation/event-based-confirmation-provider.cjs +158 -0
  467. package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +41 -0
  468. package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +41 -0
  469. package/dist/tools/confirmation/event-based-confirmation-provider.js +134 -0
  470. package/dist/tools/confirmation/factory.cjs +52 -0
  471. package/dist/tools/confirmation/factory.d.cts +37 -0
  472. package/dist/tools/confirmation/factory.d.ts +37 -0
  473. package/dist/tools/confirmation/factory.js +28 -0
  474. package/dist/tools/confirmation/noop-confirmation-provider.cjs +49 -0
  475. package/dist/tools/confirmation/noop-confirmation-provider.d.cts +22 -0
  476. package/dist/tools/confirmation/noop-confirmation-provider.d.ts +22 -0
  477. package/dist/tools/confirmation/noop-confirmation-provider.js +25 -0
  478. package/dist/tools/confirmation/types.cjs +16 -0
  479. package/dist/tools/confirmation/types.d.cts +46 -0
  480. package/dist/tools/confirmation/types.d.ts +46 -0
  481. package/dist/tools/confirmation/types.js +0 -0
  482. package/dist/tools/error-codes.cjs +40 -0
  483. package/dist/tools/error-codes.d.cts +18 -0
  484. package/dist/tools/error-codes.d.ts +18 -0
  485. package/dist/tools/error-codes.js +16 -0
  486. package/dist/tools/errors.cjs +164 -0
  487. package/dist/tools/errors.d.cts +97 -0
  488. package/dist/tools/errors.d.ts +97 -0
  489. package/dist/tools/errors.js +140 -0
  490. package/dist/tools/index.cjs +37 -0
  491. package/dist/tools/index.d.cts +19 -0
  492. package/dist/tools/index.d.ts +19 -0
  493. package/dist/tools/index.js +8 -0
  494. package/dist/tools/internal-tools/implementations/search-history-tool.cjs +61 -0
  495. package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +15 -0
  496. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +15 -0
  497. package/dist/tools/internal-tools/implementations/search-history-tool.js +37 -0
  498. package/dist/tools/internal-tools/index.cjs +24 -0
  499. package/dist/tools/internal-tools/index.d.cts +13 -0
  500. package/dist/tools/internal-tools/index.d.ts +13 -0
  501. package/dist/tools/internal-tools/index.js +2 -0
  502. package/dist/tools/internal-tools/provider.cjs +159 -0
  503. package/dist/tools/internal-tools/provider.d.cts +66 -0
  504. package/dist/tools/internal-tools/provider.d.ts +66 -0
  505. package/dist/tools/internal-tools/provider.js +135 -0
  506. package/dist/tools/internal-tools/registry.cjs +43 -0
  507. package/dist/tools/internal-tools/registry.d.cts +45 -0
  508. package/dist/tools/internal-tools/registry.d.ts +45 -0
  509. package/dist/tools/internal-tools/registry.js +17 -0
  510. package/dist/tools/schemas.cjs +45 -0
  511. package/dist/tools/schemas.d.cts +21 -0
  512. package/dist/tools/schemas.d.ts +21 -0
  513. package/dist/tools/schemas.js +20 -0
  514. package/dist/tools/tool-manager.cjs +275 -0
  515. package/dist/tools/tool-manager.d.cts +106 -0
  516. package/dist/tools/tool-manager.d.ts +106 -0
  517. package/dist/tools/tool-manager.js +251 -0
  518. package/dist/tools/types.cjs +16 -0
  519. package/dist/tools/types.d.cts +66 -0
  520. package/dist/tools/types.d.ts +66 -0
  521. package/dist/tools/types.js +0 -0
  522. package/dist/utils/api-key-resolver.cjs +62 -0
  523. package/dist/utils/api-key-resolver.d.cts +23 -0
  524. package/dist/utils/api-key-resolver.d.ts +23 -0
  525. package/dist/utils/api-key-resolver.js +36 -0
  526. package/dist/utils/api-key-store.cjs +56 -0
  527. package/dist/utils/api-key-store.d.cts +26 -0
  528. package/dist/utils/api-key-store.d.ts +26 -0
  529. package/dist/utils/api-key-store.js +30 -0
  530. package/dist/utils/env.cjs +154 -0
  531. package/dist/utils/env.d.cts +29 -0
  532. package/dist/utils/env.d.ts +29 -0
  533. package/dist/utils/env.js +118 -0
  534. package/dist/utils/error-conversion.cjs +53 -0
  535. package/dist/utils/error-conversion.d.cts +13 -0
  536. package/dist/utils/error-conversion.d.ts +13 -0
  537. package/dist/utils/error-conversion.js +29 -0
  538. package/dist/utils/execution-context.cjs +85 -0
  539. package/dist/utils/execution-context.d.cts +21 -0
  540. package/dist/utils/execution-context.d.ts +21 -0
  541. package/dist/utils/execution-context.js +49 -0
  542. package/dist/{chunk-MVKLS3LM.js → utils/fs-walk.cjs} +27 -18
  543. package/dist/utils/fs-walk.d.cts +9 -0
  544. package/dist/utils/fs-walk.d.ts +9 -0
  545. package/dist/utils/fs-walk.js +18 -0
  546. package/dist/utils/index.cjs +44 -0
  547. package/dist/utils/index.d.cts +63 -0
  548. package/dist/utils/index.d.ts +63 -0
  549. package/dist/utils/index.js +12 -0
  550. package/dist/utils/path.cjs +197 -0
  551. package/dist/utils/path.d.cts +54 -0
  552. package/dist/utils/path.d.ts +54 -0
  553. package/dist/utils/path.js +159 -0
  554. package/dist/utils/port-utils.cjs +37 -0
  555. package/dist/utils/port-utils.d.cts +11 -0
  556. package/dist/utils/port-utils.d.ts +11 -0
  557. package/dist/utils/port-utils.js +13 -0
  558. package/dist/utils/port-utils.spec.cjs +26 -0
  559. package/dist/utils/port-utils.spec.d.cts +2 -0
  560. package/dist/utils/port-utils.spec.d.ts +2 -0
  561. package/dist/utils/port-utils.spec.js +25 -0
  562. package/dist/utils/redactor.cjs +105 -0
  563. package/dist/utils/redactor.d.cts +18 -0
  564. package/dist/utils/redactor.d.ts +18 -0
  565. package/dist/utils/redactor.js +81 -0
  566. package/dist/utils/result.cjs +115 -0
  567. package/dist/utils/result.d.cts +180 -0
  568. package/dist/utils/result.d.ts +180 -0
  569. package/dist/utils/result.js +82 -0
  570. package/dist/utils/safe-stringify.cjs +57 -0
  571. package/dist/utils/safe-stringify.d.cts +7 -0
  572. package/dist/utils/safe-stringify.d.ts +7 -0
  573. package/dist/utils/safe-stringify.js +33 -0
  574. package/dist/utils/schema.cjs +42 -0
  575. package/dist/utils/schema.d.cts +6 -0
  576. package/dist/utils/schema.d.ts +6 -0
  577. package/dist/utils/schema.js +18 -0
  578. package/dist/utils/service-initializer.cjs +119 -0
  579. package/dist/utils/service-initializer.d.cts +63 -0
  580. package/dist/utils/service-initializer.d.ts +63 -0
  581. package/dist/utils/service-initializer.js +95 -0
  582. package/dist/utils/user-info.cjs +30 -0
  583. package/dist/utils/user-info.d.cts +3 -0
  584. package/dist/utils/user-info.d.ts +3 -0
  585. package/dist/utils/user-info.js +6 -0
  586. package/dist/utils/zod-schema-converter.cjs +112 -0
  587. package/dist/utils/zod-schema-converter.d.cts +13 -0
  588. package/dist/utils/zod-schema-converter.d.ts +13 -0
  589. package/dist/utils/zod-schema-converter.js +87 -0
  590. package/package.json +2 -2
  591. package/dist/chunk-D62MHQBE.js +0 -2203
  592. package/dist/chunk-FCJVTIBV.js +0 -535
  593. package/dist/chunk-TPERKLLN.js +0 -75
  594. package/dist/errors-ZZ4Z3FKB.js +0 -10
  595. package/dist/loader-HBNEYPQZ.js +0 -20
  596. package/dist/path-TP7WBDED.js +0 -21
  597. package/dist/registry-Z4DFXODW.js +0 -14
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var registry_exports = {};
30
+ __export(registry_exports, {
31
+ LocalAgentRegistry: () => LocalAgentRegistry,
32
+ getAgentRegistry: () => getAgentRegistry
33
+ });
34
+ module.exports = __toCommonJS(registry_exports);
35
+ var import_fs = require("fs");
36
+ var import_fs2 = require("fs");
37
+ var import_path = __toESM(require("path"), 1);
38
+ var import_logger = require("../../logger/index.cjs");
39
+ var import_path2 = require("../../utils/path.cjs");
40
+ var import_loader = require("../../preferences/loader.cjs");
41
+ var import_writer = require("../../config/writer.cjs");
42
+ var import_types = require("./types.js");
43
+ var import_errors = require("./errors.js");
44
+ let cachedRegistry = null;
45
+ class LocalAgentRegistry {
46
+ _registry = null;
47
+ /**
48
+ * Lazy load registry from JSON file
49
+ */
50
+ getRegistry() {
51
+ if (this._registry === null) {
52
+ this._registry = this.loadRegistry();
53
+ }
54
+ return this._registry;
55
+ }
56
+ /**
57
+ * Load registry from bundled JSON file
58
+ * Uses fail-fast approach - throws RegistryError for any loading issues
59
+ */
60
+ loadRegistry() {
61
+ let jsonPath;
62
+ try {
63
+ jsonPath = (0, import_path2.resolveBundledScript)("agents/agent-registry.json");
64
+ } catch (error) {
65
+ throw import_errors.RegistryError.registryNotFound(
66
+ "agents/agent-registry.json",
67
+ error instanceof Error ? error.message : String(error)
68
+ );
69
+ }
70
+ if (!(0, import_fs.existsSync)(jsonPath)) {
71
+ throw import_errors.RegistryError.registryNotFound(jsonPath, "File doesn't exist");
72
+ }
73
+ try {
74
+ const jsonData = (0, import_fs.readFileSync)(jsonPath, "utf-8");
75
+ const rawRegistry = JSON.parse(jsonData);
76
+ return import_types.RegistrySchema.parse(rawRegistry);
77
+ } catch (error) {
78
+ throw import_errors.RegistryError.registryParseError(
79
+ jsonPath,
80
+ error instanceof Error ? error.message : String(error)
81
+ );
82
+ }
83
+ }
84
+ /**
85
+ * Check if agent exists in registry
86
+ */
87
+ hasAgent(name) {
88
+ const registry = this.getRegistry();
89
+ return name in registry.agents;
90
+ }
91
+ /**
92
+ * Get available agents with their metadata from registry
93
+ */
94
+ getAvailableAgents() {
95
+ const registry = this.getRegistry();
96
+ return registry.agents;
97
+ }
98
+ /**
99
+ * Resolve main config file for installed agent
100
+ * Handles both directory agents (with main field) and single-file agents
101
+ */
102
+ resolveMainConfig(agentDir, agentName) {
103
+ const registry = this.getRegistry();
104
+ const agentData = registry.agents[agentName];
105
+ if (!agentData) {
106
+ const available = Object.keys(registry.agents);
107
+ throw import_errors.RegistryError.agentNotFound(agentName, available);
108
+ }
109
+ if (agentData.source.endsWith("/")) {
110
+ if (!agentData.main) {
111
+ throw import_errors.RegistryError.agentInvalidEntry(
112
+ agentName,
113
+ "directory entry missing main field"
114
+ );
115
+ }
116
+ const mainConfigPath = import_path.default.join(agentDir, agentData.main);
117
+ if (!(0, import_fs.existsSync)(mainConfigPath)) {
118
+ throw import_errors.RegistryError.mainConfigMissing(agentName, mainConfigPath);
119
+ }
120
+ return mainConfigPath;
121
+ } else {
122
+ const filename = import_path.default.basename(agentData.source);
123
+ const configPath = import_path.default.join(agentDir, filename);
124
+ if (!(0, import_fs.existsSync)(configPath)) {
125
+ throw import_errors.RegistryError.configNotFound(configPath);
126
+ }
127
+ return configPath;
128
+ }
129
+ }
130
+ /**
131
+ * Install agent atomically using temp + rename pattern
132
+ * @param agentName Name of the agent to install
133
+ * @param injectPreferences Whether to inject global preferences into installed agent (default: true)
134
+ */
135
+ async installAgent(agentName, injectPreferences = true) {
136
+ import_logger.logger.info(`Installing agent: ${agentName}`);
137
+ const registry = this.getRegistry();
138
+ const agentData = registry.agents[agentName];
139
+ if (!agentData) {
140
+ const available = Object.keys(registry.agents);
141
+ throw import_errors.RegistryError.agentNotFound(agentName, available);
142
+ }
143
+ const globalAgentsDir = (0, import_path2.getDextoGlobalPath)("agents");
144
+ const targetDir = import_path.default.join(globalAgentsDir, agentName);
145
+ if ((0, import_fs.existsSync)(targetDir)) {
146
+ import_logger.logger.info(`Agent '${agentName}' already installed`);
147
+ return this.resolveMainConfig(targetDir, agentName);
148
+ }
149
+ await import_fs2.promises.mkdir(globalAgentsDir, { recursive: true });
150
+ const sourcePath = (0, import_path2.resolveBundledScript)(`agents/${agentData.source}`);
151
+ const tempDir = `${targetDir}.tmp.${Date.now()}`;
152
+ try {
153
+ if (agentData.source.endsWith("/")) {
154
+ await (0, import_path2.copyDirectory)(sourcePath, tempDir);
155
+ } else {
156
+ await import_fs2.promises.mkdir(tempDir, { recursive: true });
157
+ const targetFile = import_path.default.join(tempDir, import_path.default.basename(sourcePath));
158
+ await import_fs2.promises.copyFile(sourcePath, targetFile);
159
+ }
160
+ const mainConfigPath = this.resolveMainConfig(tempDir, agentName);
161
+ if (!(0, import_fs.existsSync)(mainConfigPath)) {
162
+ throw import_errors.RegistryError.installationValidationFailed(agentName, mainConfigPath);
163
+ }
164
+ await import_fs2.promises.rename(tempDir, targetDir);
165
+ import_logger.logger.info(`\u2713 Installed agent '${agentName}' to ${targetDir}`);
166
+ if (injectPreferences) {
167
+ try {
168
+ const preferences = await (0, import_loader.loadGlobalPreferences)();
169
+ await (0, import_writer.writePreferencesToAgent)(targetDir, preferences);
170
+ import_logger.logger.info(`\u2713 Applied global preferences to installed agent '${agentName}'`);
171
+ } catch (error) {
172
+ import_logger.logger.warn(
173
+ `Failed to inject preferences to '${agentName}': ${error instanceof Error ? error.message : String(error)}`
174
+ );
175
+ console.log(
176
+ `\u26A0\uFE0F Warning: Could not apply preferences to '${agentName}' - agent will use bundled settings`
177
+ );
178
+ }
179
+ } else {
180
+ import_logger.logger.info(
181
+ `Skipped preference injection for '${agentName}' (injectPreferences=false)`
182
+ );
183
+ }
184
+ return this.resolveMainConfig(targetDir, agentName);
185
+ } catch (error) {
186
+ try {
187
+ if ((0, import_fs.existsSync)(tempDir)) {
188
+ await import_fs2.promises.rm(tempDir, { recursive: true, force: true });
189
+ }
190
+ } catch (cleanupError) {
191
+ import_logger.logger.error(
192
+ `Failed to clean up temp directory: ${cleanupError}. Skipping cleanup...`
193
+ );
194
+ }
195
+ throw import_errors.RegistryError.installationFailed(
196
+ agentName,
197
+ error instanceof Error ? error.message : String(error)
198
+ );
199
+ }
200
+ }
201
+ /**
202
+ * Resolve a registry agent name to a config path
203
+ * NOTE: Only handles registry names, not file paths (routing done in loadAgentConfig)
204
+ * Handles installing agent if needed
205
+ * @param agentName Name of the agent to resolve
206
+ * @param autoInstall Whether to automatically install missing agents from registry (default: true)
207
+ * @param injectPreferences Whether to inject preferences during auto-installation (default: true)
208
+ */
209
+ async resolveAgent(agentName, autoInstall = true, injectPreferences = true) {
210
+ import_logger.logger.debug(`Resolving registry agent: ${agentName}`);
211
+ const globalAgentsDir = (0, import_path2.getDextoGlobalPath)("agents");
212
+ const installedPath = import_path.default.join(globalAgentsDir, agentName);
213
+ if ((0, import_fs.existsSync)(installedPath)) {
214
+ const mainConfig = this.resolveMainConfig(installedPath, agentName);
215
+ import_logger.logger.debug(`Resolved installed agent '${agentName}' to: ${mainConfig}`);
216
+ return mainConfig;
217
+ }
218
+ import_logger.logger.debug(`Agent '${agentName}' not found in installed path: ${installedPath}`);
219
+ if (this.hasAgent(agentName)) {
220
+ if (autoInstall) {
221
+ import_logger.logger.info(`Installing agent '${agentName}' from registry...`);
222
+ return await this.installAgent(agentName, injectPreferences);
223
+ } else {
224
+ const registry2 = this.getRegistry();
225
+ const available2 = Object.keys(registry2.agents);
226
+ throw import_errors.RegistryError.agentNotInstalledAutoInstallDisabled(agentName, available2);
227
+ }
228
+ }
229
+ const registry = this.getRegistry();
230
+ const available = Object.keys(registry.agents);
231
+ throw import_errors.RegistryError.agentNotFound(agentName, available);
232
+ }
233
+ /**
234
+ * Get list of currently installed agents
235
+ */
236
+ async getInstalledAgents() {
237
+ const globalAgentsDir = (0, import_path2.getDextoGlobalPath)("agents");
238
+ if (!(0, import_fs.existsSync)(globalAgentsDir)) {
239
+ return [];
240
+ }
241
+ try {
242
+ const entries = await import_fs2.promises.readdir(globalAgentsDir, { withFileTypes: true });
243
+ return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).filter((name) => !name.startsWith(".tmp") && !name.includes(".tmp."));
244
+ } catch (error) {
245
+ import_logger.logger.error(`Failed to read installed agents directory: ${error}`);
246
+ return [];
247
+ }
248
+ }
249
+ /**
250
+ * Check if an agent is safe to uninstall (not the default-agent which is critical)
251
+ */
252
+ isAgentSafeToUninstall(agentName) {
253
+ return agentName !== "default-agent";
254
+ }
255
+ /**
256
+ * Uninstall an agent by removing its directory
257
+ * @param agentName Name of the agent to uninstall
258
+ * @param force Whether to force uninstall even if agent is protected (default: false)
259
+ */
260
+ async uninstallAgent(agentName, force = false) {
261
+ const globalAgentsDir = (0, import_path2.getDextoGlobalPath)("agents");
262
+ const agentDir = import_path.default.join(globalAgentsDir, agentName);
263
+ import_logger.logger.info(`Uninstalling agent: ${agentName} from ${agentDir}`);
264
+ if (!(0, import_fs.existsSync)(agentDir)) {
265
+ throw import_errors.RegistryError.agentNotInstalled(agentName);
266
+ }
267
+ if (!force && !this.isAgentSafeToUninstall(agentName)) {
268
+ throw import_errors.RegistryError.agentProtected(agentName);
269
+ }
270
+ try {
271
+ await import_fs2.promises.rm(agentDir, { recursive: true, force: true });
272
+ import_logger.logger.info(`\u2713 Removed agent '${agentName}' from ${agentDir}`);
273
+ } catch (error) {
274
+ throw import_errors.RegistryError.uninstallationFailed(
275
+ agentName,
276
+ error instanceof Error ? error.message : String(error)
277
+ );
278
+ }
279
+ }
280
+ }
281
+ function getAgentRegistry() {
282
+ if (cachedRegistry === null) {
283
+ cachedRegistry = new LocalAgentRegistry();
284
+ }
285
+ return cachedRegistry;
286
+ }
287
+ // Annotate the CommonJS export names for ESM import in node:
288
+ 0 && (module.exports = {
289
+ LocalAgentRegistry,
290
+ getAgentRegistry
291
+ });
@@ -0,0 +1,67 @@
1
+ import { AgentRegistry, Registry, AgentRegistryEntry } from './types.cjs';
2
+ import 'zod';
3
+
4
+ /**
5
+ * Local agent registry implementation
6
+ * TODO: MOVE THIS INTO CLI WHERE IT IS USED, and add posthog instrumentation for install/uninstall/resolve/etc, similar to manual install command
7
+ */
8
+ declare class LocalAgentRegistry implements AgentRegistry {
9
+ private _registry;
10
+ /**
11
+ * Lazy load registry from JSON file
12
+ */
13
+ getRegistry(): Registry;
14
+ /**
15
+ * Load registry from bundled JSON file
16
+ * Uses fail-fast approach - throws RegistryError for any loading issues
17
+ */
18
+ private loadRegistry;
19
+ /**
20
+ * Check if agent exists in registry
21
+ */
22
+ hasAgent(name: string): boolean;
23
+ /**
24
+ * Get available agents with their metadata from registry
25
+ */
26
+ getAvailableAgents(): Record<string, AgentRegistryEntry>;
27
+ /**
28
+ * Resolve main config file for installed agent
29
+ * Handles both directory agents (with main field) and single-file agents
30
+ */
31
+ resolveMainConfig(agentDir: string, agentName: string): string;
32
+ /**
33
+ * Install agent atomically using temp + rename pattern
34
+ * @param agentName Name of the agent to install
35
+ * @param injectPreferences Whether to inject global preferences into installed agent (default: true)
36
+ */
37
+ installAgent(agentName: string, injectPreferences?: boolean): Promise<string>;
38
+ /**
39
+ * Resolve a registry agent name to a config path
40
+ * NOTE: Only handles registry names, not file paths (routing done in loadAgentConfig)
41
+ * Handles installing agent if needed
42
+ * @param agentName Name of the agent to resolve
43
+ * @param autoInstall Whether to automatically install missing agents from registry (default: true)
44
+ * @param injectPreferences Whether to inject preferences during auto-installation (default: true)
45
+ */
46
+ resolveAgent(agentName: string, autoInstall?: boolean, injectPreferences?: boolean): Promise<string>;
47
+ /**
48
+ * Get list of currently installed agents
49
+ */
50
+ getInstalledAgents(): Promise<string[]>;
51
+ /**
52
+ * Check if an agent is safe to uninstall (not the default-agent which is critical)
53
+ */
54
+ private isAgentSafeToUninstall;
55
+ /**
56
+ * Uninstall an agent by removing its directory
57
+ * @param agentName Name of the agent to uninstall
58
+ * @param force Whether to force uninstall even if agent is protected (default: false)
59
+ */
60
+ uninstallAgent(agentName: string, force?: boolean): Promise<void>;
61
+ }
62
+ /**
63
+ * Get cached registry instance (singleton pattern)
64
+ */
65
+ declare function getAgentRegistry(): LocalAgentRegistry;
66
+
67
+ export { LocalAgentRegistry, getAgentRegistry };
@@ -0,0 +1,67 @@
1
+ import { AgentRegistry, Registry, AgentRegistryEntry } from './types.js';
2
+ import 'zod';
3
+
4
+ /**
5
+ * Local agent registry implementation
6
+ * TODO: MOVE THIS INTO CLI WHERE IT IS USED, and add posthog instrumentation for install/uninstall/resolve/etc, similar to manual install command
7
+ */
8
+ declare class LocalAgentRegistry implements AgentRegistry {
9
+ private _registry;
10
+ /**
11
+ * Lazy load registry from JSON file
12
+ */
13
+ getRegistry(): Registry;
14
+ /**
15
+ * Load registry from bundled JSON file
16
+ * Uses fail-fast approach - throws RegistryError for any loading issues
17
+ */
18
+ private loadRegistry;
19
+ /**
20
+ * Check if agent exists in registry
21
+ */
22
+ hasAgent(name: string): boolean;
23
+ /**
24
+ * Get available agents with their metadata from registry
25
+ */
26
+ getAvailableAgents(): Record<string, AgentRegistryEntry>;
27
+ /**
28
+ * Resolve main config file for installed agent
29
+ * Handles both directory agents (with main field) and single-file agents
30
+ */
31
+ resolveMainConfig(agentDir: string, agentName: string): string;
32
+ /**
33
+ * Install agent atomically using temp + rename pattern
34
+ * @param agentName Name of the agent to install
35
+ * @param injectPreferences Whether to inject global preferences into installed agent (default: true)
36
+ */
37
+ installAgent(agentName: string, injectPreferences?: boolean): Promise<string>;
38
+ /**
39
+ * Resolve a registry agent name to a config path
40
+ * NOTE: Only handles registry names, not file paths (routing done in loadAgentConfig)
41
+ * Handles installing agent if needed
42
+ * @param agentName Name of the agent to resolve
43
+ * @param autoInstall Whether to automatically install missing agents from registry (default: true)
44
+ * @param injectPreferences Whether to inject preferences during auto-installation (default: true)
45
+ */
46
+ resolveAgent(agentName: string, autoInstall?: boolean, injectPreferences?: boolean): Promise<string>;
47
+ /**
48
+ * Get list of currently installed agents
49
+ */
50
+ getInstalledAgents(): Promise<string[]>;
51
+ /**
52
+ * Check if an agent is safe to uninstall (not the default-agent which is critical)
53
+ */
54
+ private isAgentSafeToUninstall;
55
+ /**
56
+ * Uninstall an agent by removing its directory
57
+ * @param agentName Name of the agent to uninstall
58
+ * @param force Whether to force uninstall even if agent is protected (default: false)
59
+ */
60
+ uninstallAgent(agentName: string, force?: boolean): Promise<void>;
61
+ }
62
+ /**
63
+ * Get cached registry instance (singleton pattern)
64
+ */
65
+ declare function getAgentRegistry(): LocalAgentRegistry;
66
+
67
+ export { LocalAgentRegistry, getAgentRegistry };
@@ -0,0 +1,256 @@
1
+ import { existsSync, readFileSync } from "fs";
2
+ import { promises as fs } from "fs";
3
+ import path from "path";
4
+ import { logger } from "../../logger/index.js";
5
+ import { resolveBundledScript, getDextoGlobalPath, copyDirectory } from "../../utils/path.js";
6
+ import { loadGlobalPreferences } from "../../preferences/loader.js";
7
+ import { writePreferencesToAgent } from "../../config/writer.js";
8
+ import { RegistrySchema } from "./types.js";
9
+ import { RegistryError } from "./errors.js";
10
+ let cachedRegistry = null;
11
+ class LocalAgentRegistry {
12
+ _registry = null;
13
+ /**
14
+ * Lazy load registry from JSON file
15
+ */
16
+ getRegistry() {
17
+ if (this._registry === null) {
18
+ this._registry = this.loadRegistry();
19
+ }
20
+ return this._registry;
21
+ }
22
+ /**
23
+ * Load registry from bundled JSON file
24
+ * Uses fail-fast approach - throws RegistryError for any loading issues
25
+ */
26
+ loadRegistry() {
27
+ let jsonPath;
28
+ try {
29
+ jsonPath = resolveBundledScript("agents/agent-registry.json");
30
+ } catch (error) {
31
+ throw RegistryError.registryNotFound(
32
+ "agents/agent-registry.json",
33
+ error instanceof Error ? error.message : String(error)
34
+ );
35
+ }
36
+ if (!existsSync(jsonPath)) {
37
+ throw RegistryError.registryNotFound(jsonPath, "File doesn't exist");
38
+ }
39
+ try {
40
+ const jsonData = readFileSync(jsonPath, "utf-8");
41
+ const rawRegistry = JSON.parse(jsonData);
42
+ return RegistrySchema.parse(rawRegistry);
43
+ } catch (error) {
44
+ throw RegistryError.registryParseError(
45
+ jsonPath,
46
+ error instanceof Error ? error.message : String(error)
47
+ );
48
+ }
49
+ }
50
+ /**
51
+ * Check if agent exists in registry
52
+ */
53
+ hasAgent(name) {
54
+ const registry = this.getRegistry();
55
+ return name in registry.agents;
56
+ }
57
+ /**
58
+ * Get available agents with their metadata from registry
59
+ */
60
+ getAvailableAgents() {
61
+ const registry = this.getRegistry();
62
+ return registry.agents;
63
+ }
64
+ /**
65
+ * Resolve main config file for installed agent
66
+ * Handles both directory agents (with main field) and single-file agents
67
+ */
68
+ resolveMainConfig(agentDir, agentName) {
69
+ const registry = this.getRegistry();
70
+ const agentData = registry.agents[agentName];
71
+ if (!agentData) {
72
+ const available = Object.keys(registry.agents);
73
+ throw RegistryError.agentNotFound(agentName, available);
74
+ }
75
+ if (agentData.source.endsWith("/")) {
76
+ if (!agentData.main) {
77
+ throw RegistryError.agentInvalidEntry(
78
+ agentName,
79
+ "directory entry missing main field"
80
+ );
81
+ }
82
+ const mainConfigPath = path.join(agentDir, agentData.main);
83
+ if (!existsSync(mainConfigPath)) {
84
+ throw RegistryError.mainConfigMissing(agentName, mainConfigPath);
85
+ }
86
+ return mainConfigPath;
87
+ } else {
88
+ const filename = path.basename(agentData.source);
89
+ const configPath = path.join(agentDir, filename);
90
+ if (!existsSync(configPath)) {
91
+ throw RegistryError.configNotFound(configPath);
92
+ }
93
+ return configPath;
94
+ }
95
+ }
96
+ /**
97
+ * Install agent atomically using temp + rename pattern
98
+ * @param agentName Name of the agent to install
99
+ * @param injectPreferences Whether to inject global preferences into installed agent (default: true)
100
+ */
101
+ async installAgent(agentName, injectPreferences = true) {
102
+ logger.info(`Installing agent: ${agentName}`);
103
+ const registry = this.getRegistry();
104
+ const agentData = registry.agents[agentName];
105
+ if (!agentData) {
106
+ const available = Object.keys(registry.agents);
107
+ throw RegistryError.agentNotFound(agentName, available);
108
+ }
109
+ const globalAgentsDir = getDextoGlobalPath("agents");
110
+ const targetDir = path.join(globalAgentsDir, agentName);
111
+ if (existsSync(targetDir)) {
112
+ logger.info(`Agent '${agentName}' already installed`);
113
+ return this.resolveMainConfig(targetDir, agentName);
114
+ }
115
+ await fs.mkdir(globalAgentsDir, { recursive: true });
116
+ const sourcePath = resolveBundledScript(`agents/${agentData.source}`);
117
+ const tempDir = `${targetDir}.tmp.${Date.now()}`;
118
+ try {
119
+ if (agentData.source.endsWith("/")) {
120
+ await copyDirectory(sourcePath, tempDir);
121
+ } else {
122
+ await fs.mkdir(tempDir, { recursive: true });
123
+ const targetFile = path.join(tempDir, path.basename(sourcePath));
124
+ await fs.copyFile(sourcePath, targetFile);
125
+ }
126
+ const mainConfigPath = this.resolveMainConfig(tempDir, agentName);
127
+ if (!existsSync(mainConfigPath)) {
128
+ throw RegistryError.installationValidationFailed(agentName, mainConfigPath);
129
+ }
130
+ await fs.rename(tempDir, targetDir);
131
+ logger.info(`\u2713 Installed agent '${agentName}' to ${targetDir}`);
132
+ if (injectPreferences) {
133
+ try {
134
+ const preferences = await loadGlobalPreferences();
135
+ await writePreferencesToAgent(targetDir, preferences);
136
+ logger.info(`\u2713 Applied global preferences to installed agent '${agentName}'`);
137
+ } catch (error) {
138
+ logger.warn(
139
+ `Failed to inject preferences to '${agentName}': ${error instanceof Error ? error.message : String(error)}`
140
+ );
141
+ console.log(
142
+ `\u26A0\uFE0F Warning: Could not apply preferences to '${agentName}' - agent will use bundled settings`
143
+ );
144
+ }
145
+ } else {
146
+ logger.info(
147
+ `Skipped preference injection for '${agentName}' (injectPreferences=false)`
148
+ );
149
+ }
150
+ return this.resolveMainConfig(targetDir, agentName);
151
+ } catch (error) {
152
+ try {
153
+ if (existsSync(tempDir)) {
154
+ await fs.rm(tempDir, { recursive: true, force: true });
155
+ }
156
+ } catch (cleanupError) {
157
+ logger.error(
158
+ `Failed to clean up temp directory: ${cleanupError}. Skipping cleanup...`
159
+ );
160
+ }
161
+ throw RegistryError.installationFailed(
162
+ agentName,
163
+ error instanceof Error ? error.message : String(error)
164
+ );
165
+ }
166
+ }
167
+ /**
168
+ * Resolve a registry agent name to a config path
169
+ * NOTE: Only handles registry names, not file paths (routing done in loadAgentConfig)
170
+ * Handles installing agent if needed
171
+ * @param agentName Name of the agent to resolve
172
+ * @param autoInstall Whether to automatically install missing agents from registry (default: true)
173
+ * @param injectPreferences Whether to inject preferences during auto-installation (default: true)
174
+ */
175
+ async resolveAgent(agentName, autoInstall = true, injectPreferences = true) {
176
+ logger.debug(`Resolving registry agent: ${agentName}`);
177
+ const globalAgentsDir = getDextoGlobalPath("agents");
178
+ const installedPath = path.join(globalAgentsDir, agentName);
179
+ if (existsSync(installedPath)) {
180
+ const mainConfig = this.resolveMainConfig(installedPath, agentName);
181
+ logger.debug(`Resolved installed agent '${agentName}' to: ${mainConfig}`);
182
+ return mainConfig;
183
+ }
184
+ logger.debug(`Agent '${agentName}' not found in installed path: ${installedPath}`);
185
+ if (this.hasAgent(agentName)) {
186
+ if (autoInstall) {
187
+ logger.info(`Installing agent '${agentName}' from registry...`);
188
+ return await this.installAgent(agentName, injectPreferences);
189
+ } else {
190
+ const registry2 = this.getRegistry();
191
+ const available2 = Object.keys(registry2.agents);
192
+ throw RegistryError.agentNotInstalledAutoInstallDisabled(agentName, available2);
193
+ }
194
+ }
195
+ const registry = this.getRegistry();
196
+ const available = Object.keys(registry.agents);
197
+ throw RegistryError.agentNotFound(agentName, available);
198
+ }
199
+ /**
200
+ * Get list of currently installed agents
201
+ */
202
+ async getInstalledAgents() {
203
+ const globalAgentsDir = getDextoGlobalPath("agents");
204
+ if (!existsSync(globalAgentsDir)) {
205
+ return [];
206
+ }
207
+ try {
208
+ const entries = await fs.readdir(globalAgentsDir, { withFileTypes: true });
209
+ return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).filter((name) => !name.startsWith(".tmp") && !name.includes(".tmp."));
210
+ } catch (error) {
211
+ logger.error(`Failed to read installed agents directory: ${error}`);
212
+ return [];
213
+ }
214
+ }
215
+ /**
216
+ * Check if an agent is safe to uninstall (not the default-agent which is critical)
217
+ */
218
+ isAgentSafeToUninstall(agentName) {
219
+ return agentName !== "default-agent";
220
+ }
221
+ /**
222
+ * Uninstall an agent by removing its directory
223
+ * @param agentName Name of the agent to uninstall
224
+ * @param force Whether to force uninstall even if agent is protected (default: false)
225
+ */
226
+ async uninstallAgent(agentName, force = false) {
227
+ const globalAgentsDir = getDextoGlobalPath("agents");
228
+ const agentDir = path.join(globalAgentsDir, agentName);
229
+ logger.info(`Uninstalling agent: ${agentName} from ${agentDir}`);
230
+ if (!existsSync(agentDir)) {
231
+ throw RegistryError.agentNotInstalled(agentName);
232
+ }
233
+ if (!force && !this.isAgentSafeToUninstall(agentName)) {
234
+ throw RegistryError.agentProtected(agentName);
235
+ }
236
+ try {
237
+ await fs.rm(agentDir, { recursive: true, force: true });
238
+ logger.info(`\u2713 Removed agent '${agentName}' from ${agentDir}`);
239
+ } catch (error) {
240
+ throw RegistryError.uninstallationFailed(
241
+ agentName,
242
+ error instanceof Error ? error.message : String(error)
243
+ );
244
+ }
245
+ }
246
+ }
247
+ function getAgentRegistry() {
248
+ if (cachedRegistry === null) {
249
+ cachedRegistry = new LocalAgentRegistry();
250
+ }
251
+ return cachedRegistry;
252
+ }
253
+ export {
254
+ LocalAgentRegistry,
255
+ getAgentRegistry
256
+ };