@patroltech/agent-capabilities 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +14 -0
- package/dist/catalog/english.d.ts.map +1 -0
- package/dist/catalog/english.js +368 -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-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 +164 -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 +4 -0
- package/dist/reads/patrollers.d.ts.map +1 -0
- package/dist/reads/patrollers.js +156 -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,60 @@
|
|
|
1
|
+
import { capabilityEnv } from '../deps.js';
|
|
2
|
+
import { setAlertPreference } from './alerts.js';
|
|
3
|
+
import { editCheckpointAntifraud, moveCheckpoint } from './checkpoint-geo.js';
|
|
4
|
+
import { archiveCheckpoint } from './checkpoint-archive.js';
|
|
5
|
+
import { createCheckpoint, editCheckpoint } from './checkpoints.js';
|
|
6
|
+
import { incidentUpdate } from './incidents.js';
|
|
7
|
+
import { deleteLocation, editLocation } from './locations.js';
|
|
8
|
+
import { withOrganizationGuard } from './guard.js';
|
|
9
|
+
import { createPatroller, editPatroller } from './patrollers.js';
|
|
10
|
+
import { addTimeWindow, deleteTimeWindow } from './route-schedules.js';
|
|
11
|
+
import { createRoute, routeCheckpoint, setRouteActive } from './routes.js';
|
|
12
|
+
import { changeUserRole, removeUserAccess } from './user-roles.js';
|
|
13
|
+
import { inviteUser } from './users.js';
|
|
14
|
+
export * from './types.js';
|
|
15
|
+
export * from './names.js';
|
|
16
|
+
export * from './batch-policy.js';
|
|
17
|
+
export { withOrganizationGuard } from './guard.js';
|
|
18
|
+
export { CHECKPOINT_RECOVERY_WINDOW_MS } from './checkpoints.js';
|
|
19
|
+
export { newPatrollerIdentifier } from './patrollers.js';
|
|
20
|
+
export { nuevoTurno, turnoDe } from './support/turno.js';
|
|
21
|
+
export { internalParamNames } from './support/shared.js';
|
|
22
|
+
export { isOnboardingAction, nextOnboardingStep, ONBOARDING_ACTIONS, } from './support/next-step.js';
|
|
23
|
+
export { actionTexts, NEXT_STEP_TEXTS, } from './support/texts.js';
|
|
24
|
+
/**
|
|
25
|
+
* El catálogo de las 19 acciones de escritura, en el orden de `BOT_ACTIONS`. El
|
|
26
|
+
* motor de cada consumidor (tools `proponer_*`, confirmación, ejecución única)
|
|
27
|
+
* es el mismo para todas; cuáles se ofrecen lo deciden sus flags
|
|
28
|
+
* (`isActionEnabled`) y el rol del usuario (`roleAllows`). Todas van con
|
|
29
|
+
* `withOrganizationGuard`: ni preparan ni ejecutan fuera de las organizaciones de la sesión.
|
|
30
|
+
*/
|
|
31
|
+
export function actionCatalog(deps) {
|
|
32
|
+
const env = capabilityEnv(deps);
|
|
33
|
+
return [
|
|
34
|
+
createCheckpoint(env),
|
|
35
|
+
createPatroller(env),
|
|
36
|
+
setAlertPreference(env),
|
|
37
|
+
// Rutas y horarios.
|
|
38
|
+
createRoute(env),
|
|
39
|
+
addTimeWindow(env),
|
|
40
|
+
deleteTimeWindow(env),
|
|
41
|
+
setRouteActive(env),
|
|
42
|
+
routeCheckpoint(env),
|
|
43
|
+
// Incidencias, editar vigilante y checkpoint, archivar checkpoint.
|
|
44
|
+
incidentUpdate(env),
|
|
45
|
+
editPatroller(env),
|
|
46
|
+
editCheckpoint(env),
|
|
47
|
+
archiveCheckpoint(env),
|
|
48
|
+
// Antifraude y posición.
|
|
49
|
+
editCheckpointAntifraud(env),
|
|
50
|
+
moveCheckpoint(env),
|
|
51
|
+
// Editar y borrar ubicación, invitar al panel.
|
|
52
|
+
editLocation(env),
|
|
53
|
+
deleteLocation(env),
|
|
54
|
+
inviteUser(env),
|
|
55
|
+
// Cambiar el rol y quitar el acceso a quien ya está en el panel.
|
|
56
|
+
changeUserRole(env),
|
|
57
|
+
removeUserAccess(env),
|
|
58
|
+
].map(withOrganizationGuard);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAyB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GAGnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,WAAW,EACX,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,MAAM,GAAG,GAAc,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO;QACL,gBAAgB,CAAC,GAAG,CAAC;QACrB,eAAe,CAAC,GAAG,CAAC;QACpB,kBAAkB,CAAC,GAAG,CAAC;QACvB,oBAAoB;QACpB,WAAW,CAAC,GAAG,CAAC;QAChB,aAAa,CAAC,GAAG,CAAC;QAClB,gBAAgB,CAAC,GAAG,CAAC;QACrB,cAAc,CAAC,GAAG,CAAC;QACnB,eAAe,CAAC,GAAG,CAAC;QACpB,mEAAmE;QACnE,cAAc,CAAC,GAAG,CAAC;QACnB,aAAa,CAAC,GAAG,CAAC;QAClB,cAAc,CAAC,GAAG,CAAC;QACnB,iBAAiB,CAAC,GAAG,CAAC;QACtB,yBAAyB;QACzB,uBAAuB,CAAC,GAAG,CAAC;QAC5B,cAAc,CAAC,GAAG,CAAC;QACnB,+CAA+C;QAC/C,YAAY,CAAC,GAAG,CAAC;QACjB,cAAc,CAAC,GAAG,CAAC;QACnB,UAAU,CAAC,GAAG,CAAC;QACf,iEAAiE;QACjE,cAAc,CAAC,GAAG,CAAC;QACnB,gBAAgB,CAAC,GAAG,CAAC;KACtB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ActionDefinition, type ActionEnv } from './types.js';
|
|
2
|
+
export declare function editLocation({ gateway }: ActionEnv): ActionDefinition;
|
|
3
|
+
export declare function deleteLocation({ gateway }: ActionEnv): ActionDefinition;
|
|
4
|
+
//# sourceMappingURL=locations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locations.d.ts","sourceRoot":"","sources":["../../src/actions/locations.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAqCpF,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,GAAG,gBAAgB,CAsFrE;AAiBD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,GAAG,gBAAgB,CA4EvE"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { segunIdioma } from '../domain/language.js';
|
|
3
|
+
import { normalizeName } from '../domain/resolve-by-name.js';
|
|
4
|
+
import { ubicacionPedida } from './support/elegir-ubicacion.js';
|
|
5
|
+
import { INTERNO } from './support/shared.js';
|
|
6
|
+
import { defineBotAction } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Editar y borrar una ubicación. Los ids
|
|
9
|
+
* (ubicación, organización) salen SIEMPRE de la sesión y de `listLocations` de
|
|
10
|
+
* esa organización, nunca de lo que diga el modelo.
|
|
11
|
+
*/
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// edit_location
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
const editLocationParams = {
|
|
16
|
+
ubicacion: z
|
|
17
|
+
.string()
|
|
18
|
+
.trim()
|
|
19
|
+
.min(1)
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Nombre actual de la ubicación. Pregúntalo solo si tiene varias.'),
|
|
22
|
+
nombre: z
|
|
23
|
+
.string()
|
|
24
|
+
.trim()
|
|
25
|
+
.min(1)
|
|
26
|
+
.max(255)
|
|
27
|
+
.optional()
|
|
28
|
+
.describe('Nombre nuevo. OMÍTELO si no cambia.'),
|
|
29
|
+
direccion: z
|
|
30
|
+
.string()
|
|
31
|
+
.trim()
|
|
32
|
+
.min(1)
|
|
33
|
+
.max(255)
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Dirección nueva. OMÍTELO si no cambia (no se puede dejar vacía).'),
|
|
36
|
+
ubicacion_id: z.string().optional().describe(INTERNO),
|
|
37
|
+
direccion_actual: z.string().optional().describe(INTERNO),
|
|
38
|
+
};
|
|
39
|
+
export function editLocation({ gateway }) {
|
|
40
|
+
return defineBotAction({
|
|
41
|
+
nombre: 'edit_location',
|
|
42
|
+
tool: 'proponer_editar_ubicacion',
|
|
43
|
+
descripcion: 'Prepara cambiar el nombre y/o la dirección de una ubicación de la organización. NO lo cambia: le envía al cliente un resumen ' +
|
|
44
|
+
'con un botón para confirmarlo. Sus checkpoints, rutas y escaneos no cambian.',
|
|
45
|
+
params: editLocationParams,
|
|
46
|
+
rolMinimo: 'EDITOR',
|
|
47
|
+
async preparar(ctx, p) {
|
|
48
|
+
if (!p.nombre && !p.direccion)
|
|
49
|
+
return {
|
|
50
|
+
error: 'Falta qué cambiar: el nombre nuevo o la dirección. Pregúntaselo al usuario.',
|
|
51
|
+
};
|
|
52
|
+
const ubicaciones = await gateway.listLocations(ctx.org.orgId, ctx.token);
|
|
53
|
+
const u = ubicacionPedida(ubicaciones, p.ubicacion, 'cambiar');
|
|
54
|
+
if ('error' in u)
|
|
55
|
+
return u;
|
|
56
|
+
const loc = u.item;
|
|
57
|
+
// El backend no exige nombres únicos: dos ubicaciones iguales ya no se pueden elegir por su nombre.
|
|
58
|
+
const otra = p.nombre &&
|
|
59
|
+
ubicaciones.find((l) => l.id !== loc.id && normalizeName(l.name) === normalizeName(p.nombre));
|
|
60
|
+
if (otra)
|
|
61
|
+
return {
|
|
62
|
+
error: `Ya hay otra ubicación que se llama «${otra.name}»: pide al usuario un nombre distinto.`,
|
|
63
|
+
};
|
|
64
|
+
// Solo viaja lo que cambia de verdad.
|
|
65
|
+
const nombre = p.nombre && p.nombre !== loc.name ? p.nombre : undefined;
|
|
66
|
+
const direccion = p.direccion && p.direccion !== (loc.address ?? '').trim() ? p.direccion : undefined;
|
|
67
|
+
if (!nombre && !direccion)
|
|
68
|
+
return {
|
|
69
|
+
error: `La ubicación «${loc.name}» ya tiene ese nombre y esa dirección: no hay nada que cambiar.`,
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
params: {
|
|
73
|
+
ubicacion: loc.name,
|
|
74
|
+
ubicacion_id: loc.id,
|
|
75
|
+
nombre,
|
|
76
|
+
direccion,
|
|
77
|
+
direccion_actual: direccion ? (loc.address ?? undefined) : undefined,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
resumen(p, { idioma, organizacion }) {
|
|
82
|
+
const t = segunIdioma(idioma, {
|
|
83
|
+
es: { nombre: 'nombre', direccion: 'dirección', antes: 'antes' },
|
|
84
|
+
en: { nombre: 'name', direccion: 'address', antes: 'was' },
|
|
85
|
+
fr: { nombre: 'nom', direccion: 'adresse', antes: 'avant' },
|
|
86
|
+
});
|
|
87
|
+
const cambios = [
|
|
88
|
+
...(p.nombre ? [`${t.nombre} → «${p.nombre}»`] : []),
|
|
89
|
+
...(p.direccion
|
|
90
|
+
? [
|
|
91
|
+
`${t.direccion} → «${p.direccion}»${p.direccion_actual ? ` (${t.antes} «${p.direccion_actual}»)` : ''}`,
|
|
92
|
+
]
|
|
93
|
+
: []),
|
|
94
|
+
].join('; ');
|
|
95
|
+
return segunIdioma(idioma, {
|
|
96
|
+
es: `Cambiar la ubicación «${p.ubicacion}» de ${organizacion}: ${cambios}.`,
|
|
97
|
+
en: `Change the location «${p.ubicacion}» of ${organizacion}: ${cambios}.`,
|
|
98
|
+
fr: `Modifier le site «${p.ubicacion}» de ${organizacion} : ${cambios}.`,
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
async ejecutar(ctx, p) {
|
|
102
|
+
if (!p.ubicacion_id)
|
|
103
|
+
throw new Error('edit_location sin ubicacion_id (no pasó por preparar)');
|
|
104
|
+
await gateway.updateLocation({
|
|
105
|
+
id: p.ubicacion_id,
|
|
106
|
+
...(p.nombre ? { name: p.nombre } : {}),
|
|
107
|
+
...(p.direccion ? { address: p.direccion } : {}),
|
|
108
|
+
}, ctx.token);
|
|
109
|
+
const nombre = p.nombre ?? p.ubicacion;
|
|
110
|
+
return {
|
|
111
|
+
texto: segunIdioma(ctx.language, {
|
|
112
|
+
es: `✅ Ubicación «${nombre}» de ${ctx.org.name} actualizada.`,
|
|
113
|
+
en: `✅ Location «${nombre}» of ${ctx.org.name} updated.`,
|
|
114
|
+
fr: `✅ Site «${nombre}» de ${ctx.org.name} mis à jour.`,
|
|
115
|
+
}),
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// delete_location
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
const deleteLocationParams = {
|
|
124
|
+
ubicacion: z.string().trim().min(1).describe('Nombre de la ubicación a borrar'),
|
|
125
|
+
ubicacion_id: z.string().optional().describe(INTERNO),
|
|
126
|
+
checkpoints: z.number().int().nonnegative().optional().describe(INTERNO),
|
|
127
|
+
rutas: z.number().int().nonnegative().optional().describe(INTERNO),
|
|
128
|
+
};
|
|
129
|
+
/** «3 checkpoints», «1 ruta»… (el sustantivo ya en el idioma). */
|
|
130
|
+
const cuantos = (n, singular, plural) => `${n} ${n === 1 ? singular : plural}`;
|
|
131
|
+
export function deleteLocation({ gateway }) {
|
|
132
|
+
return defineBotAction({
|
|
133
|
+
nombre: 'delete_location',
|
|
134
|
+
tool: 'proponer_borrar_ubicacion',
|
|
135
|
+
descripcion: 'Prepara BORRAR una ubicación. NO la borra: le envía al cliente un resumen con un botón para confirmarlo. Es IRREVERSIBLE: ' +
|
|
136
|
+
'borra todos sus checkpoints (también los ya escaneados), sus rutas y sus rondas, su control de acceso y los permisos de esa ' +
|
|
137
|
+
'ubicación; los escaneos se conservan. No se puede borrar la única ubicación de la organización. Si el cliente solo quiere que ' +
|
|
138
|
+
'sus checkpoints dejen de contar para el plan, propón antes archivarlos (proponer_archivar_checkpoint), que no borra nada.',
|
|
139
|
+
params: deleteLocationParams,
|
|
140
|
+
rolMinimo: 'ADMIN',
|
|
141
|
+
// Un admin de ubicación no basta: el backend podría dejarle borrar otras ubicaciones de la organización.
|
|
142
|
+
rolDeOrganizacion: true,
|
|
143
|
+
async preparar(ctx, p) {
|
|
144
|
+
const ubicaciones = await gateway.listLocations(ctx.org.orgId, ctx.token);
|
|
145
|
+
const u = ubicacionPedida(ubicaciones, p.ubicacion, 'borrar', false);
|
|
146
|
+
if ('error' in u)
|
|
147
|
+
return u;
|
|
148
|
+
const loc = u.item;
|
|
149
|
+
if (ubicaciones.length <= 1) {
|
|
150
|
+
return {
|
|
151
|
+
error: `«${loc.name}» es la única ubicación de «${ctx.org.name}»: no se puede borrar. ` +
|
|
152
|
+
'Si quiere cambiarle el nombre o la dirección, propón proponer_editar_ubicacion.',
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
// La cuenta es informativa (listas capadas o ubicaciones que fallan pueden dejarla corta); el aviso de borrado no depende de ella.
|
|
156
|
+
const [activos, archivados, rutas] = await Promise.all([
|
|
157
|
+
gateway.listCheckpoints(ctx.org.orgId, ctx.token),
|
|
158
|
+
gateway.listArchivedCheckpoints(ctx.org.orgId, ctx.token),
|
|
159
|
+
gateway.listRoutes(ctx.org.orgId, ctx.token),
|
|
160
|
+
]);
|
|
161
|
+
const checkpoints = [...activos.items, ...archivados.items].filter((c) => c.locationId === loc.id).length;
|
|
162
|
+
return {
|
|
163
|
+
params: {
|
|
164
|
+
ubicacion: loc.name,
|
|
165
|
+
ubicacion_id: loc.id,
|
|
166
|
+
checkpoints,
|
|
167
|
+
rutas: rutas.items.filter((r) => r.locationId === loc.id).length,
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
resumen(p, { idioma, organizacion }) {
|
|
172
|
+
const cps = p.checkpoints ?? 0;
|
|
173
|
+
const rutas = p.rutas ?? 0;
|
|
174
|
+
return segunIdioma(idioma, {
|
|
175
|
+
es: `Borrar la ubicación «${p.ubicacion}» de ${organizacion}.\n` +
|
|
176
|
+
`⚠️ SE BORRARÁN TODOS SUS CHECKPOINTS (${cps}, TAMBIÉN LOS YA ESCANEADOS), SUS RUTAS (${rutas}) Y SUS RONDAS, SU CONTROL DE ACCESO ` +
|
|
177
|
+
'Y LOS PERMISOS DE ESA UBICACIÓN. NO SE PUEDE DESHACER. Los escaneos se conservan.',
|
|
178
|
+
en: `Delete the location «${p.ubicacion}» of ${organizacion}.\n` +
|
|
179
|
+
`⚠️ ALL ITS CHECKPOINTS (${cps}, INCLUDING THOSE ALREADY SCANNED), ITS ROUTES (${rutas}) AND THEIR ROUNDS, ITS ACCESS CONTROL ` +
|
|
180
|
+
'AND THE PERMISSIONS FOR THAT LOCATION WILL BE DELETED. THIS CANNOT BE UNDONE. Scans are kept.',
|
|
181
|
+
fr: `Supprimer le site «${p.ubicacion}» de ${organizacion}.\n` +
|
|
182
|
+
`⚠️ TOUS SES CHECKPOINTS (${cps}, Y COMPRIS CEUX DÉJÀ SCANNÉS), SES PARCOURS (${rutas}) ET LEURS RONDES, SON CONTRÔLE D'ACCÈS ` +
|
|
183
|
+
"ET LES AUTORISATIONS DE CE SITE SERONT SUPPRIMÉS. C'EST IRRÉVERSIBLE. Les scans sont conservés.",
|
|
184
|
+
});
|
|
185
|
+
},
|
|
186
|
+
async ejecutar(ctx, p) {
|
|
187
|
+
if (!p.ubicacion_id)
|
|
188
|
+
throw new Error('delete_location sin ubicacion_id (no pasó por preparar)');
|
|
189
|
+
await gateway.deleteLocation(p.ubicacion_id, ctx.token);
|
|
190
|
+
const cps = p.checkpoints ?? 0;
|
|
191
|
+
const rutas = p.rutas ?? 0;
|
|
192
|
+
return {
|
|
193
|
+
texto: segunIdioma(ctx.language, {
|
|
194
|
+
es: `✅ Ubicación «${p.ubicacion}» borrada de ${ctx.org.name}, junto con ${cuantos(cps, 'checkpoint', 'checkpoints')} y ${cuantos(rutas, 'ruta', 'rutas')}. Los escaneos se conservan.`,
|
|
195
|
+
en: `✅ Location «${p.ubicacion}» deleted from ${ctx.org.name}, along with ${cuantos(cps, 'checkpoint', 'checkpoints')} and ${cuantos(rutas, 'route', 'routes')}. Scans are kept.`,
|
|
196
|
+
fr: `✅ Site «${p.ubicacion}» supprimé de ${ctx.org.name}, avec ${cuantos(cps, 'checkpoint', 'checkpoints')} et ${cuantos(rutas, 'parcours', 'parcours')}. Les scans sont conservés.`,
|
|
197
|
+
}),
|
|
198
|
+
};
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locations.js","sourceRoot":"","sources":["../../src/actions/locations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Acciones de escritura que se pueden hacer por el cliente (siempre con su confirmación). */
|
|
2
|
+
export declare const BOT_ACTIONS: readonly ["create_checkpoint", "create_patroller", "set_alert_preference", "create_route", "add_time_window", "delete_time_window", "set_route_active", "route_checkpoint", "incident_update", "rename_patroller", "edit_checkpoint", "archive_checkpoint", "edit_checkpoint_antifraud", "move_checkpoint", "edit_location", "delete_location", "invite_user", "change_user_role", "remove_user_access"];
|
|
3
|
+
export type BotActionName = (typeof BOT_ACTIONS)[number];
|
|
4
|
+
/** La parte de la config que decide qué acciones están activas y para quién (misma forma que la `Config` del bot). */
|
|
5
|
+
export interface BotActionFlags {
|
|
6
|
+
botActionsEnabled: readonly BotActionName[];
|
|
7
|
+
/** Identificadores del contacto ya normalizados (en el bot, `normalizeWaId`); vacía = todos. */
|
|
8
|
+
botActionsAllowlist: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* ¿Puede este contacto usar esta acción? Con `botActionsEnabled` vacío, nunca:
|
|
12
|
+
* el consumidor se comporta exactamente como sin acciones. `externalId` llega ya
|
|
13
|
+
* normalizado (el adaptador de WhatsApp del bot lo pasa por `normalizeWaId` al recibir).
|
|
14
|
+
*/
|
|
15
|
+
export declare function isActionEnabled(flags: BotActionFlags, action: BotActionName, externalId: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Una acción que, al confirmarse, la propia acción decide NO hacer (una protección
|
|
18
|
+
* que ya no se cumple con los datos del momento: el último Admin, uno mismo, el
|
|
19
|
+
* checkpoint que ya no está…). No es un fallo del backend: `ejecutar` la lanza
|
|
20
|
+
* con el texto al cliente ya en su idioma y el motor la guarda como `failed`,
|
|
21
|
+
* sin aviso de «hecha» al equipo.
|
|
22
|
+
*/
|
|
23
|
+
export declare class AccionRechazada extends Error {
|
|
24
|
+
readonly mensajeCliente: string;
|
|
25
|
+
constructor(mensajeCliente: string);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/actions/names.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,eAAO,MAAM,WAAW,0YAoBd,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,sHAAsH;AACtH,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,gGAAgG;IAChG,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAGT;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM;gBAAtB,cAAc,EAAE,MAAM;CAI5C"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Acciones de escritura que se pueden hacer por el cliente (siempre con su confirmación). */
|
|
2
|
+
export const BOT_ACTIONS = [
|
|
3
|
+
'create_checkpoint',
|
|
4
|
+
'create_patroller',
|
|
5
|
+
'set_alert_preference',
|
|
6
|
+
'create_route',
|
|
7
|
+
'add_time_window',
|
|
8
|
+
'delete_time_window',
|
|
9
|
+
'set_route_active',
|
|
10
|
+
'route_checkpoint',
|
|
11
|
+
'incident_update',
|
|
12
|
+
'rename_patroller',
|
|
13
|
+
'edit_checkpoint',
|
|
14
|
+
'archive_checkpoint',
|
|
15
|
+
'edit_checkpoint_antifraud',
|
|
16
|
+
'move_checkpoint',
|
|
17
|
+
'edit_location',
|
|
18
|
+
'delete_location',
|
|
19
|
+
'invite_user',
|
|
20
|
+
'change_user_role',
|
|
21
|
+
'remove_user_access',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* ¿Puede este contacto usar esta acción? Con `botActionsEnabled` vacío, nunca:
|
|
25
|
+
* el consumidor se comporta exactamente como sin acciones. `externalId` llega ya
|
|
26
|
+
* normalizado (el adaptador de WhatsApp del bot lo pasa por `normalizeWaId` al recibir).
|
|
27
|
+
*/
|
|
28
|
+
export function isActionEnabled(flags, action, externalId) {
|
|
29
|
+
if (!flags.botActionsEnabled.includes(action))
|
|
30
|
+
return false;
|
|
31
|
+
return flags.botActionsAllowlist.length === 0 || flags.botActionsAllowlist.includes(externalId);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Una acción que, al confirmarse, la propia acción decide NO hacer (una protección
|
|
35
|
+
* que ya no se cumple con los datos del momento: el último Admin, uno mismo, el
|
|
36
|
+
* checkpoint que ya no está…). No es un fallo del backend: `ejecutar` la lanza
|
|
37
|
+
* con el texto al cliente ya en su idioma y el motor la guarda como `failed`,
|
|
38
|
+
* sin aviso de «hecha» al equipo.
|
|
39
|
+
*/
|
|
40
|
+
export class AccionRechazada extends Error {
|
|
41
|
+
mensajeCliente;
|
|
42
|
+
constructor(mensajeCliente) {
|
|
43
|
+
super(mensajeCliente);
|
|
44
|
+
this.mensajeCliente = mensajeCliente;
|
|
45
|
+
this.name = 'AccionRechazada';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/actions/names.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;IACtB,cAAc;IACd,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,2BAA2B;IAC3B,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,kBAAkB;IAClB,oBAAoB;CACZ,CAAC;AAWX;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAqB,EACrB,MAAqB,EACrB,UAAkB;IAElB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAClG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACnB;IAArB,YAAqB,cAAsB;QACzC,KAAK,CAAC,cAAc,CAAC,CAAC;QADH,mBAAc,GAAd,cAAc,CAAQ;QAEzC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ActionDefinition, type ActionEnv } from './types.js';
|
|
2
|
+
/** Identificador del vigilante: 8 hex en mayúsculas, el mismo formato que genera la API. */
|
|
3
|
+
export declare function newPatrollerIdentifier(): string;
|
|
4
|
+
export declare function createPatroller({ gateway, urls }: ActionEnv): ActionDefinition;
|
|
5
|
+
export declare function editPatroller({ gateway }: ActionEnv): ActionDefinition;
|
|
6
|
+
//# sourceMappingURL=patrollers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patrollers.d.ts","sourceRoot":"","sources":["../../src/actions/patrollers.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBpF,4FAA4F;AAC5F,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,gBAAgB,CAuE9E;AAyBD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,GAAG,gBAAgB,CA2DtE"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { PatrolTechApiError } from '../domain/backend-errors.js';
|
|
4
|
+
import { checkpointQrImage } from '../domain/qr-image.js';
|
|
5
|
+
import { guardAppMessage } from '../domain/guard-app-message.js';
|
|
6
|
+
import { segunIdioma } from '../domain/language.js';
|
|
7
|
+
import { INTERNO, maybeApplied, resolver } from './support/shared.js';
|
|
8
|
+
import { defineBotAction } from './types.js';
|
|
9
|
+
/** Alta de un vigilante y cambiar su nombre o teléfono. */
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// create_patroller
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
const createPatrollerParams = {
|
|
14
|
+
nombre: z.string().trim().min(1).describe('Nombre del vigilante'),
|
|
15
|
+
telefono: z
|
|
16
|
+
.string()
|
|
17
|
+
.trim()
|
|
18
|
+
.min(1)
|
|
19
|
+
.max(30)
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Teléfono del vigilante, solo si el usuario lo da (no lo pidas)'),
|
|
22
|
+
identificador: z.string().optional().describe(INTERNO),
|
|
23
|
+
};
|
|
24
|
+
/** Identificador del vigilante: 8 hex en mayúsculas, el mismo formato que genera la API. */
|
|
25
|
+
export function newPatrollerIdentifier() {
|
|
26
|
+
return randomBytes(4).toString('hex').toUpperCase();
|
|
27
|
+
}
|
|
28
|
+
export function createPatroller({ gateway, urls }) {
|
|
29
|
+
return defineBotAction({
|
|
30
|
+
nombre: 'create_patroller',
|
|
31
|
+
tool: 'proponer_crear_vigilante',
|
|
32
|
+
descripcion: 'Prepara el alta de un vigilante (patrullero) en la organización. NO lo crea: le envía al cliente un resumen con un botón ' +
|
|
33
|
+
'para confirmarlo; al confirmar se crea y el cliente recibe el enlace personal de la app de ese vigilante y su QR. ' +
|
|
34
|
+
'Úsala cuando el cliente quiera dar de alta o añadir un vigilante. Solo hace falta el nombre; el teléfono del vigilante es opcional.',
|
|
35
|
+
params: createPatrollerParams,
|
|
36
|
+
rolMinimo: 'EDITOR',
|
|
37
|
+
rolDeOrganizacion: true,
|
|
38
|
+
async preparar(_ctx, p) {
|
|
39
|
+
// El bot fija el identificador antes de confirmar: si el alta responde con
|
|
40
|
+
// error pero se hizo, se recupera por él (es único en todo el sistema).
|
|
41
|
+
const identificador = newPatrollerIdentifier();
|
|
42
|
+
return { params: { ...p, identificador }, idempotencyKey: identificador };
|
|
43
|
+
},
|
|
44
|
+
resumen(p, { idioma, organizacion }) {
|
|
45
|
+
return segunIdioma(idioma, {
|
|
46
|
+
es: `Crear el vigilante «${p.nombre}»${p.telefono ? ` (teléfono ${p.telefono})` : ''} en ${organizacion}. Después te daré su enlace personal de la app.`,
|
|
47
|
+
en: `Create the guard «${p.nombre}»${p.telefono ? ` (phone ${p.telefono})` : ''} in ${organizacion}. Then I'll give you their personal app link.`,
|
|
48
|
+
fr: `Créer l'agent «${p.nombre}»${p.telefono ? ` (téléphone ${p.telefono})` : ''} dans ${organizacion}. Ensuite, je vous donnerai son lien personnel vers l'application.`,
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
async ejecutar(ctx, p) {
|
|
52
|
+
const identifier = p.identificador ?? ctx.idempotencyKey;
|
|
53
|
+
if (!identifier)
|
|
54
|
+
throw new Error('create_patroller sin identificador (no pasó por preparar)');
|
|
55
|
+
let v;
|
|
56
|
+
try {
|
|
57
|
+
v = await gateway.createPatroller({
|
|
58
|
+
organizationId: ctx.org.orgId,
|
|
59
|
+
name: p.nombre,
|
|
60
|
+
identifier,
|
|
61
|
+
...(p.telefono ? { phone: p.telefono } : {}),
|
|
62
|
+
}, ctx.token);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
// El identificador duplicado (un reintento de un alta que sí se hizo) es un 409
|
|
66
|
+
// PATROLLER_IDENTIFIER_TAKEN; un backend anterior respondía 500 (sale como dudoso).
|
|
67
|
+
const dudoso = maybeApplied(err) || (err instanceof PatrolTechApiError && err.status === 409);
|
|
68
|
+
const recovered = dudoso
|
|
69
|
+
? await gateway.getPatrollerByIdentifier(identifier, ctx.token).catch(() => null)
|
|
70
|
+
: null;
|
|
71
|
+
if (!recovered || recovered.organizationId !== ctx.org.orgId)
|
|
72
|
+
throw err;
|
|
73
|
+
v = recovered;
|
|
74
|
+
}
|
|
75
|
+
const link = `${urls.app}/${ctx.org.orgId}/${v.identifier}`;
|
|
76
|
+
// El bot no puede mandárselo al vigilante: le deja al admin el mensaje listo para reenviar.
|
|
77
|
+
const mensaje = guardAppMessage(v.name, link, ctx.language);
|
|
78
|
+
const texto = segunIdioma(ctx.language, {
|
|
79
|
+
es: `✅ Vigilante «${v.name}» creado en ${ctx.org.name}.\n\nSu enlace personal de la app: ${link}\n\n` +
|
|
80
|
+
`⚠️ Ese enlace permite entrar en la app como ${v.name} sin contraseña: reenvíaselo solo a esa persona, nunca a un grupo.\n\n` +
|
|
81
|
+
`Mensaje listo para reenviar a ${v.name} por WhatsApp o email:\n\n${mensaje}`,
|
|
82
|
+
en: `✅ Guard «${v.name}» created in ${ctx.org.name}.\n\nTheir personal app link: ${link}\n\n` +
|
|
83
|
+
`⚠️ This link lets anyone open the app as ${v.name} without a password: forward it only to them, never to a group.\n\n` +
|
|
84
|
+
`Message ready to forward to ${v.name} by WhatsApp or email:\n\n${mensaje}`,
|
|
85
|
+
fr: `✅ Agent «${v.name}» créé dans ${ctx.org.name}.\n\nSon lien personnel vers l'application : ${link}\n\n` +
|
|
86
|
+
`⚠️ Ce lien permet d'ouvrir l'application en tant que ${v.name} sans mot de passe : transférez-le uniquement à cette personne, jamais à un groupe.\n\n` +
|
|
87
|
+
`Message prêt à transférer à ${v.name} par WhatsApp ou e-mail :\n\n${mensaje}`,
|
|
88
|
+
});
|
|
89
|
+
// El mismo generador que el QR de un checkpoint (codifica cualquier texto; el pie es nombre + enlace).
|
|
90
|
+
return { texto, imagen: await checkpointQrImage({ code: link, name: v.name }) };
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
// rename_patroller
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
const editPatrollerParams = {
|
|
98
|
+
vigilante: z.string().trim().min(1).describe('Nombre actual del vigilante'),
|
|
99
|
+
nombre: z
|
|
100
|
+
.string()
|
|
101
|
+
.trim()
|
|
102
|
+
.min(1)
|
|
103
|
+
.max(255)
|
|
104
|
+
.optional()
|
|
105
|
+
.describe('Nombre nuevo. OMÍTELO si no cambia.'),
|
|
106
|
+
telefono: z
|
|
107
|
+
.string()
|
|
108
|
+
.trim()
|
|
109
|
+
.min(1)
|
|
110
|
+
.max(30)
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Teléfono nuevo del vigilante. OMÍTELO si no cambia.'),
|
|
113
|
+
vigilante_id: z.string().optional().describe(INTERNO),
|
|
114
|
+
};
|
|
115
|
+
export function editPatroller({ gateway }) {
|
|
116
|
+
return defineBotAction({
|
|
117
|
+
nombre: 'rename_patroller',
|
|
118
|
+
tool: 'proponer_editar_vigilante',
|
|
119
|
+
descripcion: 'Prepara cambiar el nombre y/o el teléfono de un vigilante (patrullero). NO lo cambia: le envía al cliente un resumen con un botón para ' +
|
|
120
|
+
'confirmarlo. Su identificador y su enlace de la app no cambian (no se pueden cambiar).',
|
|
121
|
+
params: editPatrollerParams,
|
|
122
|
+
rolMinimo: 'EDITOR',
|
|
123
|
+
rolDeOrganizacion: true,
|
|
124
|
+
async preparar(ctx, p) {
|
|
125
|
+
if (!p.nombre && !p.telefono)
|
|
126
|
+
return {
|
|
127
|
+
error: 'Falta qué cambiar: el nombre nuevo o el teléfono. Pregúntaselo al usuario.',
|
|
128
|
+
};
|
|
129
|
+
const { items } = await gateway.listPatrollers(ctx.org.orgId, ctx.token);
|
|
130
|
+
const r = resolver(p.vigilante, items, (v) => v.name, ['el vigilante', 'vigilantes'], {
|
|
131
|
+
idOf: (v) => v.identifier,
|
|
132
|
+
});
|
|
133
|
+
if ('error' in r)
|
|
134
|
+
return r;
|
|
135
|
+
return { params: { ...p, vigilante: r.item.name, vigilante_id: r.item.id } };
|
|
136
|
+
},
|
|
137
|
+
resumen(p, { idioma, organizacion }) {
|
|
138
|
+
const t = segunIdioma(idioma, {
|
|
139
|
+
es: { nombre: 'nombre', telefono: 'teléfono' },
|
|
140
|
+
en: { nombre: 'name', telefono: 'phone' },
|
|
141
|
+
fr: { nombre: 'nom', telefono: 'téléphone' },
|
|
142
|
+
});
|
|
143
|
+
const cambios = [
|
|
144
|
+
...(p.nombre ? [`${t.nombre} → «${p.nombre}»`] : []),
|
|
145
|
+
...(p.telefono ? [`${t.telefono} → ${p.telefono}`] : []),
|
|
146
|
+
].join('; ');
|
|
147
|
+
return segunIdioma(idioma, {
|
|
148
|
+
es: `Cambiar el vigilante «${p.vigilante}» de ${organizacion}: ${cambios}. Su enlace de la app no cambia.`,
|
|
149
|
+
en: `Change the guard «${p.vigilante}» of ${organizacion}: ${cambios}. Their app link stays the same.`,
|
|
150
|
+
fr: `Modifier l'agent «${p.vigilante}» de ${organizacion} : ${cambios}. Son lien vers l'application ne change pas.`,
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
async ejecutar(ctx, p) {
|
|
154
|
+
if (!p.vigilante_id)
|
|
155
|
+
throw new Error('rename_patroller sin vigilante_id (no pasó por preparar)');
|
|
156
|
+
const v = await gateway.updatePatroller({
|
|
157
|
+
id: p.vigilante_id,
|
|
158
|
+
...(p.nombre ? { name: p.nombre } : {}),
|
|
159
|
+
...(p.telefono ? { phone: p.telefono } : {}),
|
|
160
|
+
}, ctx.token);
|
|
161
|
+
const tel = (palabra) => (p.telefono ? `, ${palabra} ${p.telefono}` : '');
|
|
162
|
+
return {
|
|
163
|
+
texto: segunIdioma(ctx.language, {
|
|
164
|
+
es: `✅ Vigilante actualizado en ${ctx.org.name}: «${v.name}»${tel('teléfono')}. Su enlace de la app sigue siendo el mismo.`,
|
|
165
|
+
en: `✅ Guard updated in ${ctx.org.name}: «${v.name}»${tel('phone')}. Their app link stays the same.`,
|
|
166
|
+
fr: `✅ Agent mis à jour dans ${ctx.org.name} : «${v.name}»${tel('téléphone')}. Son lien vers l'application reste le même.`,
|
|
167
|
+
}),
|
|
168
|
+
};
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=patrollers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patrollers.js","sourceRoot":"","sources":["../../src/actions/patrollers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ActionDefinition, type ActionEnv } from './types.js';
|
|
2
|
+
export declare function addTimeWindow({ gateway }: ActionEnv): ActionDefinition;
|
|
3
|
+
export declare function deleteTimeWindow({ gateway }: ActionEnv): ActionDefinition;
|
|
4
|
+
//# sourceMappingURL=route-schedules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-schedules.d.ts","sourceRoot":"","sources":["../../src/actions/route-schedules.ts"],"names":[],"mappings":"AAeA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAYpF,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,GAAG,gBAAgB,CAqCtE;AAeD,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,GAAG,gBAAgB,CAyCzE"}
|