@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.
- package/LICENSE +21 -0
- package/README.md +171 -2
- package/dist/actions/alerts.d.ts +3 -0
- package/dist/actions/alerts.d.ts.map +1 -0
- package/dist/actions/alerts.js +90 -0
- package/dist/actions/alerts.js.map +1 -0
- package/dist/actions/batch-policy.d.ts +67 -0
- package/dist/actions/batch-policy.d.ts.map +1 -0
- package/dist/actions/batch-policy.js +73 -0
- package/dist/actions/batch-policy.js.map +1 -0
- package/dist/actions/checkpoint-archive.d.ts +3 -0
- package/dist/actions/checkpoint-archive.d.ts.map +1 -0
- package/dist/actions/checkpoint-archive.js +173 -0
- package/dist/actions/checkpoint-archive.js.map +1 -0
- package/dist/actions/checkpoint-geo.d.ts +4 -0
- package/dist/actions/checkpoint-geo.d.ts.map +1 -0
- package/dist/actions/checkpoint-geo.js +286 -0
- package/dist/actions/checkpoint-geo.js.map +1 -0
- package/dist/actions/checkpoints.d.ts +10 -0
- package/dist/actions/checkpoints.d.ts.map +1 -0
- package/dist/actions/checkpoints.js +222 -0
- package/dist/actions/checkpoints.js.map +1 -0
- package/dist/actions/guard.d.ts +13 -0
- package/dist/actions/guard.d.ts.map +1 -0
- package/dist/actions/guard.js +30 -0
- package/dist/actions/guard.js.map +1 -0
- package/dist/actions/incidents.d.ts +3 -0
- package/dist/actions/incidents.d.ts.map +1 -0
- package/dist/actions/incidents.js +260 -0
- package/dist/actions/incidents.js.map +1 -0
- package/dist/actions/index.d.ts +20 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +60 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/locations.d.ts +4 -0
- package/dist/actions/locations.d.ts.map +1 -0
- package/dist/actions/locations.js +202 -0
- package/dist/actions/locations.js.map +1 -0
- package/dist/actions/names.d.ts +27 -0
- package/dist/actions/names.d.ts.map +1 -0
- package/dist/actions/names.js +48 -0
- package/dist/actions/names.js.map +1 -0
- package/dist/actions/patrollers.d.ts +6 -0
- package/dist/actions/patrollers.d.ts.map +1 -0
- package/dist/actions/patrollers.js +172 -0
- package/dist/actions/patrollers.js.map +1 -0
- package/dist/actions/route-schedules.d.ts +4 -0
- package/dist/actions/route-schedules.d.ts.map +1 -0
- package/dist/actions/route-schedules.js +110 -0
- package/dist/actions/route-schedules.js.map +1 -0
- package/dist/actions/routes.d.ts +5 -0
- package/dist/actions/routes.d.ts.map +1 -0
- package/dist/actions/routes.js +348 -0
- package/dist/actions/routes.js.map +1 -0
- package/dist/actions/support/antifraud-rules.d.ts +53 -0
- package/dist/actions/support/antifraud-rules.d.ts.map +1 -0
- package/dist/actions/support/antifraud-rules.js +121 -0
- package/dist/actions/support/antifraud-rules.js.map +1 -0
- package/dist/actions/support/elegir-ubicacion.d.ts +31 -0
- package/dist/actions/support/elegir-ubicacion.d.ts.map +1 -0
- package/dist/actions/support/elegir-ubicacion.js +42 -0
- package/dist/actions/support/elegir-ubicacion.js.map +1 -0
- package/dist/actions/support/next-step.d.ts +26 -0
- package/dist/actions/support/next-step.d.ts.map +1 -0
- package/dist/actions/support/next-step.js +55 -0
- package/dist/actions/support/next-step.js.map +1 -0
- package/dist/actions/support/route-impact.d.ts +25 -0
- package/dist/actions/support/route-impact.d.ts.map +1 -0
- package/dist/actions/support/route-impact.js +76 -0
- package/dist/actions/support/route-impact.js.map +1 -0
- package/dist/actions/support/route-lookup.d.ts +27 -0
- package/dist/actions/support/route-lookup.d.ts.map +1 -0
- package/dist/actions/support/route-lookup.js +44 -0
- package/dist/actions/support/route-lookup.js.map +1 -0
- package/dist/actions/support/schedule.d.ts +38 -0
- package/dist/actions/support/schedule.d.ts.map +1 -0
- package/dist/actions/support/schedule.js +62 -0
- package/dist/actions/support/schedule.js.map +1 -0
- package/dist/actions/support/shared.d.ts +112 -0
- package/dist/actions/support/shared.d.ts.map +1 -0
- package/dist/actions/support/shared.js +171 -0
- package/dist/actions/support/shared.js.map +1 -0
- package/dist/actions/support/texts.d.ts +47 -0
- package/dist/actions/support/texts.d.ts.map +1 -0
- package/dist/actions/support/texts.js +134 -0
- package/dist/actions/support/texts.js.map +1 -0
- package/dist/actions/support/turno.d.ts +16 -0
- package/dist/actions/support/turno.d.ts.map +1 -0
- package/dist/actions/support/turno.js +35 -0
- package/dist/actions/support/turno.js.map +1 -0
- package/dist/actions/support/user-access.d.ts +72 -0
- package/dist/actions/support/user-access.d.ts.map +1 -0
- package/dist/actions/support/user-access.js +194 -0
- package/dist/actions/support/user-access.js.map +1 -0
- package/dist/actions/types.d.ts +130 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +20 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/actions/user-roles.d.ts +4 -0
- package/dist/actions/user-roles.d.ts.map +1 -0
- package/dist/actions/user-roles.js +195 -0
- package/dist/actions/user-roles.js.map +1 -0
- package/dist/actions/users.d.ts +3 -0
- package/dist/actions/users.d.ts.map +1 -0
- package/dist/actions/users.js +146 -0
- package/dist/actions/users.js.map +1 -0
- package/dist/catalog/buildCatalog.d.ts +19 -0
- package/dist/catalog/buildCatalog.d.ts.map +1 -0
- package/dist/catalog/buildCatalog.js +38 -0
- package/dist/catalog/buildCatalog.js.map +1 -0
- package/dist/catalog/english.d.ts +17 -0
- package/dist/catalog/english.d.ts.map +1 -0
- package/dist/catalog/english.js +392 -0
- package/dist/catalog/english.js.map +1 -0
- package/dist/catalog/entries.d.ts +6 -0
- package/dist/catalog/entries.d.ts.map +1 -0
- package/dist/catalog/entries.js +610 -0
- package/dist/catalog/entries.js.map +1 -0
- package/dist/catalog/types.d.ts +61 -0
- package/dist/catalog/types.d.ts.map +1 -0
- package/dist/catalog/types.js +2 -0
- package/dist/catalog/types.js.map +1 -0
- package/dist/context.d.ts +37 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +11 -0
- package/dist/context.js.map +1 -0
- package/dist/deps.d.ts +23 -0
- package/dist/deps.d.ts.map +1 -0
- package/dist/deps.js +12 -0
- package/dist/deps.js.map +1 -0
- package/dist/domain/access-logs-csv.d.ts +25 -0
- package/dist/domain/access-logs-csv.d.ts.map +1 -0
- package/dist/domain/access-logs-csv.js +36 -0
- package/dist/domain/access-logs-csv.js.map +1 -0
- package/dist/domain/backend-errors.d.ts +54 -0
- package/dist/domain/backend-errors.d.ts.map +1 -0
- package/dist/domain/backend-errors.js +364 -0
- package/dist/domain/backend-errors.js.map +1 -0
- package/dist/domain/country.d.ts +9 -0
- package/dist/domain/country.d.ts.map +1 -0
- package/dist/domain/country.js +13 -0
- package/dist/domain/country.js.map +1 -0
- package/dist/domain/date-range.d.ts +33 -0
- package/dist/domain/date-range.d.ts.map +1 -0
- package/dist/domain/date-range.js +110 -0
- package/dist/domain/date-range.js.map +1 -0
- package/dist/domain/geo.d.ts +14 -0
- package/dist/domain/geo.d.ts.map +1 -0
- package/dist/domain/geo.js +22 -0
- package/dist/domain/geo.js.map +1 -0
- package/dist/domain/guard-app-message.d.ts +15 -0
- package/dist/domain/guard-app-message.d.ts.map +1 -0
- package/dist/domain/guard-app-message.js +39 -0
- package/dist/domain/guard-app-message.js.map +1 -0
- package/dist/domain/incident-priority.d.ts +25 -0
- package/dist/domain/incident-priority.d.ts.map +1 -0
- package/dist/domain/incident-priority.js +15 -0
- package/dist/domain/incident-priority.js.map +1 -0
- package/dist/domain/incident-status.d.ts +29 -0
- package/dist/domain/incident-status.d.ts.map +1 -0
- package/dist/domain/incident-status.js +44 -0
- package/dist/domain/incident-status.js.map +1 -0
- package/dist/domain/language.d.ts +39 -0
- package/dist/domain/language.d.ts.map +1 -0
- package/dist/domain/language.js +112 -0
- package/dist/domain/language.js.map +1 -0
- package/dist/domain/money.d.ts +3 -0
- package/dist/domain/money.d.ts.map +1 -0
- package/dist/domain/money.js +12 -0
- package/dist/domain/money.js.map +1 -0
- package/dist/domain/puesta-en-marcha.d.ts +47 -0
- package/dist/domain/puesta-en-marcha.d.ts.map +1 -0
- package/dist/domain/puesta-en-marcha.js +22 -0
- package/dist/domain/puesta-en-marcha.js.map +1 -0
- package/dist/domain/qr-image.d.ts +25 -0
- package/dist/domain/qr-image.d.ts.map +1 -0
- package/dist/domain/qr-image.js +28 -0
- package/dist/domain/qr-image.js.map +1 -0
- package/dist/domain/resolve-by-name.d.ts +32 -0
- package/dist/domain/resolve-by-name.d.ts.map +1 -0
- package/dist/domain/resolve-by-name.js +40 -0
- package/dist/domain/resolve-by-name.js.map +1 -0
- package/dist/domain/route-checkpoints.d.ts +31 -0
- package/dist/domain/route-checkpoints.d.ts.map +1 -0
- package/dist/domain/route-checkpoints.js +27 -0
- package/dist/domain/route-checkpoints.js.map +1 -0
- package/dist/domain/route-schedule.d.ts +88 -0
- package/dist/domain/route-schedule.d.ts.map +1 -0
- package/dist/domain/route-schedule.js +203 -0
- package/dist/domain/route-schedule.js.map +1 -0
- package/dist/domain/scan-explanation.d.ts +25 -0
- package/dist/domain/scan-explanation.d.ts.map +1 -0
- package/dist/domain/scan-explanation.js +99 -0
- package/dist/domain/scan-explanation.js.map +1 -0
- package/dist/domain/scans-csv.d.ts +37 -0
- package/dist/domain/scans-csv.d.ts.map +1 -0
- package/dist/domain/scans-csv.js +67 -0
- package/dist/domain/scans-csv.js.map +1 -0
- package/dist/domain/timezone.d.ts +61 -0
- package/dist/domain/timezone.d.ts.map +1 -0
- package/dist/domain/timezone.js +113 -0
- package/dist/domain/timezone.js.map +1 -0
- package/dist/domain/tool-result.d.ts +55 -0
- package/dist/domain/tool-result.d.ts.map +1 -0
- package/dist/domain/tool-result.js +47 -0
- package/dist/domain/tool-result.js.map +1 -0
- package/dist/domain/urls.d.ts +33 -0
- package/dist/domain/urls.d.ts.map +1 -0
- package/dist/domain/urls.js +20 -0
- package/dist/domain/urls.js.map +1 -0
- package/dist/gateway/PatrolTechGateway.d.ts +195 -0
- package/dist/gateway/PatrolTechGateway.d.ts.map +1 -0
- package/dist/gateway/PatrolTechGateway.js +2 -0
- package/dist/gateway/PatrolTechGateway.js.map +1 -0
- package/dist/gateway/index.d.ts +4 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +4 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/sdk/SdkPatrolTechGateway.d.ts +145 -0
- package/dist/gateway/sdk/SdkPatrolTechGateway.d.ts.map +1 -0
- package/dist/gateway/sdk/SdkPatrolTechGateway.js +101 -0
- package/dist/gateway/sdk/SdkPatrolTechGateway.js.map +1 -0
- package/dist/gateway/sdk/access.d.ts +8 -0
- package/dist/gateway/sdk/access.d.ts.map +1 -0
- package/dist/gateway/sdk/access.js +39 -0
- package/dist/gateway/sdk/access.js.map +1 -0
- package/dist/gateway/sdk/billing.d.ts +7 -0
- package/dist/gateway/sdk/billing.d.ts.map +1 -0
- package/dist/gateway/sdk/billing.js +92 -0
- package/dist/gateway/sdk/billing.js.map +1 -0
- package/dist/gateway/sdk/checkpoint-mappers.d.ts +23 -0
- package/dist/gateway/sdk/checkpoint-mappers.d.ts.map +1 -0
- package/dist/gateway/sdk/checkpoint-mappers.js +59 -0
- package/dist/gateway/sdk/checkpoint-mappers.js.map +1 -0
- package/dist/gateway/sdk/checkpoints.d.ts +33 -0
- package/dist/gateway/sdk/checkpoints.d.ts.map +1 -0
- package/dist/gateway/sdk/checkpoints.js +163 -0
- package/dist/gateway/sdk/checkpoints.js.map +1 -0
- package/dist/gateway/sdk/errors.d.ts +10 -0
- package/dist/gateway/sdk/errors.d.ts.map +1 -0
- package/dist/gateway/sdk/errors.js +46 -0
- package/dist/gateway/sdk/errors.js.map +1 -0
- package/dist/gateway/sdk/incidents.d.ts +18 -0
- package/dist/gateway/sdk/incidents.d.ts.map +1 -0
- package/dist/gateway/sdk/incidents.js +98 -0
- package/dist/gateway/sdk/incidents.js.map +1 -0
- package/dist/gateway/sdk/index.d.ts +4 -0
- package/dist/gateway/sdk/index.d.ts.map +1 -0
- package/dist/gateway/sdk/index.js +4 -0
- package/dist/gateway/sdk/index.js.map +1 -0
- package/dist/gateway/sdk/list.d.ts +15 -0
- package/dist/gateway/sdk/list.d.ts.map +1 -0
- package/dist/gateway/sdk/list.js +12 -0
- package/dist/gateway/sdk/list.js.map +1 -0
- package/dist/gateway/sdk/locations.d.ts +24 -0
- package/dist/gateway/sdk/locations.d.ts.map +1 -0
- package/dist/gateway/sdk/locations.js +44 -0
- package/dist/gateway/sdk/locations.js.map +1 -0
- package/dist/gateway/sdk/patrollers.d.ts +26 -0
- package/dist/gateway/sdk/patrollers.d.ts.map +1 -0
- package/dist/gateway/sdk/patrollers.js +132 -0
- package/dist/gateway/sdk/patrollers.js.map +1 -0
- package/dist/gateway/sdk/rounds.d.ts +15 -0
- package/dist/gateway/sdk/rounds.d.ts.map +1 -0
- package/dist/gateway/sdk/rounds.js +142 -0
- package/dist/gateway/sdk/rounds.js.map +1 -0
- package/dist/gateway/sdk/routes.d.ts +18 -0
- package/dist/gateway/sdk/routes.d.ts.map +1 -0
- package/dist/gateway/sdk/routes.js +74 -0
- package/dist/gateway/sdk/routes.js.map +1 -0
- package/dist/gateway/sdk/scans.d.ts +4 -0
- package/dist/gateway/sdk/scans.d.ts.map +1 -0
- package/dist/gateway/sdk/scans.js +72 -0
- package/dist/gateway/sdk/scans.js.map +1 -0
- package/dist/gateway/sdk/transport.d.ts +77 -0
- package/dist/gateway/sdk/transport.d.ts.map +1 -0
- package/dist/gateway/sdk/transport.js +81 -0
- package/dist/gateway/sdk/transport.js.map +1 -0
- package/dist/gateway/sdk/users.d.ts +15 -0
- package/dist/gateway/sdk/users.d.ts.map +1 -0
- package/dist/gateway/sdk/users.js +49 -0
- package/dist/gateway/sdk/users.js.map +1 -0
- package/dist/gateway/types/access.d.ts +32 -0
- package/dist/gateway/types/access.d.ts.map +1 -0
- package/dist/gateway/types/access.js +2 -0
- package/dist/gateway/types/access.js.map +1 -0
- package/dist/gateway/types/billing.d.ts +60 -0
- package/dist/gateway/types/billing.d.ts.map +1 -0
- package/dist/gateway/types/billing.js +2 -0
- package/dist/gateway/types/billing.js.map +1 -0
- package/dist/gateway/types/checkpoints.d.ts +84 -0
- package/dist/gateway/types/checkpoints.d.ts.map +1 -0
- package/dist/gateway/types/checkpoints.js +2 -0
- package/dist/gateway/types/checkpoints.js.map +1 -0
- package/dist/gateway/types/common.d.ts +13 -0
- package/dist/gateway/types/common.d.ts.map +1 -0
- package/dist/gateway/types/common.js +2 -0
- package/dist/gateway/types/common.js.map +1 -0
- package/dist/gateway/types/incidents.d.ts +53 -0
- package/dist/gateway/types/incidents.d.ts.map +1 -0
- package/dist/gateway/types/incidents.js +2 -0
- package/dist/gateway/types/incidents.js.map +1 -0
- package/dist/gateway/types/index.d.ts +12 -0
- package/dist/gateway/types/index.d.ts.map +1 -0
- package/dist/gateway/types/index.js +12 -0
- package/dist/gateway/types/index.js.map +1 -0
- package/dist/gateway/types/locations.d.ts +7 -0
- package/dist/gateway/types/locations.d.ts.map +1 -0
- package/dist/gateway/types/locations.js +2 -0
- package/dist/gateway/types/locations.js.map +1 -0
- package/dist/gateway/types/patrollers.d.ts +68 -0
- package/dist/gateway/types/patrollers.d.ts.map +1 -0
- package/dist/gateway/types/patrollers.js +15 -0
- package/dist/gateway/types/patrollers.js.map +1 -0
- package/dist/gateway/types/rounds.d.ts +89 -0
- package/dist/gateway/types/rounds.d.ts.map +1 -0
- package/dist/gateway/types/rounds.js +2 -0
- package/dist/gateway/types/rounds.js.map +1 -0
- package/dist/gateway/types/routes.d.ts +48 -0
- package/dist/gateway/types/routes.d.ts.map +1 -0
- package/dist/gateway/types/routes.js +2 -0
- package/dist/gateway/types/routes.js.map +1 -0
- package/dist/gateway/types/scans.d.ts +44 -0
- package/dist/gateway/types/scans.d.ts.map +1 -0
- package/dist/gateway/types/scans.js +2 -0
- package/dist/gateway/types/scans.js.map +1 -0
- package/dist/gateway/types/users.d.ts +32 -0
- package/dist/gateway/types/users.d.ts.map +1 -0
- package/dist/gateway/types/users.js +2 -0
- package/dist/gateway/types/users.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/ports/FileSink.d.ts +20 -0
- package/dist/ports/FileSink.d.ts.map +1 -0
- package/dist/ports/FileSink.js +2 -0
- package/dist/ports/FileSink.js.map +1 -0
- package/dist/ports/Logger.d.ts +16 -0
- package/dist/ports/Logger.d.ts.map +1 -0
- package/dist/ports/Logger.js +7 -0
- package/dist/ports/Logger.js.map +1 -0
- package/dist/ports/PendingActionStore.d.ts +84 -0
- package/dist/ports/PendingActionStore.d.ts.map +1 -0
- package/dist/ports/PendingActionStore.js +16 -0
- package/dist/ports/PendingActionStore.js.map +1 -0
- package/dist/reads/access.d.ts +4 -0
- package/dist/reads/access.d.ts.map +1 -0
- package/dist/reads/access.js +129 -0
- package/dist/reads/access.js.map +1 -0
- package/dist/reads/checkpoints.d.ts +4 -0
- package/dist/reads/checkpoints.d.ts.map +1 -0
- package/dist/reads/checkpoints.js +152 -0
- package/dist/reads/checkpoints.js.map +1 -0
- package/dist/reads/files.d.ts +9 -0
- package/dist/reads/files.d.ts.map +1 -0
- package/dist/reads/files.js +222 -0
- package/dist/reads/files.js.map +1 -0
- package/dist/reads/incidents.d.ts +4 -0
- package/dist/reads/incidents.d.ts.map +1 -0
- package/dist/reads/incidents.js +159 -0
- package/dist/reads/incidents.js.map +1 -0
- package/dist/reads/index.d.ts +11 -0
- package/dist/reads/index.d.ts.map +1 -0
- package/dist/reads/index.js +51 -0
- package/dist/reads/index.js.map +1 -0
- package/dist/reads/onboarding.d.ts +4 -0
- package/dist/reads/onboarding.d.ts.map +1 -0
- package/dist/reads/onboarding.js +41 -0
- package/dist/reads/onboarding.js.map +1 -0
- package/dist/reads/organization.d.ts +26 -0
- package/dist/reads/organization.d.ts.map +1 -0
- package/dist/reads/organization.js +45 -0
- package/dist/reads/organization.js.map +1 -0
- package/dist/reads/patrollers.d.ts +11 -0
- package/dist/reads/patrollers.d.ts.map +1 -0
- package/dist/reads/patrollers.js +172 -0
- package/dist/reads/patrollers.js.map +1 -0
- package/dist/reads/plan.d.ts +4 -0
- package/dist/reads/plan.d.ts.map +1 -0
- package/dist/reads/plan.js +195 -0
- package/dist/reads/plan.js.map +1 -0
- package/dist/reads/rounds.d.ts +4 -0
- package/dist/reads/rounds.d.ts.map +1 -0
- package/dist/reads/rounds.js +160 -0
- package/dist/reads/rounds.js.map +1 -0
- package/dist/reads/routes.d.ts +4 -0
- package/dist/reads/routes.d.ts.map +1 -0
- package/dist/reads/routes.js +34 -0
- package/dist/reads/routes.js.map +1 -0
- package/dist/reads/support/access-locations.d.ts +22 -0
- package/dist/reads/support/access-locations.d.ts.map +1 -0
- package/dist/reads/support/access-locations.js +55 -0
- package/dist/reads/support/access-locations.js.map +1 -0
- package/dist/reads/support/excel.d.ts +10 -0
- package/dist/reads/support/excel.d.ts.map +1 -0
- package/dist/reads/support/excel.js +35 -0
- package/dist/reads/support/excel.js.map +1 -0
- package/dist/reads/support/params.d.ts +50 -0
- package/dist/reads/support/params.d.ts.map +1 -0
- package/dist/reads/support/params.js +73 -0
- package/dist/reads/support/params.js.map +1 -0
- package/dist/reads/support/resolve.d.ts +17 -0
- package/dist/reads/support/resolve.d.ts.map +1 -0
- package/dist/reads/support/resolve.js +33 -0
- package/dist/reads/support/resolve.js.map +1 -0
- package/dist/reads/support/results.d.ts +22 -0
- package/dist/reads/support/results.d.ts.map +1 -0
- package/dist/reads/support/results.js +41 -0
- package/dist/reads/support/results.js.map +1 -0
- package/dist/reads/support/roles.d.ts +13 -0
- package/dist/reads/support/roles.d.ts.map +1 -0
- package/dist/reads/support/roles.js +27 -0
- package/dist/reads/support/roles.js.map +1 -0
- package/dist/reads/support/scans.d.ts +31 -0
- package/dist/reads/support/scans.d.ts.map +1 -0
- package/dist/reads/support/scans.js +66 -0
- package/dist/reads/support/scans.js.map +1 -0
- package/dist/reads/types.d.ts +48 -0
- package/dist/reads/types.d.ts.map +1 -0
- package/dist/reads/types.js +5 -0
- package/dist/reads/types.js.map +1 -0
- package/dist/reads/users.d.ts +4 -0
- package/dist/reads/users.d.ts.map +1 -0
- package/dist/reads/users.js +57 -0
- package/dist/reads/users.js.map +1 -0
- package/dist/testing/FakePatrolTechGateway.d.ts +212 -0
- package/dist/testing/FakePatrolTechGateway.d.ts.map +1 -0
- package/dist/testing/FakePatrolTechGateway.js +712 -0
- package/dist/testing/FakePatrolTechGateway.js.map +1 -0
- package/dist/testing/RecordingFileSink.d.ts +12 -0
- package/dist/testing/RecordingFileSink.d.ts.map +1 -0
- package/dist/testing/RecordingFileSink.js +12 -0
- package/dist/testing/RecordingFileSink.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +4 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/reads.d.ts +34 -0
- package/dist/testing/reads.d.ts.map +1 -0
- package/dist/testing/reads.js +39 -0
- package/dist/testing/reads.js.map +1 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"PatrolTechGateway.js","sourceRoot":"","sources":["../../src/gateway/PatrolTechGateway.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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"}
|