@patroltech/agent-capabilities 0.0.0-stage → 0.2.1

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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -2
  3. package/dist/actions/alerts.d.ts +3 -0
  4. package/dist/actions/alerts.d.ts.map +1 -0
  5. package/dist/actions/alerts.js +90 -0
  6. package/dist/actions/alerts.js.map +1 -0
  7. package/dist/actions/batch-policy.d.ts +67 -0
  8. package/dist/actions/batch-policy.d.ts.map +1 -0
  9. package/dist/actions/batch-policy.js +73 -0
  10. package/dist/actions/batch-policy.js.map +1 -0
  11. package/dist/actions/checkpoint-archive.d.ts +3 -0
  12. package/dist/actions/checkpoint-archive.d.ts.map +1 -0
  13. package/dist/actions/checkpoint-archive.js +173 -0
  14. package/dist/actions/checkpoint-archive.js.map +1 -0
  15. package/dist/actions/checkpoint-geo.d.ts +4 -0
  16. package/dist/actions/checkpoint-geo.d.ts.map +1 -0
  17. package/dist/actions/checkpoint-geo.js +286 -0
  18. package/dist/actions/checkpoint-geo.js.map +1 -0
  19. package/dist/actions/checkpoints.d.ts +10 -0
  20. package/dist/actions/checkpoints.d.ts.map +1 -0
  21. package/dist/actions/checkpoints.js +222 -0
  22. package/dist/actions/checkpoints.js.map +1 -0
  23. package/dist/actions/guard.d.ts +13 -0
  24. package/dist/actions/guard.d.ts.map +1 -0
  25. package/dist/actions/guard.js +30 -0
  26. package/dist/actions/guard.js.map +1 -0
  27. package/dist/actions/incidents.d.ts +3 -0
  28. package/dist/actions/incidents.d.ts.map +1 -0
  29. package/dist/actions/incidents.js +260 -0
  30. package/dist/actions/incidents.js.map +1 -0
  31. package/dist/actions/index.d.ts +20 -0
  32. package/dist/actions/index.d.ts.map +1 -0
  33. package/dist/actions/index.js +60 -0
  34. package/dist/actions/index.js.map +1 -0
  35. package/dist/actions/locations.d.ts +4 -0
  36. package/dist/actions/locations.d.ts.map +1 -0
  37. package/dist/actions/locations.js +202 -0
  38. package/dist/actions/locations.js.map +1 -0
  39. package/dist/actions/names.d.ts +27 -0
  40. package/dist/actions/names.d.ts.map +1 -0
  41. package/dist/actions/names.js +48 -0
  42. package/dist/actions/names.js.map +1 -0
  43. package/dist/actions/patrollers.d.ts +6 -0
  44. package/dist/actions/patrollers.d.ts.map +1 -0
  45. package/dist/actions/patrollers.js +172 -0
  46. package/dist/actions/patrollers.js.map +1 -0
  47. package/dist/actions/route-schedules.d.ts +4 -0
  48. package/dist/actions/route-schedules.d.ts.map +1 -0
  49. package/dist/actions/route-schedules.js +110 -0
  50. package/dist/actions/route-schedules.js.map +1 -0
  51. package/dist/actions/routes.d.ts +5 -0
  52. package/dist/actions/routes.d.ts.map +1 -0
  53. package/dist/actions/routes.js +348 -0
  54. package/dist/actions/routes.js.map +1 -0
  55. package/dist/actions/support/antifraud-rules.d.ts +53 -0
  56. package/dist/actions/support/antifraud-rules.d.ts.map +1 -0
  57. package/dist/actions/support/antifraud-rules.js +121 -0
  58. package/dist/actions/support/antifraud-rules.js.map +1 -0
  59. package/dist/actions/support/elegir-ubicacion.d.ts +31 -0
  60. package/dist/actions/support/elegir-ubicacion.d.ts.map +1 -0
  61. package/dist/actions/support/elegir-ubicacion.js +42 -0
  62. package/dist/actions/support/elegir-ubicacion.js.map +1 -0
  63. package/dist/actions/support/next-step.d.ts +26 -0
  64. package/dist/actions/support/next-step.d.ts.map +1 -0
  65. package/dist/actions/support/next-step.js +55 -0
  66. package/dist/actions/support/next-step.js.map +1 -0
  67. package/dist/actions/support/route-impact.d.ts +25 -0
  68. package/dist/actions/support/route-impact.d.ts.map +1 -0
  69. package/dist/actions/support/route-impact.js +76 -0
  70. package/dist/actions/support/route-impact.js.map +1 -0
  71. package/dist/actions/support/route-lookup.d.ts +27 -0
  72. package/dist/actions/support/route-lookup.d.ts.map +1 -0
  73. package/dist/actions/support/route-lookup.js +44 -0
  74. package/dist/actions/support/route-lookup.js.map +1 -0
  75. package/dist/actions/support/schedule.d.ts +38 -0
  76. package/dist/actions/support/schedule.d.ts.map +1 -0
  77. package/dist/actions/support/schedule.js +62 -0
  78. package/dist/actions/support/schedule.js.map +1 -0
  79. package/dist/actions/support/shared.d.ts +112 -0
  80. package/dist/actions/support/shared.d.ts.map +1 -0
  81. package/dist/actions/support/shared.js +171 -0
  82. package/dist/actions/support/shared.js.map +1 -0
  83. package/dist/actions/support/texts.d.ts +47 -0
  84. package/dist/actions/support/texts.d.ts.map +1 -0
  85. package/dist/actions/support/texts.js +134 -0
  86. package/dist/actions/support/texts.js.map +1 -0
  87. package/dist/actions/support/turno.d.ts +16 -0
  88. package/dist/actions/support/turno.d.ts.map +1 -0
  89. package/dist/actions/support/turno.js +35 -0
  90. package/dist/actions/support/turno.js.map +1 -0
  91. package/dist/actions/support/user-access.d.ts +72 -0
  92. package/dist/actions/support/user-access.d.ts.map +1 -0
  93. package/dist/actions/support/user-access.js +194 -0
  94. package/dist/actions/support/user-access.js.map +1 -0
  95. package/dist/actions/types.d.ts +130 -0
  96. package/dist/actions/types.d.ts.map +1 -0
  97. package/dist/actions/types.js +20 -0
  98. package/dist/actions/types.js.map +1 -0
  99. package/dist/actions/user-roles.d.ts +4 -0
  100. package/dist/actions/user-roles.d.ts.map +1 -0
  101. package/dist/actions/user-roles.js +195 -0
  102. package/dist/actions/user-roles.js.map +1 -0
  103. package/dist/actions/users.d.ts +3 -0
  104. package/dist/actions/users.d.ts.map +1 -0
  105. package/dist/actions/users.js +146 -0
  106. package/dist/actions/users.js.map +1 -0
  107. package/dist/catalog/buildCatalog.d.ts +19 -0
  108. package/dist/catalog/buildCatalog.d.ts.map +1 -0
  109. package/dist/catalog/buildCatalog.js +38 -0
  110. package/dist/catalog/buildCatalog.js.map +1 -0
  111. package/dist/catalog/english.d.ts +17 -0
  112. package/dist/catalog/english.d.ts.map +1 -0
  113. package/dist/catalog/english.js +392 -0
  114. package/dist/catalog/english.js.map +1 -0
  115. package/dist/catalog/entries.d.ts +6 -0
  116. package/dist/catalog/entries.d.ts.map +1 -0
  117. package/dist/catalog/entries.js +610 -0
  118. package/dist/catalog/entries.js.map +1 -0
  119. package/dist/catalog/types.d.ts +61 -0
  120. package/dist/catalog/types.d.ts.map +1 -0
  121. package/dist/catalog/types.js +2 -0
  122. package/dist/catalog/types.js.map +1 -0
  123. package/dist/context.d.ts +37 -0
  124. package/dist/context.d.ts.map +1 -0
  125. package/dist/context.js +11 -0
  126. package/dist/context.js.map +1 -0
  127. package/dist/deps.d.ts +23 -0
  128. package/dist/deps.d.ts.map +1 -0
  129. package/dist/deps.js +12 -0
  130. package/dist/deps.js.map +1 -0
  131. package/dist/domain/access-logs-csv.d.ts +25 -0
  132. package/dist/domain/access-logs-csv.d.ts.map +1 -0
  133. package/dist/domain/access-logs-csv.js +36 -0
  134. package/dist/domain/access-logs-csv.js.map +1 -0
  135. package/dist/domain/backend-errors.d.ts +54 -0
  136. package/dist/domain/backend-errors.d.ts.map +1 -0
  137. package/dist/domain/backend-errors.js +364 -0
  138. package/dist/domain/backend-errors.js.map +1 -0
  139. package/dist/domain/country.d.ts +9 -0
  140. package/dist/domain/country.d.ts.map +1 -0
  141. package/dist/domain/country.js +13 -0
  142. package/dist/domain/country.js.map +1 -0
  143. package/dist/domain/date-range.d.ts +33 -0
  144. package/dist/domain/date-range.d.ts.map +1 -0
  145. package/dist/domain/date-range.js +110 -0
  146. package/dist/domain/date-range.js.map +1 -0
  147. package/dist/domain/geo.d.ts +14 -0
  148. package/dist/domain/geo.d.ts.map +1 -0
  149. package/dist/domain/geo.js +22 -0
  150. package/dist/domain/geo.js.map +1 -0
  151. package/dist/domain/guard-app-message.d.ts +15 -0
  152. package/dist/domain/guard-app-message.d.ts.map +1 -0
  153. package/dist/domain/guard-app-message.js +39 -0
  154. package/dist/domain/guard-app-message.js.map +1 -0
  155. package/dist/domain/incident-priority.d.ts +25 -0
  156. package/dist/domain/incident-priority.d.ts.map +1 -0
  157. package/dist/domain/incident-priority.js +15 -0
  158. package/dist/domain/incident-priority.js.map +1 -0
  159. package/dist/domain/incident-status.d.ts +29 -0
  160. package/dist/domain/incident-status.d.ts.map +1 -0
  161. package/dist/domain/incident-status.js +44 -0
  162. package/dist/domain/incident-status.js.map +1 -0
  163. package/dist/domain/language.d.ts +39 -0
  164. package/dist/domain/language.d.ts.map +1 -0
  165. package/dist/domain/language.js +112 -0
  166. package/dist/domain/language.js.map +1 -0
  167. package/dist/domain/money.d.ts +3 -0
  168. package/dist/domain/money.d.ts.map +1 -0
  169. package/dist/domain/money.js +12 -0
  170. package/dist/domain/money.js.map +1 -0
  171. package/dist/domain/puesta-en-marcha.d.ts +47 -0
  172. package/dist/domain/puesta-en-marcha.d.ts.map +1 -0
  173. package/dist/domain/puesta-en-marcha.js +22 -0
  174. package/dist/domain/puesta-en-marcha.js.map +1 -0
  175. package/dist/domain/qr-image.d.ts +25 -0
  176. package/dist/domain/qr-image.d.ts.map +1 -0
  177. package/dist/domain/qr-image.js +28 -0
  178. package/dist/domain/qr-image.js.map +1 -0
  179. package/dist/domain/resolve-by-name.d.ts +32 -0
  180. package/dist/domain/resolve-by-name.d.ts.map +1 -0
  181. package/dist/domain/resolve-by-name.js +40 -0
  182. package/dist/domain/resolve-by-name.js.map +1 -0
  183. package/dist/domain/route-checkpoints.d.ts +31 -0
  184. package/dist/domain/route-checkpoints.d.ts.map +1 -0
  185. package/dist/domain/route-checkpoints.js +27 -0
  186. package/dist/domain/route-checkpoints.js.map +1 -0
  187. package/dist/domain/route-schedule.d.ts +88 -0
  188. package/dist/domain/route-schedule.d.ts.map +1 -0
  189. package/dist/domain/route-schedule.js +203 -0
  190. package/dist/domain/route-schedule.js.map +1 -0
  191. package/dist/domain/scan-explanation.d.ts +25 -0
  192. package/dist/domain/scan-explanation.d.ts.map +1 -0
  193. package/dist/domain/scan-explanation.js +99 -0
  194. package/dist/domain/scan-explanation.js.map +1 -0
  195. package/dist/domain/scans-csv.d.ts +37 -0
  196. package/dist/domain/scans-csv.d.ts.map +1 -0
  197. package/dist/domain/scans-csv.js +67 -0
  198. package/dist/domain/scans-csv.js.map +1 -0
  199. package/dist/domain/timezone.d.ts +61 -0
  200. package/dist/domain/timezone.d.ts.map +1 -0
  201. package/dist/domain/timezone.js +113 -0
  202. package/dist/domain/timezone.js.map +1 -0
  203. package/dist/domain/tool-result.d.ts +55 -0
  204. package/dist/domain/tool-result.d.ts.map +1 -0
  205. package/dist/domain/tool-result.js +47 -0
  206. package/dist/domain/tool-result.js.map +1 -0
  207. package/dist/domain/urls.d.ts +33 -0
  208. package/dist/domain/urls.d.ts.map +1 -0
  209. package/dist/domain/urls.js +20 -0
  210. package/dist/domain/urls.js.map +1 -0
  211. package/dist/gateway/PatrolTechGateway.d.ts +195 -0
  212. package/dist/gateway/PatrolTechGateway.d.ts.map +1 -0
  213. package/dist/gateway/PatrolTechGateway.js +2 -0
  214. package/dist/gateway/PatrolTechGateway.js.map +1 -0
  215. package/dist/gateway/index.d.ts +4 -0
  216. package/dist/gateway/index.d.ts.map +1 -0
  217. package/dist/gateway/index.js +4 -0
  218. package/dist/gateway/index.js.map +1 -0
  219. package/dist/gateway/sdk/SdkPatrolTechGateway.d.ts +145 -0
  220. package/dist/gateway/sdk/SdkPatrolTechGateway.d.ts.map +1 -0
  221. package/dist/gateway/sdk/SdkPatrolTechGateway.js +101 -0
  222. package/dist/gateway/sdk/SdkPatrolTechGateway.js.map +1 -0
  223. package/dist/gateway/sdk/access.d.ts +8 -0
  224. package/dist/gateway/sdk/access.d.ts.map +1 -0
  225. package/dist/gateway/sdk/access.js +39 -0
  226. package/dist/gateway/sdk/access.js.map +1 -0
  227. package/dist/gateway/sdk/billing.d.ts +7 -0
  228. package/dist/gateway/sdk/billing.d.ts.map +1 -0
  229. package/dist/gateway/sdk/billing.js +92 -0
  230. package/dist/gateway/sdk/billing.js.map +1 -0
  231. package/dist/gateway/sdk/checkpoint-mappers.d.ts +23 -0
  232. package/dist/gateway/sdk/checkpoint-mappers.d.ts.map +1 -0
  233. package/dist/gateway/sdk/checkpoint-mappers.js +59 -0
  234. package/dist/gateway/sdk/checkpoint-mappers.js.map +1 -0
  235. package/dist/gateway/sdk/checkpoints.d.ts +33 -0
  236. package/dist/gateway/sdk/checkpoints.d.ts.map +1 -0
  237. package/dist/gateway/sdk/checkpoints.js +163 -0
  238. package/dist/gateway/sdk/checkpoints.js.map +1 -0
  239. package/dist/gateway/sdk/errors.d.ts +10 -0
  240. package/dist/gateway/sdk/errors.d.ts.map +1 -0
  241. package/dist/gateway/sdk/errors.js +46 -0
  242. package/dist/gateway/sdk/errors.js.map +1 -0
  243. package/dist/gateway/sdk/incidents.d.ts +18 -0
  244. package/dist/gateway/sdk/incidents.d.ts.map +1 -0
  245. package/dist/gateway/sdk/incidents.js +98 -0
  246. package/dist/gateway/sdk/incidents.js.map +1 -0
  247. package/dist/gateway/sdk/index.d.ts +4 -0
  248. package/dist/gateway/sdk/index.d.ts.map +1 -0
  249. package/dist/gateway/sdk/index.js +4 -0
  250. package/dist/gateway/sdk/index.js.map +1 -0
  251. package/dist/gateway/sdk/list.d.ts +15 -0
  252. package/dist/gateway/sdk/list.d.ts.map +1 -0
  253. package/dist/gateway/sdk/list.js +12 -0
  254. package/dist/gateway/sdk/list.js.map +1 -0
  255. package/dist/gateway/sdk/locations.d.ts +24 -0
  256. package/dist/gateway/sdk/locations.d.ts.map +1 -0
  257. package/dist/gateway/sdk/locations.js +44 -0
  258. package/dist/gateway/sdk/locations.js.map +1 -0
  259. package/dist/gateway/sdk/patrollers.d.ts +26 -0
  260. package/dist/gateway/sdk/patrollers.d.ts.map +1 -0
  261. package/dist/gateway/sdk/patrollers.js +132 -0
  262. package/dist/gateway/sdk/patrollers.js.map +1 -0
  263. package/dist/gateway/sdk/rounds.d.ts +15 -0
  264. package/dist/gateway/sdk/rounds.d.ts.map +1 -0
  265. package/dist/gateway/sdk/rounds.js +142 -0
  266. package/dist/gateway/sdk/rounds.js.map +1 -0
  267. package/dist/gateway/sdk/routes.d.ts +18 -0
  268. package/dist/gateway/sdk/routes.d.ts.map +1 -0
  269. package/dist/gateway/sdk/routes.js +74 -0
  270. package/dist/gateway/sdk/routes.js.map +1 -0
  271. package/dist/gateway/sdk/scans.d.ts +4 -0
  272. package/dist/gateway/sdk/scans.d.ts.map +1 -0
  273. package/dist/gateway/sdk/scans.js +72 -0
  274. package/dist/gateway/sdk/scans.js.map +1 -0
  275. package/dist/gateway/sdk/transport.d.ts +77 -0
  276. package/dist/gateway/sdk/transport.d.ts.map +1 -0
  277. package/dist/gateway/sdk/transport.js +81 -0
  278. package/dist/gateway/sdk/transport.js.map +1 -0
  279. package/dist/gateway/sdk/users.d.ts +15 -0
  280. package/dist/gateway/sdk/users.d.ts.map +1 -0
  281. package/dist/gateway/sdk/users.js +49 -0
  282. package/dist/gateway/sdk/users.js.map +1 -0
  283. package/dist/gateway/types/access.d.ts +32 -0
  284. package/dist/gateway/types/access.d.ts.map +1 -0
  285. package/dist/gateway/types/access.js +2 -0
  286. package/dist/gateway/types/access.js.map +1 -0
  287. package/dist/gateway/types/billing.d.ts +60 -0
  288. package/dist/gateway/types/billing.d.ts.map +1 -0
  289. package/dist/gateway/types/billing.js +2 -0
  290. package/dist/gateway/types/billing.js.map +1 -0
  291. package/dist/gateway/types/checkpoints.d.ts +84 -0
  292. package/dist/gateway/types/checkpoints.d.ts.map +1 -0
  293. package/dist/gateway/types/checkpoints.js +2 -0
  294. package/dist/gateway/types/checkpoints.js.map +1 -0
  295. package/dist/gateway/types/common.d.ts +13 -0
  296. package/dist/gateway/types/common.d.ts.map +1 -0
  297. package/dist/gateway/types/common.js +2 -0
  298. package/dist/gateway/types/common.js.map +1 -0
  299. package/dist/gateway/types/incidents.d.ts +53 -0
  300. package/dist/gateway/types/incidents.d.ts.map +1 -0
  301. package/dist/gateway/types/incidents.js +2 -0
  302. package/dist/gateway/types/incidents.js.map +1 -0
  303. package/dist/gateway/types/index.d.ts +12 -0
  304. package/dist/gateway/types/index.d.ts.map +1 -0
  305. package/dist/gateway/types/index.js +12 -0
  306. package/dist/gateway/types/index.js.map +1 -0
  307. package/dist/gateway/types/locations.d.ts +7 -0
  308. package/dist/gateway/types/locations.d.ts.map +1 -0
  309. package/dist/gateway/types/locations.js +2 -0
  310. package/dist/gateway/types/locations.js.map +1 -0
  311. package/dist/gateway/types/patrollers.d.ts +68 -0
  312. package/dist/gateway/types/patrollers.d.ts.map +1 -0
  313. package/dist/gateway/types/patrollers.js +15 -0
  314. package/dist/gateway/types/patrollers.js.map +1 -0
  315. package/dist/gateway/types/rounds.d.ts +89 -0
  316. package/dist/gateway/types/rounds.d.ts.map +1 -0
  317. package/dist/gateway/types/rounds.js +2 -0
  318. package/dist/gateway/types/rounds.js.map +1 -0
  319. package/dist/gateway/types/routes.d.ts +48 -0
  320. package/dist/gateway/types/routes.d.ts.map +1 -0
  321. package/dist/gateway/types/routes.js +2 -0
  322. package/dist/gateway/types/routes.js.map +1 -0
  323. package/dist/gateway/types/scans.d.ts +44 -0
  324. package/dist/gateway/types/scans.d.ts.map +1 -0
  325. package/dist/gateway/types/scans.js +2 -0
  326. package/dist/gateway/types/scans.js.map +1 -0
  327. package/dist/gateway/types/users.d.ts +32 -0
  328. package/dist/gateway/types/users.d.ts.map +1 -0
  329. package/dist/gateway/types/users.js +2 -0
  330. package/dist/gateway/types/users.js.map +1 -0
  331. package/dist/index.d.ts +32 -0
  332. package/dist/index.d.ts.map +1 -0
  333. package/dist/index.js +40 -0
  334. package/dist/index.js.map +1 -0
  335. package/dist/ports/FileSink.d.ts +20 -0
  336. package/dist/ports/FileSink.d.ts.map +1 -0
  337. package/dist/ports/FileSink.js +2 -0
  338. package/dist/ports/FileSink.js.map +1 -0
  339. package/dist/ports/Logger.d.ts +16 -0
  340. package/dist/ports/Logger.d.ts.map +1 -0
  341. package/dist/ports/Logger.js +7 -0
  342. package/dist/ports/Logger.js.map +1 -0
  343. package/dist/ports/PendingActionStore.d.ts +84 -0
  344. package/dist/ports/PendingActionStore.d.ts.map +1 -0
  345. package/dist/ports/PendingActionStore.js +16 -0
  346. package/dist/ports/PendingActionStore.js.map +1 -0
  347. package/dist/reads/access.d.ts +4 -0
  348. package/dist/reads/access.d.ts.map +1 -0
  349. package/dist/reads/access.js +129 -0
  350. package/dist/reads/access.js.map +1 -0
  351. package/dist/reads/checkpoints.d.ts +4 -0
  352. package/dist/reads/checkpoints.d.ts.map +1 -0
  353. package/dist/reads/checkpoints.js +152 -0
  354. package/dist/reads/checkpoints.js.map +1 -0
  355. package/dist/reads/files.d.ts +9 -0
  356. package/dist/reads/files.d.ts.map +1 -0
  357. package/dist/reads/files.js +222 -0
  358. package/dist/reads/files.js.map +1 -0
  359. package/dist/reads/incidents.d.ts +4 -0
  360. package/dist/reads/incidents.d.ts.map +1 -0
  361. package/dist/reads/incidents.js +159 -0
  362. package/dist/reads/incidents.js.map +1 -0
  363. package/dist/reads/index.d.ts +11 -0
  364. package/dist/reads/index.d.ts.map +1 -0
  365. package/dist/reads/index.js +51 -0
  366. package/dist/reads/index.js.map +1 -0
  367. package/dist/reads/onboarding.d.ts +4 -0
  368. package/dist/reads/onboarding.d.ts.map +1 -0
  369. package/dist/reads/onboarding.js +41 -0
  370. package/dist/reads/onboarding.js.map +1 -0
  371. package/dist/reads/organization.d.ts +26 -0
  372. package/dist/reads/organization.d.ts.map +1 -0
  373. package/dist/reads/organization.js +45 -0
  374. package/dist/reads/organization.js.map +1 -0
  375. package/dist/reads/patrollers.d.ts +11 -0
  376. package/dist/reads/patrollers.d.ts.map +1 -0
  377. package/dist/reads/patrollers.js +172 -0
  378. package/dist/reads/patrollers.js.map +1 -0
  379. package/dist/reads/plan.d.ts +4 -0
  380. package/dist/reads/plan.d.ts.map +1 -0
  381. package/dist/reads/plan.js +195 -0
  382. package/dist/reads/plan.js.map +1 -0
  383. package/dist/reads/rounds.d.ts +4 -0
  384. package/dist/reads/rounds.d.ts.map +1 -0
  385. package/dist/reads/rounds.js +160 -0
  386. package/dist/reads/rounds.js.map +1 -0
  387. package/dist/reads/routes.d.ts +4 -0
  388. package/dist/reads/routes.d.ts.map +1 -0
  389. package/dist/reads/routes.js +34 -0
  390. package/dist/reads/routes.js.map +1 -0
  391. package/dist/reads/support/access-locations.d.ts +22 -0
  392. package/dist/reads/support/access-locations.d.ts.map +1 -0
  393. package/dist/reads/support/access-locations.js +55 -0
  394. package/dist/reads/support/access-locations.js.map +1 -0
  395. package/dist/reads/support/excel.d.ts +10 -0
  396. package/dist/reads/support/excel.d.ts.map +1 -0
  397. package/dist/reads/support/excel.js +35 -0
  398. package/dist/reads/support/excel.js.map +1 -0
  399. package/dist/reads/support/params.d.ts +50 -0
  400. package/dist/reads/support/params.d.ts.map +1 -0
  401. package/dist/reads/support/params.js +73 -0
  402. package/dist/reads/support/params.js.map +1 -0
  403. package/dist/reads/support/resolve.d.ts +17 -0
  404. package/dist/reads/support/resolve.d.ts.map +1 -0
  405. package/dist/reads/support/resolve.js +33 -0
  406. package/dist/reads/support/resolve.js.map +1 -0
  407. package/dist/reads/support/results.d.ts +22 -0
  408. package/dist/reads/support/results.d.ts.map +1 -0
  409. package/dist/reads/support/results.js +41 -0
  410. package/dist/reads/support/results.js.map +1 -0
  411. package/dist/reads/support/roles.d.ts +13 -0
  412. package/dist/reads/support/roles.d.ts.map +1 -0
  413. package/dist/reads/support/roles.js +27 -0
  414. package/dist/reads/support/roles.js.map +1 -0
  415. package/dist/reads/support/scans.d.ts +31 -0
  416. package/dist/reads/support/scans.d.ts.map +1 -0
  417. package/dist/reads/support/scans.js +66 -0
  418. package/dist/reads/support/scans.js.map +1 -0
  419. package/dist/reads/types.d.ts +48 -0
  420. package/dist/reads/types.d.ts.map +1 -0
  421. package/dist/reads/types.js +5 -0
  422. package/dist/reads/types.js.map +1 -0
  423. package/dist/reads/users.d.ts +4 -0
  424. package/dist/reads/users.d.ts.map +1 -0
  425. package/dist/reads/users.js +57 -0
  426. package/dist/reads/users.js.map +1 -0
  427. package/dist/testing/FakePatrolTechGateway.d.ts +212 -0
  428. package/dist/testing/FakePatrolTechGateway.d.ts.map +1 -0
  429. package/dist/testing/FakePatrolTechGateway.js +712 -0
  430. package/dist/testing/FakePatrolTechGateway.js.map +1 -0
  431. package/dist/testing/RecordingFileSink.d.ts +12 -0
  432. package/dist/testing/RecordingFileSink.d.ts.map +1 -0
  433. package/dist/testing/RecordingFileSink.js +12 -0
  434. package/dist/testing/RecordingFileSink.js.map +1 -0
  435. package/dist/testing/index.d.ts +4 -0
  436. package/dist/testing/index.d.ts.map +1 -0
  437. package/dist/testing/index.js +4 -0
  438. package/dist/testing/index.js.map +1 -0
  439. package/dist/testing/reads.d.ts +34 -0
  440. package/dist/testing/reads.d.ts.map +1 -0
  441. package/dist/testing/reads.js +39 -0
  442. package/dist/testing/reads.js.map +1 -0
  443. package/package.json +76 -4
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Resuelve la zona horaria del cliente y convierte horas locales ⇄ UTC sin
3
+ * librerías externas, apoyándose en `Intl.DateTimeFormat` (disponible en Node).
4
+ */
5
+ export declare const DEFAULT_TIMEZONE = "Europe/Madrid";
6
+ /**
7
+ * Calendario local (año, mes, día, hora, minuto, segundo) de un instante en `tz`.
8
+ * Es la pieza con la que se calculan los límites de día en la zona del cliente
9
+ * (ver `date-range.ts`), en vez de en la hora del servidor.
10
+ */
11
+ export declare function zonedParts(instant: Date, tz: string): {
12
+ y: number;
13
+ m: number;
14
+ d: number;
15
+ h: number;
16
+ mi: number;
17
+ s: number;
18
+ };
19
+ /**
20
+ * Desfase de `tz` respecto a UTC en `at`, en minutos (Madrid en verano: +120;
21
+ * Bogotá: -300). Con el de HOY se convierten los horarios de las rutas, igual
22
+ * que el panel; el backend los reproyecta al cambiar la hora con la zona que
23
+ * viaja junto a ellos.
24
+ */
25
+ export declare function utcOffsetMinutes(tz: string, at?: Date): number;
26
+ /**
27
+ * Convierte una hora LOCAL sin zona ("YYYY-MM-DDTHH:mm", la hora del cliente)
28
+ * al instante UTC correspondiente en `tz`.
29
+ *
30
+ * Sin librería de zonas horarias, se calcula el offset con
31
+ * `Intl.DateTimeFormat` en dos pasadas: (1) se asume el instante en UTC y se
32
+ * mira qué hora local cae en `tz`; (2) la diferencia con la hora pedida corrige
33
+ * el instante. Dos pasadas bastan salvo pegado a una transición de DST, así
34
+ * que se repite hasta que no queda diferencia (máx. 3 iteraciones).
35
+ *
36
+ * `exact` distingue "convergió" de "no existe esa hora local" (el salto de
37
+ * primavera: en Madrid las 02:30 del cambio no existen y se resuelven a 01:30
38
+ * local). Quien programa algo a esa hora debe poder avisarlo (M4).
39
+ */
40
+ export declare function localToUtcResolved(localIso: string, tz: string): {
41
+ date: Date;
42
+ exact: boolean;
43
+ };
44
+ /** Igual que `localToUtcResolved`, quedándose solo con el instante. */
45
+ export declare function localToUtc(localIso: string, tz: string): Date;
46
+ /**
47
+ * Fecha y hora local actual del cliente en `tz` ("miércoles, 16 de septiembre
48
+ * de 2026, 16:30").
49
+ *
50
+ * Devuelve la fecha COMPLETA a propósito: con solo "hh:mm" el modelo calculaba
51
+ * "mañana" sobre el calendario de Madrid y programaba citas y recordatorios un
52
+ * día tarde para los clientes de América.
53
+ */
54
+ export declare function localNow(tz: string, now?: Date): string;
55
+ /**
56
+ * Un instante como hora LOCAL de `tz` con su desfase, en ISO 8601
57
+ * («2026-10-26T18:45:00+01:00»): para los canales que dan horas a un modelo,
58
+ * que pasa mal UTC a hora local alrededor del cambio de hora.
59
+ */
60
+ export declare function localIsoWithOffset(instant: Date, tz: string): string;
61
+ //# sourceMappingURL=timezone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../src/domain/timezone.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,IAAI,EACb,EAAE,EAAE,MAAM,GACT;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBvE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,GAAE,IAAiB,GAAG,MAAM,CAI1E;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CA0B/F;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAOnE;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CASpE"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Resuelve la zona horaria del cliente y convierte horas locales ⇄ UTC sin
3
+ * librerías externas, apoyándose en `Intl.DateTimeFormat` (disponible en Node).
4
+ */
5
+ export const DEFAULT_TIMEZONE = 'Europe/Madrid';
6
+ /**
7
+ * Calendario local (año, mes, día, hora, minuto, segundo) de un instante en `tz`.
8
+ * Es la pieza con la que se calculan los límites de día en la zona del cliente
9
+ * (ver `date-range.ts`), en vez de en la hora del servidor.
10
+ */
11
+ export function zonedParts(instant, tz) {
12
+ const fmt = new Intl.DateTimeFormat('en-US', {
13
+ timeZone: tz,
14
+ hourCycle: 'h23',
15
+ year: 'numeric',
16
+ month: '2-digit',
17
+ day: '2-digit',
18
+ hour: '2-digit',
19
+ minute: '2-digit',
20
+ second: '2-digit',
21
+ });
22
+ const parts = fmt.formatToParts(instant);
23
+ const get = (type) => Number(parts.find((p) => p.type === type)?.value ?? NaN);
24
+ return {
25
+ y: get('year'),
26
+ m: get('month'),
27
+ d: get('day'),
28
+ h: get('hour'),
29
+ mi: get('minute'),
30
+ s: get('second'),
31
+ };
32
+ }
33
+ /**
34
+ * Desfase de `tz` respecto a UTC en `at`, en minutos (Madrid en verano: +120;
35
+ * Bogotá: -300). Con el de HOY se convierten los horarios de las rutas, igual
36
+ * que el panel; el backend los reproyecta al cambiar la hora con la zona que
37
+ * viaja junto a ellos.
38
+ */
39
+ export function utcOffsetMinutes(tz, at = new Date()) {
40
+ const p = zonedParts(at, tz);
41
+ const localAsUtc = Date.UTC(p.y, p.m - 1, p.d, p.h, p.mi, p.s);
42
+ return Math.round((localAsUtc - Math.floor(at.getTime() / 1000) * 1000) / 60_000);
43
+ }
44
+ const LOCAL_ISO_RE = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/;
45
+ /**
46
+ * Convierte una hora LOCAL sin zona ("YYYY-MM-DDTHH:mm", la hora del cliente)
47
+ * al instante UTC correspondiente en `tz`.
48
+ *
49
+ * Sin librería de zonas horarias, se calcula el offset con
50
+ * `Intl.DateTimeFormat` en dos pasadas: (1) se asume el instante en UTC y se
51
+ * mira qué hora local cae en `tz`; (2) la diferencia con la hora pedida corrige
52
+ * el instante. Dos pasadas bastan salvo pegado a una transición de DST, así
53
+ * que se repite hasta que no queda diferencia (máx. 3 iteraciones).
54
+ *
55
+ * `exact` distingue "convergió" de "no existe esa hora local" (el salto de
56
+ * primavera: en Madrid las 02:30 del cambio no existen y se resuelven a 01:30
57
+ * local). Quien programa algo a esa hora debe poder avisarlo (M4).
58
+ */
59
+ export function localToUtcResolved(localIso, tz) {
60
+ const m = LOCAL_ISO_RE.exec(localIso);
61
+ if (!m)
62
+ return { date: new Date(NaN), exact: false };
63
+ const [, yStr, moStr, dStr, hStr, miStr] = m;
64
+ const targetUtcMs = Date.UTC(Number(yStr), Number(moStr) - 1, Number(dStr), Number(hStr), Number(miStr), 0);
65
+ let guess = targetUtcMs;
66
+ let exact = false;
67
+ for (let i = 0; i < 3; i++) {
68
+ const p = zonedParts(new Date(guess), tz);
69
+ const gotUtcMs = Date.UTC(p.y, p.m - 1, p.d, p.h, p.mi, p.s);
70
+ const diff = targetUtcMs - gotUtcMs;
71
+ if (diff === 0) {
72
+ exact = true;
73
+ break;
74
+ }
75
+ guess += diff;
76
+ }
77
+ return { date: new Date(guess), exact };
78
+ }
79
+ /** Igual que `localToUtcResolved`, quedándose solo con el instante. */
80
+ export function localToUtc(localIso, tz) {
81
+ return localToUtcResolved(localIso, tz).date;
82
+ }
83
+ /**
84
+ * Fecha y hora local actual del cliente en `tz` ("miércoles, 16 de septiembre
85
+ * de 2026, 16:30").
86
+ *
87
+ * Devuelve la fecha COMPLETA a propósito: con solo "hh:mm" el modelo calculaba
88
+ * "mañana" sobre el calendario de Madrid y programaba citas y recordatorios un
89
+ * día tarde para los clientes de América.
90
+ */
91
+ export function localNow(tz, now = new Date()) {
92
+ return new Intl.DateTimeFormat('es-ES', {
93
+ timeZone: tz,
94
+ dateStyle: 'full',
95
+ timeStyle: 'short',
96
+ hourCycle: 'h23',
97
+ }).format(now);
98
+ }
99
+ const pad2 = (n) => String(n).padStart(2, '0');
100
+ /**
101
+ * Un instante como hora LOCAL de `tz` con su desfase, en ISO 8601
102
+ * («2026-10-26T18:45:00+01:00»): para los canales que dan horas a un modelo,
103
+ * que pasa mal UTC a hora local alrededor del cambio de hora.
104
+ */
105
+ export function localIsoWithOffset(instant, tz) {
106
+ const p = zonedParts(instant, tz);
107
+ const offset = utcOffsetMinutes(tz, instant);
108
+ const abs = Math.abs(offset);
109
+ const sign = offset < 0 ? '-' : '+';
110
+ return (`${String(p.y)}-${pad2(p.m)}-${pad2(p.d)}T${pad2(p.h)}:${pad2(p.mi)}:${pad2(p.s)}` +
111
+ `${sign}${pad2(Math.floor(abs / 60))}:${pad2(abs % 60)}`);
112
+ }
113
+ //# sourceMappingURL=timezone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone.js","sourceRoot":"","sources":["../../src/domain/timezone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type Logger } from '../ports/Logger.js';
2
+ import { type TranslateErrorOptions } from './backend-errors.js';
3
+ import type { FixedTextLanguage } from './language.js';
4
+ /**
5
+ * Contrato único de retorno de las tools del LLM.
6
+ *
7
+ * Todas las tools devuelven esta forma: el modelo no tiene que adivinar si
8
+ * `{found:false}`, `{error}` o un array vacío significan "no hay datos", "no se
9
+ * entendió la pregunta" o "el backend falló". Además, `truncado` le avisa de que
10
+ * los datos están capados (no puede afirmar totales ni ausencias) y `avisos`
11
+ * lleva el detalle en lenguaje natural.
12
+ */
13
+ export type ToolResult<T> = {
14
+ ok: true;
15
+ data: T;
16
+ truncado?: boolean;
17
+ avisos?: string[];
18
+ } | {
19
+ ok: false;
20
+ error: string;
21
+ opciones?: string[];
22
+ };
23
+ /** Resultado correcto. `truncado`/`avisos` solo viajan si aportan algo. */
24
+ export declare function ok<T>(data: T, extra?: {
25
+ truncado?: boolean;
26
+ avisos?: string[];
27
+ }): ToolResult<T>;
28
+ /** Resultado fallido. `opciones` es la lista para desambiguar, cuando la hay. */
29
+ export declare function fail(error: string, opciones?: string[]): ToolResult<never>;
30
+ /**
31
+ * Opciones de `safeExecute`: el `logger` donde se registra el fallo (por defecto,
32
+ * uno nulo), el idioma del cliente en el que se explica (por defecto, español) y
33
+ * la política de textos (`urls`, `upsell`, `operation`).
34
+ */
35
+ export interface SafeExecuteOptions extends TranslateErrorOptions {
36
+ logger?: Logger;
37
+ language?: FixedTextLanguage;
38
+ }
39
+ /**
40
+ * Ejecuta el cuerpo de una tool capturando cualquier error.
41
+ *
42
+ * Un throw dentro de la herramienta (con `ai` v6, dentro de `execute`) aborta el
43
+ * turno entero: el cliente recibe el fallback y se abre un escalado espurio. Aquí el
44
+ * error se convierte en `{ok:false,error}`, que el modelo sí puede leer y
45
+ * contarle al usuario (o reintentar con otros parámetros).
46
+ *
47
+ * Al modelo nunca le llega `err.message` (rutas, ids, textos internos): un
48
+ * rechazo del backend (`PatrolTechApiError`) va traducido con
49
+ * `translateBackendError` en el idioma del cliente (sesión caducada, permiso,
50
+ * límite, suspensión, 404…) y cualquier otro fallo (red, timeout, error de
51
+ * programación) con el texto genérico de «el panel no responde». El detalle
52
+ * queda en el `logger`.
53
+ */
54
+ export declare function safeExecute<T>(nombre: string, fn: () => Promise<ToolResult<T>>, { logger, language, ...policy }?: SafeExecuteOptions): Promise<ToolResult<T>>;
55
+ //# sourceMappingURL=tool-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.d.ts","sourceRoot":"","sources":["../../src/domain/tool-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEtD,2EAA2E;AAC3E,wBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAQ/F;AAED,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAE1E;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAChC,EAAE,MAAmB,EAAE,QAAe,EAAE,GAAG,MAAM,EAAE,GAAE,kBAAuB,GAC3E,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAaxB"}
@@ -0,0 +1,47 @@
1
+ import { noopLogger } from '../ports/Logger.js';
2
+ import { PatrolTechApiError, translateBackendError, } from './backend-errors.js';
3
+ /** Resultado correcto. `truncado`/`avisos` solo viajan si aportan algo. */
4
+ export function ok(data, extra) {
5
+ const avisos = extra?.avisos?.filter((a) => a.length > 0) ?? [];
6
+ return {
7
+ ok: true,
8
+ data,
9
+ ...(extra?.truncado ? { truncado: true } : {}),
10
+ ...(avisos.length > 0 ? { avisos } : {}),
11
+ };
12
+ }
13
+ /** Resultado fallido. `opciones` es la lista para desambiguar, cuando la hay. */
14
+ export function fail(error, opciones) {
15
+ return { ok: false, error, ...(opciones && opciones.length > 0 ? { opciones } : {}) };
16
+ }
17
+ /**
18
+ * Ejecuta el cuerpo de una tool capturando cualquier error.
19
+ *
20
+ * Un throw dentro de la herramienta (con `ai` v6, dentro de `execute`) aborta el
21
+ * turno entero: el cliente recibe el fallback y se abre un escalado espurio. Aquí el
22
+ * error se convierte en `{ok:false,error}`, que el modelo sí puede leer y
23
+ * contarle al usuario (o reintentar con otros parámetros).
24
+ *
25
+ * Al modelo nunca le llega `err.message` (rutas, ids, textos internos): un
26
+ * rechazo del backend (`PatrolTechApiError`) va traducido con
27
+ * `translateBackendError` en el idioma del cliente (sesión caducada, permiso,
28
+ * límite, suspensión, 404…) y cualquier otro fallo (red, timeout, error de
29
+ * programación) con el texto genérico de «el panel no responde». El detalle
30
+ * queda en el `logger`.
31
+ */
32
+ export async function safeExecute(nombre, fn, { logger = noopLogger, language = 'es', ...policy } = {}) {
33
+ try {
34
+ return await fn();
35
+ }
36
+ catch (err) {
37
+ const failure = translateBackendError(err, language, policy);
38
+ logger.error('tool.execute_failed', {
39
+ tool: nombre,
40
+ kind: failure.kind,
41
+ ...(err instanceof PatrolTechApiError ? { status: err.status, path: err.path } : {}),
42
+ err,
43
+ });
44
+ return fail(failure.mensajeCliente);
45
+ }
46
+ }
47
+ //# sourceMappingURL=tool-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.js","sourceRoot":"","sources":["../../src/domain/tool-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAgB7B,2EAA2E;AAC3E,MAAM,UAAU,EAAE,CAAI,IAAO,EAAE,KAAiD;IAC9E,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI;QACJ,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,QAAmB;IACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACxF,CAAC;AAYD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,EAAgC,EAChC,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,MAAM,KAAyB,EAAE;IAE5E,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;YAClC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,CAAC,GAAG,YAAY,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Los enlaces de PatrolTech que aparecen en los textos al cliente y en los
3
+ * enlaces que se generan. Los inyecta el consumidor UNA vez (dependencias del
4
+ * catálogo); por defecto, los de producción.
5
+ */
6
+ export interface PatrolTechUrls {
7
+ /** App de vigilantes: base de `/<orgId>` y `/<orgId>/<identifier>`. */
8
+ app: string;
9
+ /** Panel de clientes: políticas, cobros extra, acceso de usuarios invitados. */
10
+ dashboard: string;
11
+ /** Página Licencia del panel: planes, vuelta desde Stripe y del portal de suscripción. */
12
+ license: string;
13
+ }
14
+ /** Los de producción. */
15
+ export declare const DEFAULT_URLS: Readonly<PatrolTechUrls>;
16
+ /**
17
+ * Completa los enlaces que no da el consumidor con los de producción. Sin
18
+ * `license`, es la página Licencia de SU panel (`<dashboard>/license`): así un
19
+ * panel de staging no deriva a la Licencia de producción.
20
+ */
21
+ export declare function resolveUrls(urls?: Partial<PatrolTechUrls>): PatrolTechUrls;
22
+ /**
23
+ * Política de textos al cliente que comparten lecturas, acciones y errores:
24
+ * - `urls`: los enlaces que se citan;
25
+ * - `upsell`: true (por defecto, el bot) = los límites se explican con el plan y
26
+ * cómo ampliarlo en Licencia; false (MCP) = solo los números, sin nombres de
27
+ * plan, sin «mejorar el plan» y sin enlaces a Licencia.
28
+ */
29
+ export interface TextPolicyOptions {
30
+ urls?: Partial<PatrolTechUrls>;
31
+ upsell?: boolean;
32
+ }
33
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/domain/urls.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yBAAyB;AACzB,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,cAAc,CAIhD,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAO9E;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,20 @@
1
+ /** Los de producción. */
2
+ export const DEFAULT_URLS = Object.freeze({
3
+ app: 'https://app.patroltech.online',
4
+ dashboard: 'https://dashboard.patroltech.online',
5
+ license: 'https://dashboard.patroltech.online/license',
6
+ });
7
+ /**
8
+ * Completa los enlaces que no da el consumidor con los de producción. Sin
9
+ * `license`, es la página Licencia de SU panel (`<dashboard>/license`): así un
10
+ * panel de staging no deriva a la Licencia de producción.
11
+ */
12
+ export function resolveUrls(urls = {}) {
13
+ const dashboard = urls.dashboard ?? DEFAULT_URLS.dashboard;
14
+ return {
15
+ app: urls.app ?? DEFAULT_URLS.app,
16
+ dashboard,
17
+ license: urls.license ?? `${dashboard}/license`,
18
+ };
19
+ }
20
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/domain/urls.ts"],"names":[],"mappings":"AAcA,yBAAyB;AACzB,MAAM,CAAC,MAAM,YAAY,GAA6B,MAAM,CAAC,MAAM,CAAC;IAClE,GAAG,EAAE,+BAA+B;IACpC,SAAS,EAAE,qCAAqC;IAChD,OAAO,EAAE,6CAA6C;CACvD,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgC,EAAE;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC;IAC3D,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG;QACjC,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,SAAS,UAAU;KAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,195 @@
1
+ import type { IncidentStatus } from '../domain/incident-status.js';
2
+ import type { ListaTruncable, RoundsStatus, SupportSummary, RoundRef, RoundDetail, RouteRoundsSummary, RoundCheckpointsResult, CheckpointRefsResult, CheckpointFraudRules, CheckpointDetail, CheckpointsResult, CheckpointMethod, CreatedCheckpoint, ArchivedCheckpointRoute, RouteRef, RouteDetails, NewTimeWindow, NewRoute, PatrollerActivity, PatrollerRef, PatrollerStatsResult, PatrollerRanking, CreatedPatroller, AlertType, AlertChannel, IncidentRef, IncidentTarget, IncidentDetail, OrgUser, NewOrgUser, InviteResult, LocationRef, PlanUsage, PaidPlan, CheckoutLinkInput, AccessLogQuery, AccessLogEntry, RecentScan, ScanQuery } from './types/index.js';
3
+ /**
4
+ * Puerto de lectura/escritura contra la API de PatrolTech. Lo implementa cada
5
+ * consumidor (cliente HTTP del bot, SDK en el servidor MCP) y lo sustituye
6
+ * `FakePatrolTechGateway` en los tests. El `token` va por llamada: el puerto no
7
+ * guarda credenciales.
8
+ */
9
+ export interface PatrolTechGateway {
10
+ getRoundsStatus(accountId: string, token: string): Promise<RoundsStatus>;
11
+ getPatrollerActivity(accountId: string, token: string): Promise<ListaTruncable<PatrollerActivity>>;
12
+ getSupportSummary(accountId: string, token: string, windowDays?: number): Promise<SupportSummary>;
13
+ getRecentScans(accountId: string, token: string, opts?: ScanQuery): Promise<ListaTruncable<RecentScan>>;
14
+ getRoundsDetail(accountId: string, token: string): Promise<ListaTruncable<RouteRoundsSummary>>;
15
+ getPatrollerStats(accountId: string, token: string, patrollerName: string): Promise<PatrollerStatsResult>;
16
+ getRoundCheckpoints(accountId: string, token: string, routeName?: string): Promise<RoundCheckpointsResult>;
17
+ getCheckpoints(accountId: string, token: string): Promise<CheckpointsResult>;
18
+ getPatrollerRanking(accountId: string, token: string, opts?: {
19
+ dateFrom?: string;
20
+ dateTo?: string;
21
+ }): Promise<PatrollerRanking>;
22
+ listLocations(accountId: string, token: string): Promise<LocationRef[]>;
23
+ listPatrollers(accountId: string, token: string): Promise<ListaTruncable<PatrollerRef>>;
24
+ listRoutes(accountId: string, token: string): Promise<ListaTruncable<RouteRef>>;
25
+ listCheckpoints(accountId: string, token: string): Promise<CheckpointRefsResult>;
26
+ /** Una página de rondas de la ruta, de la más reciente a la más antigua. */
27
+ getRouteRounds(routeId: string, token: string, page: {
28
+ page: number;
29
+ limit: number;
30
+ }): Promise<{
31
+ items: RoundRef[];
32
+ totalPages: number;
33
+ }>;
34
+ getRoundDetail(routeId: string, roundId: string, token: string): Promise<RoundDetail>;
35
+ getPlanUsage(accountId: string, token: string): Promise<PlanUsage>;
36
+ /**
37
+ * Planes de pago (Pro, Business) con sus precios en la moneda que decide el backend.
38
+ * El catálogo es público: sin organización ni token (un prospecto) también responde;
39
+ * con organización, en SU moneda. `country` (ISO-2) manda sobre la IP de quien llama.
40
+ */
41
+ getPlans(accountId: string | null, token: string | null, country?: string | null): Promise<PaidPlan[]>;
42
+ /**
43
+ * URL del checkout de Stripe para contratar un plan. SOLO para una
44
+ * organización que aún no paga: el checkout crea una suscripción nueva (el
45
+ * backend rechaza a quien ya paga). Generarla no cobra nada. Solo ADMIN de la organización.
46
+ */
47
+ createCheckoutLink(accountId: string, input: CheckoutLinkInput, token: string): Promise<string>;
48
+ /** URL del portal de Stripe de quien ya paga (facturas, tarjeta, cancelar). Solo ADMIN de la organización. */
49
+ createCustomerPortalLink(accountId: string, returnUrl: string, token: string): Promise<string>;
50
+ /** null si no existe (404). */
51
+ getRouteDetails(routeId: string, token: string): Promise<RouteDetails | null>;
52
+ /** `POST /api/checkpoints` con el código vacío (lo genera el servidor). Nunca con `confirmExtraBilling`. */
53
+ createCheckpoint(input: {
54
+ name: string;
55
+ locationId: string;
56
+ metodo: CheckpointMethod;
57
+ }, token: string): Promise<CreatedCheckpoint>;
58
+ /** Checkpoints de la ubicación cuyo nombre contiene `name` (`search` del backend), para recuperar un alta dudosa. */
59
+ findCheckpointsByName(locationId: string, name: string, token: string): Promise<CreatedCheckpoint[]>;
60
+ /** `POST /api/patrollers` con el `identifier` que genera el bot. */
61
+ createPatroller(input: {
62
+ organizationId: string;
63
+ name: string;
64
+ identifier: string;
65
+ phone?: string;
66
+ }, token: string): Promise<CreatedPatroller>;
67
+ /** null si no existe (404). */
68
+ getPatrollerByIdentifier(identifier: string, token: string): Promise<CreatedPatroller | null>;
69
+ /**
70
+ * `PATCH /api/auth/user/preferences` con SOLO ese tipo y canal: el backend
71
+ * fusiona `channels` con lo que ya tenía el usuario (no borra los demás).
72
+ */
73
+ setAlertPreference(input: {
74
+ tipo: AlertType;
75
+ canal: AlertChannel;
76
+ activar: boolean;
77
+ }, token: string): Promise<void>;
78
+ /** `POST /api/routes/complete`: la ruta con sus checkpoints y horarios en una sola operación (400 si dos horarios se solapan). */
79
+ createRoute(input: NewRoute, token: string): Promise<{
80
+ id: string;
81
+ name: string;
82
+ }>;
83
+ /** `POST /api/routes/:routeId/timewindows` (400 si se solapa con otro de la ruta). */
84
+ addRouteTimeWindow(routeId: string, window: NewTimeWindow, token: string): Promise<void>;
85
+ /** `DELETE /api/routes/timewindows/:id`. */
86
+ deleteRouteTimeWindow(timeWindowId: string, token: string): Promise<void>;
87
+ /** `PATCH /api/routes/:id/active`. */
88
+ setRouteActive(routeId: string, isActive: boolean, token: string): Promise<void>;
89
+ /** `POST /api/routes/:routeId/checkpoints/:checkpointId` con su posición (1 = el primero). */
90
+ addCheckpointToRoute(routeId: string, checkpointId: string, order: number, token: string): Promise<void>;
91
+ /** `DELETE /api/routes/:routeId/checkpoints/:checkpointId`. */
92
+ removeCheckpointFromRoute(routeId: string, checkpointId: string, token: string): Promise<void>;
93
+ /**
94
+ * Incidencias de la organización, de la más reciente a la más antigua. Lanza
95
+ * 403 «Feature 'incident-reporting' is not enabled» si la App está apagada
96
+ * (ver `isFeatureDisabled`).
97
+ */
98
+ listIncidents(accountId: string, token: string, opts?: {
99
+ estado?: IncidentStatus;
100
+ }): Promise<ListaTruncable<IncidentRef>>;
101
+ /** `PATCH …/incidents/:id/status`; `comentario` obligatorio para RESOLVED y DISCARDED. */
102
+ updateIncidentStatus(input: IncidentTarget & {
103
+ estado: IncidentStatus;
104
+ comentario?: string;
105
+ }, token: string): Promise<void>;
106
+ /** `PATCH …/incidents/:id/assign`. */
107
+ assignIncident(input: IncidentTarget & {
108
+ userId: string;
109
+ }, token: string): Promise<void>;
110
+ /** `POST …/incidents/:id/comments`. */
111
+ commentIncident(input: IncidentTarget & {
112
+ comentario: string;
113
+ }, token: string): Promise<void>;
114
+ /** `GET /api/organizations/users` (solo ADMIN de la organización: 403 al resto). */
115
+ listOrgUsers(accountId: string, token: string): Promise<OrgUser[]>;
116
+ /** `PUT /api/patrollers/:id` solo con los campos que cambian. */
117
+ updatePatroller(input: {
118
+ id: string;
119
+ name?: string;
120
+ phone?: string;
121
+ }, token: string): Promise<CreatedPatroller>;
122
+ /** `PUT /api/checkpoints/:id` solo con nombre y descripción: nunca el código ni el método. */
123
+ updateCheckpoint(input: {
124
+ id: string;
125
+ name?: string;
126
+ description?: string;
127
+ }, token: string): Promise<void>;
128
+ /**
129
+ * `POST /api/checkpoints/:id/archive`. Devuelve las rutas de las que se ha
130
+ * quitado (`affectedRoutes`), o null si el backend no las manda.
131
+ */
132
+ archiveCheckpoint(id: string, token: string): Promise<ArchivedCheckpointRoute[] | null>;
133
+ /** `POST /api/checkpoints/:id/unarchive`, sin `confirmExtraBilling`: el backend aplica el gate del plan (402/409). */
134
+ unarchiveCheckpoint(id: string, token: string): Promise<void>;
135
+ /** Checkpoints ARCHIVADOS de todas las ubicaciones de la organización. */
136
+ listArchivedCheckpoints(accountId: string, token: string): Promise<CheckpointRefsResult>;
137
+ /**
138
+ * Posición y reglas antifraude de un checkpoint de esa ubicación. No hay `GET /api/checkpoints/:id`:
139
+ * sale de la lista de la ubicación buscando por su nombre. null si ya no está.
140
+ */
141
+ getCheckpointDetail(input: {
142
+ id: string;
143
+ locationId: string;
144
+ name: string;
145
+ }, token: string): Promise<CheckpointDetail | null>;
146
+ /** `PUT /api/checkpoints/:id` solo con `fraudRules`: el backend REEMPLAZA el objeto entero (null = sin reglas). */
147
+ updateCheckpointFraudRules(input: {
148
+ id: string;
149
+ fraudRules: CheckpointFraudRules | null;
150
+ }, token: string): Promise<void>;
151
+ /** `PUT /api/checkpoints/:id` solo con `latitude` y `longitude`. */
152
+ moveCheckpoint(input: {
153
+ id: string;
154
+ latitude: number;
155
+ longitude: number;
156
+ }, token: string): Promise<void>;
157
+ /**
158
+ * `GET …/incidents/:id` con la ubicación (o la organización) en la query, igual
159
+ * que las escrituras. null si no existe (404). Sin URLs de adjuntos: están
160
+ * firmadas y no deben llegar al modelo.
161
+ */
162
+ getIncidentDetail(target: IncidentTarget, token: string): Promise<IncidentDetail | null>;
163
+ /**
164
+ * `GET /api/features/access-control/access-logs`, del más reciente al más
165
+ * antiguo. Lanza 403 «Feature 'access-control' is not enabled» si la App está
166
+ * apagada (ver `isFeatureDisabled`).
167
+ */
168
+ listAccessLogs(query: AccessLogQuery, token: string): Promise<{
169
+ items: AccessLogEntry[];
170
+ total: number;
171
+ }>;
172
+ /** `GET …/access-logs/active`: quién ha entrado en la ubicación y aún no ha salido. */
173
+ listActiveAccessEntries(locationId: string, token: string, zona?: string): Promise<AccessLogEntry[]>;
174
+ /** `PUT /api/locations/:id` SOLO con nombre y/o dirección: el backend no filtra el body. */
175
+ updateLocation(input: {
176
+ id: string;
177
+ name?: string;
178
+ address?: string;
179
+ }, token: string): Promise<void>;
180
+ /** `DELETE /api/locations/:id`: borra la ubicación con sus checkpoints, rutas y rondas. Irreversible. */
181
+ deleteLocation(id: string, token: string): Promise<void>;
182
+ /** `POST /api/organizations/users` (solo ADMIN de la organización; 402 `USER_LIMIT_REACHED` si no quedan asientos de gestor). */
183
+ inviteUser(input: NewOrgUser, token: string): Promise<InviteResult>;
184
+ /**
185
+ * `PUT /api/user-roles/:userRoleId` solo con `roleType` (ADMIN de la organización del rol; 402
186
+ * `USER_LIMIT_REACHED` al subir un VIEWER sin asientos de gestor; 404 si ya no existe).
187
+ */
188
+ updateUserRole(input: {
189
+ userRoleId: string;
190
+ roleType: 'VIEWER' | 'EDITOR' | 'ADMIN';
191
+ }, token: string): Promise<void>;
192
+ /** `DELETE /api/user-roles/:userRoleId`: quita ese acceso (la cuenta de la persona sigue existiendo). 404 si ya no existe. */
193
+ deleteUserRole(userRoleId: string, token: string): Promise<void>;
194
+ }
195
+ //# sourceMappingURL=PatrolTechGateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatrolTechGateway.d.ts","sourceRoot":"","sources":["../../src/gateway/PatrolTechGateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PatrolTechGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatrolTechGateway.js","sourceRoot":"","sources":["../../src/gateway/PatrolTechGateway.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './PatrolTechGateway.js';
2
+ export * from './types/index.js';
3
+ export * from './sdk/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './PatrolTechGateway.js';
2
+ export * from './types/index.js';
3
+ export * from './sdk/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}