@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,146 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { segunIdioma } from '../domain/language.js';
|
|
3
|
+
import { ambito, ROL_LABEL_ACCION } from '../reads/support/roles.js';
|
|
4
|
+
import { ubicacionPedida } from './support/elegir-ubicacion.js';
|
|
5
|
+
import { buscarPorEmail, INTERNO, sinPlazaDeGestor } from './support/shared.js';
|
|
6
|
+
import { defineBotAction, ROLES, } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Invitar a una persona al panel. Cambiar el rol o quitar el acceso a
|
|
9
|
+
* quien ya está va en `user-roles.ts`. La organización sale SIEMPRE de la sesión.
|
|
10
|
+
*/
|
|
11
|
+
// Validación de forma, no de entrega: la API no comprueba que el email exista y el correo de invitación dirá si llega.
|
|
12
|
+
// Sin `<>,;:()[]"` ni punto final: lo que se cuela al copiarlo de una frase («…es luis@acme.test.»).
|
|
13
|
+
const EMAIL_RE = /^[^\s@<>,;:()[\]"]+@[^\s@<>,;:()[\]"]+\.[^\s@<>,;:()[\]".]+$/;
|
|
14
|
+
const inviteParams = {
|
|
15
|
+
nombre: z.string().trim().min(1).max(255).describe('Nombre de la persona'),
|
|
16
|
+
email: z.string().trim().min(1).max(255).describe('Email con el que entrará al panel'),
|
|
17
|
+
rol: z
|
|
18
|
+
.enum(ROLES)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('VIEWER (por defecto: solo ve la actividad; no ocupa plaza de gestor), EDITOR (gestiona checkpoints, rutas y vigilantes) o ' +
|
|
21
|
+
'ADMIN (todo, también usuarios y licencia). Usa VIEWER salvo que el cliente pida otro.'),
|
|
22
|
+
ubicacion: z
|
|
23
|
+
.string()
|
|
24
|
+
.trim()
|
|
25
|
+
.min(1)
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('SOLO si su acceso es a UNA ubicación: su nombre. OMÍTELO para toda la organización.'),
|
|
28
|
+
ubicacion_id: z.string().optional().describe(INTERNO),
|
|
29
|
+
};
|
|
30
|
+
export function inviteUser(env) {
|
|
31
|
+
const { gateway, urls } = env;
|
|
32
|
+
return defineBotAction({
|
|
33
|
+
nombre: 'invite_user',
|
|
34
|
+
tool: 'proponer_invitar_usuario',
|
|
35
|
+
descripcion: 'Prepara invitar a una persona al panel (dashboard) de la organización, con su propio usuario. NO la invita: le envía al cliente ' +
|
|
36
|
+
'un resumen con un botón para confirmarlo. Hace falta su nombre y su email; el rol es VIEWER (solo ver) salvo que pida otro, y el ' +
|
|
37
|
+
'acceso es a toda la organización salvo que diga una ubicación. Al confirmar le llega un correo para crear su contraseña.',
|
|
38
|
+
params: inviteParams,
|
|
39
|
+
rolMinimo: 'ADMIN',
|
|
40
|
+
rolDeOrganizacion: true,
|
|
41
|
+
async preparar(ctx, p) {
|
|
42
|
+
const email = p.email.trim().toLowerCase();
|
|
43
|
+
if (!EMAIL_RE.test(email))
|
|
44
|
+
return { error: `«${p.email}» no parece un email válido: pídeselo de nuevo al usuario.` };
|
|
45
|
+
const rol = p.rol ?? 'VIEWER';
|
|
46
|
+
let ubicacion;
|
|
47
|
+
if (p.ubicacion) {
|
|
48
|
+
// El backend no comprueba que la ubicación sea de la organización: el id sale SOLO de esta lista.
|
|
49
|
+
const u = ubicacionPedida(await gateway.listLocations(ctx.org.orgId, ctx.token), p.ubicacion, 'darle', false);
|
|
50
|
+
if ('error' in u)
|
|
51
|
+
return u;
|
|
52
|
+
ubicacion = u.item;
|
|
53
|
+
}
|
|
54
|
+
// Con un rol ya en ese mismo ámbito, el backend rechaza la invitación (rol único por ámbito).
|
|
55
|
+
const scopeId = ubicacion?.id ?? ctx.org.orgId;
|
|
56
|
+
const existente = buscarPorEmail(await gateway.listOrgUsers(ctx.org.orgId, ctx.token), email);
|
|
57
|
+
const deOrganizacion = existente?.roles.find((r) => r.ambito === 'ORGANIZATION' && r.scopeId === ctx.org.orgId);
|
|
58
|
+
if (existente && deOrganizacion && ubicacion) {
|
|
59
|
+
// El backend la aceptaría (otro ámbito), pero ya ve esa ubicación: un rol de ubicación encima solo confunde.
|
|
60
|
+
return {
|
|
61
|
+
error: `${existente.nombre} (${email}) ya tiene acceso a toda la organización como ${deOrganizacion.rol}, también a «${ubicacion.name}». ` +
|
|
62
|
+
'No hace falta invitarla; si quiere cambiarle el rol, propón proponer_cambiar_rol_usuario.',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const yaTiene = existente?.roles.find((r) => r.scopeId === scopeId && r.ambito === (ubicacion ? 'LOCATION' : 'ORGANIZATION'));
|
|
66
|
+
if (existente && yaTiene) {
|
|
67
|
+
return {
|
|
68
|
+
error: `${existente.nombre} (${email}) ya tiene acceso como ${yaTiene.rol} ${ambito('es', ubicacion?.name)}. ` +
|
|
69
|
+
'No hace falta invitarla; si quiere cambiarle el rol, propón proponer_cambiar_rol_usuario.',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// Después de «ya tiene acceso»: a quien ya está, el plan lleno no le afecta.
|
|
73
|
+
if (rol !== 'VIEWER') {
|
|
74
|
+
// Anticipa el 402 USER_LIMIT_REACHED: un VIEWER nunca ocupa asiento de gestor.
|
|
75
|
+
const lleno = await sinPlazaDeGestor(env, ctx, {
|
|
76
|
+
conPlan: 'ofrécele invitarla como VIEWER (solo ver), que no ocupa plaza,',
|
|
77
|
+
sinPlan: 'ofrécele invitarla como VIEWER (solo ver), que no ocupa plaza',
|
|
78
|
+
});
|
|
79
|
+
if (lleno)
|
|
80
|
+
return { error: lleno };
|
|
81
|
+
}
|
|
82
|
+
// El backend busca la cuenta por el email EXACTO: con otra capitalización crearía una segunda cuenta.
|
|
83
|
+
const emailCuenta = existente?.email.trim() ?? email;
|
|
84
|
+
return {
|
|
85
|
+
params: {
|
|
86
|
+
nombre: p.nombre,
|
|
87
|
+
email: emailCuenta,
|
|
88
|
+
rol,
|
|
89
|
+
ubicacion: ubicacion?.name,
|
|
90
|
+
ubicacion_id: ubicacion?.id,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
resumen(p, { idioma, organizacion }) {
|
|
95
|
+
const rol = ROL_LABEL_ACCION[p.rol ?? 'VIEWER'][idioma];
|
|
96
|
+
const donde = ambito(idioma, p.ubicacion);
|
|
97
|
+
return segunIdioma(idioma, {
|
|
98
|
+
es: `Invitar a ${p.nombre} (${p.email}) al panel de ${organizacion} como ${rol} ${donde}. Si aún no tiene cuenta en PatrolTech, le llegará un correo para crear su contraseña.`,
|
|
99
|
+
en: `Invite ${p.nombre} (${p.email}) to the ${organizacion} dashboard as ${rol} ${donde}. If they don't have a PatrolTech account yet, they'll get an email to set their password.`,
|
|
100
|
+
fr: `Inviter ${p.nombre} (${p.email}) sur le tableau de bord de ${organizacion} en tant que ${rol} ${donde}. Si cette personne n'a pas encore de compte PatrolTech, elle recevra un e-mail pour créer son mot de passe.`,
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
async ejecutar(ctx, p) {
|
|
104
|
+
const rolType = p.rol ?? 'VIEWER';
|
|
105
|
+
// Whitelist explícita (nunca `id`); la organización es la de la sesión y la ubicación la resuelta en `preparar`.
|
|
106
|
+
const input = {
|
|
107
|
+
organizationId: ctx.org.orgId,
|
|
108
|
+
name: p.nombre,
|
|
109
|
+
email: p.email,
|
|
110
|
+
roleType: rolType,
|
|
111
|
+
roleScope: p.ubicacion_id ? 'LOCATION' : 'ORGANIZATION',
|
|
112
|
+
...(p.ubicacion_id ? { locationId: p.ubicacion_id } : {}),
|
|
113
|
+
};
|
|
114
|
+
const r = await gateway.inviteUser(input, ctx.token);
|
|
115
|
+
const rol = ROL_LABEL_ACCION[rolType][ctx.language];
|
|
116
|
+
const donde = ambito(ctx.language, p.ubicacion);
|
|
117
|
+
const quien = `${p.nombre} (${p.email})`;
|
|
118
|
+
if (!r.cuentaNueva) {
|
|
119
|
+
return {
|
|
120
|
+
texto: segunIdioma(ctx.language, {
|
|
121
|
+
es: `✅ ${quien} ya tenía cuenta en PatrolTech: se le ha añadido el rol ${rol} ${donde} en ${ctx.org.name}. Le llega un aviso y entra en ${urls.dashboard} con su contraseña de siempre.`,
|
|
122
|
+
en: `✅ ${quien} already had a PatrolTech account: they've been given the ${rol} role ${donde} in ${ctx.org.name}. They'll get a notice and log in at ${urls.dashboard} with their usual password.`,
|
|
123
|
+
fr: `✅ ${quien} avait déjà un compte PatrolTech : le rôle ${rol} ${donde} lui a été ajouté dans ${ctx.org.name}. Cette personne reçoit un avis et se connecte sur ${urls.dashboard} avec son mot de passe habituel.`,
|
|
124
|
+
}),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
if (!r.emailEnviado) {
|
|
128
|
+
return {
|
|
129
|
+
texto: segunIdioma(ctx.language, {
|
|
130
|
+
es: `✅ ${quien} ya tiene acceso a ${ctx.org.name} como ${rol} ${donde}, pero el correo de invitación no se ha podido enviar. Que entre en ${urls.dashboard} y pulse «¿Olvidaste tu contraseña?» con ese email para crear su contraseña.`,
|
|
131
|
+
en: `✅ ${quien} now has access to ${ctx.org.name} as ${rol} ${donde}, but the invitation email couldn't be sent. Ask them to go to ${urls.dashboard} and click «Forgot your password?» with that email to set their password.`,
|
|
132
|
+
fr: `✅ ${quien} a maintenant accès à ${ctx.org.name} en tant que ${rol} ${donde}, mais l'e-mail d'invitation n'a pas pu être envoyé. Demandez-lui d'aller sur ${urls.dashboard} et de cliquer sur «Mot de passe oublié ?» avec cet e-mail pour créer son mot de passe.`,
|
|
133
|
+
}),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
texto: segunIdioma(ctx.language, {
|
|
138
|
+
es: `✅ Invitación enviada a ${quien} en ${ctx.org.name}, como ${rol} ${donde}. Le llega el correo «Te han invitado a PatrolTech» con un enlace para crear su contraseña; el enlace caduca en 72 h. Después entrará en ${urls.dashboard}.`,
|
|
139
|
+
en: `✅ Invitation sent to ${quien} in ${ctx.org.name}, as ${rol} ${donde}. They'll get an invitation email from PatrolTech with a link to set their password; the link expires in 72 h. Then they log in at ${urls.dashboard}.`,
|
|
140
|
+
fr: `✅ Invitation envoyée à ${quien} dans ${ctx.org.name}, en tant que ${rol} ${donde}. Cette personne reçoit un e-mail d'invitation de PatrolTech avec un lien pour créer son mot de passe ; le lien expire dans 72 h. Ensuite, elle se connecte sur ${urls.dashboard}.`,
|
|
141
|
+
}),
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/actions/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReadDeps } from '../reads/types.js';
|
|
2
|
+
import type { Catalog, Channel } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Dependencias del catálogo: las comunes (`gateway`, `logger`, `urls`) que
|
|
5
|
+
* reciben a la vez lecturas y acciones, más `offerFiles` de las lecturas.
|
|
6
|
+
*/
|
|
7
|
+
export type CatalogDeps = ReadDeps;
|
|
8
|
+
/**
|
|
9
|
+
* El catálogo único de capacidades para un canal: cada lectura y cada acción
|
|
10
|
+
* junto a sus metadatos. Una capacidad sin entrada es un error de programación
|
|
11
|
+
* (se perdería en silencio de todos los canales), no un caso a tolerar.
|
|
12
|
+
*
|
|
13
|
+
* En `mcp` los textos van SIEMPRE sin upsell (`upsell: false`), digan lo que
|
|
14
|
+
* digan las dependencias: ni nombres de plan ni «mejorar el plan».
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildCatalog(catalogDeps: CatalogDeps, opts: {
|
|
17
|
+
channel: Channel;
|
|
18
|
+
}): Catalog;
|
|
19
|
+
//# sourceMappingURL=buildCatalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildCatalog.d.ts","sourceRoot":"","sources":["../../src/catalog/buildCatalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAkB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AAUnC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAoB1F"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { actionCatalog } from '../actions/index.js';
|
|
2
|
+
import { readCapabilities } from '../reads/index.js';
|
|
3
|
+
import { ACTION_ENTRIES, READ_ENTRIES } from './entries.js';
|
|
4
|
+
function indexByCapability(entries) {
|
|
5
|
+
return new Map(entries.map((m) => [m.capability, m]));
|
|
6
|
+
}
|
|
7
|
+
/** ¿La ofrece este canal? Una entrada `off` no se ofrece en ninguno. */
|
|
8
|
+
const offeredTo = (meta, channel) => meta.status !== 'off' && meta.channels.includes(channel);
|
|
9
|
+
/**
|
|
10
|
+
* El catálogo único de capacidades para un canal: cada lectura y cada acción
|
|
11
|
+
* junto a sus metadatos. Una capacidad sin entrada es un error de programación
|
|
12
|
+
* (se perdería en silencio de todos los canales), no un caso a tolerar.
|
|
13
|
+
*
|
|
14
|
+
* En `mcp` los textos van SIEMPRE sin upsell (`upsell: false`), digan lo que
|
|
15
|
+
* digan las dependencias: ni nombres de plan ni «mejorar el plan».
|
|
16
|
+
*/
|
|
17
|
+
export function buildCatalog(catalogDeps, opts) {
|
|
18
|
+
const deps = opts.channel === 'mcp' ? { ...catalogDeps, upsell: false } : catalogDeps;
|
|
19
|
+
const readMetas = indexByCapability(READ_ENTRIES);
|
|
20
|
+
const actionMetas = indexByCapability(ACTION_ENTRIES);
|
|
21
|
+
const reads = readCapabilities(deps).map((read) => {
|
|
22
|
+
const meta = readMetas.get(read.name);
|
|
23
|
+
if (!meta)
|
|
24
|
+
throw new Error(`Lectura sin entrada en el catálogo: ${read.name}`);
|
|
25
|
+
return { meta, read };
|
|
26
|
+
});
|
|
27
|
+
const actions = actionCatalog(deps).map((action) => {
|
|
28
|
+
const meta = actionMetas.get(action.nombre);
|
|
29
|
+
if (!meta)
|
|
30
|
+
throw new Error(`Acción sin entrada en el catálogo: ${action.nombre}`);
|
|
31
|
+
return { meta, action };
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
reads: reads.filter(({ meta }) => offeredTo(meta, opts.channel)),
|
|
35
|
+
actions: actions.filter(({ meta }) => offeredTo(meta, opts.channel)),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=buildCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildCatalog.js","sourceRoot":"","sources":["../../src/catalog/buildCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAS5D,SAAS,iBAAiB,CAAC,OAAkC;IAC3D,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,wEAAwE;AACxE,MAAM,SAAS,GAAG,CAAC,IAAoB,EAAE,OAAgB,EAAW,EAAE,CACpE,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,WAAwB,EAAE,IAA0B;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IACtF,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Los parámetros de una capacidad con nombres, valores y descripciones en inglés, para que los vea
|
|
4
|
+
* el modelo. Lanza si a alguno le falta la descripción en inglés (un parámetro nuevo sin traducir).
|
|
5
|
+
*/
|
|
6
|
+
export declare function englishInputSchema(id: string, shape: z.ZodRawShape): z.ZodRawShape;
|
|
7
|
+
/**
|
|
8
|
+
* Los argumentos que mandó el modelo (en inglés) como los espera la capacidad (`shape`, sus
|
|
9
|
+
* parámetros en español). Lo que no es un parámetro de la capacidad se descarta.
|
|
10
|
+
*/
|
|
11
|
+
export declare function argsFromEnglish(shape: z.ZodRawShape, args: Record<string, unknown>): Record<string, unknown>;
|
|
12
|
+
/** Los datos que devuelve una capacidad con sus claves en inglés (los valores no se tocan). */
|
|
13
|
+
export declare function englishFields(value: unknown): unknown;
|
|
14
|
+
//# sourceMappingURL=english.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"english.d.ts","sourceRoot":"","sources":["../../src/catalog/english.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsV7B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAOlF;AA2BD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,CAAC,CAAC,WAAW,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQrD"}
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La cara en inglés de las capacidades para los canales en inglés (el MCP): las capacidades y el
|
|
3
|
+
* bot siguen con sus parámetros y campos en español; el consumidor traduce en su borde con esto.
|
|
4
|
+
*
|
|
5
|
+
* Diccionarios fijos, no i18n. Un parámetro nuevo de una capacidad del canal `mcp` sin
|
|
6
|
+
* nombre o descripción aquí hace fallar `englishInputSchema` (y el test del catálogo); un campo de
|
|
7
|
+
* salida nuevo sin entrada sale tal cual, en español.
|
|
8
|
+
*/
|
|
9
|
+
/** Nombres en inglés de parámetros y campos, los mismos en la entrada y en la salida. */
|
|
10
|
+
const NAMES = {
|
|
11
|
+
activa: 'active',
|
|
12
|
+
activar: 'enable',
|
|
13
|
+
alMenos: 'atLeast',
|
|
14
|
+
ambito: 'scope',
|
|
15
|
+
asignadaA: 'assignedTo',
|
|
16
|
+
asignadoA: 'assignedTo',
|
|
17
|
+
asignar_a: 'assignTo',
|
|
18
|
+
autor: 'author',
|
|
19
|
+
bateriaPct: 'batteryPct',
|
|
20
|
+
canal: 'channel',
|
|
21
|
+
cargando: 'charging',
|
|
22
|
+
categoria: 'category',
|
|
23
|
+
cerradaEn: 'closedAt',
|
|
24
|
+
checkpointsCreados: 'checkpointsCreated',
|
|
25
|
+
comentario: 'comment',
|
|
26
|
+
conexion: 'connection',
|
|
27
|
+
creadaEn: 'createdAt',
|
|
28
|
+
dentroAhora: 'insideNow',
|
|
29
|
+
descripcion: 'description',
|
|
30
|
+
desde: 'from',
|
|
31
|
+
dias: 'days',
|
|
32
|
+
dias_minimos: 'minDays',
|
|
33
|
+
diasSinEscanear: 'daysWithoutScan',
|
|
34
|
+
direccion: 'address',
|
|
35
|
+
dispositivo: 'device',
|
|
36
|
+
distanciaGpsM: 'gpsDistanceM',
|
|
37
|
+
enlace: 'link',
|
|
38
|
+
enlaceGeneral: 'generalLink',
|
|
39
|
+
enlaces: 'links',
|
|
40
|
+
entradas: 'entries',
|
|
41
|
+
entradasSinSalida: 'entriesWithoutExit',
|
|
42
|
+
escaneados: 'scanned',
|
|
43
|
+
escaneos: 'scans',
|
|
44
|
+
estado: 'status',
|
|
45
|
+
fecha: 'date',
|
|
46
|
+
fin: 'end',
|
|
47
|
+
fotos: 'photos',
|
|
48
|
+
franjas: 'timeWindows',
|
|
49
|
+
gestores: 'managers',
|
|
50
|
+
hasta: 'to',
|
|
51
|
+
hayEscaneos: 'hasScans',
|
|
52
|
+
hechos: 'done',
|
|
53
|
+
historial: 'history',
|
|
54
|
+
hora: 'time',
|
|
55
|
+
horarios: 'schedules',
|
|
56
|
+
identificador: 'identifier',
|
|
57
|
+
idioma: 'language',
|
|
58
|
+
incidencia: 'incident',
|
|
59
|
+
incidencias: 'incidents',
|
|
60
|
+
incluidos: 'included',
|
|
61
|
+
inicio: 'start',
|
|
62
|
+
limite: 'limit',
|
|
63
|
+
mensajeParaReenviar: 'messageToForward',
|
|
64
|
+
metodo: 'method',
|
|
65
|
+
modelo: 'model',
|
|
66
|
+
motivo: 'reason',
|
|
67
|
+
motivosSospecha: 'suspicionReasons',
|
|
68
|
+
nombre: 'name',
|
|
69
|
+
noValidos: 'invalid',
|
|
70
|
+
numero: 'number',
|
|
71
|
+
observador: 'viewer',
|
|
72
|
+
oculta: 'hidden',
|
|
73
|
+
operacion: 'operation',
|
|
74
|
+
orden_estricto: 'strictOrder',
|
|
75
|
+
otrasRondasCercanas: 'otherNearbyRounds',
|
|
76
|
+
pendientes: 'pending',
|
|
77
|
+
periodo: 'period',
|
|
78
|
+
pendientesRevision: 'pendingReview',
|
|
79
|
+
personas: 'people',
|
|
80
|
+
precisionGpsM: 'gpsAccuracyM',
|
|
81
|
+
prioridad: 'priority',
|
|
82
|
+
puesto: 'position',
|
|
83
|
+
que: 'what',
|
|
84
|
+
queHaceCadaRol: 'whatEachRoleDoes',
|
|
85
|
+
quien: 'who',
|
|
86
|
+
repetir_cada_min: 'repeatEveryMin',
|
|
87
|
+
reportadaPor: 'reportedBy',
|
|
88
|
+
resueltaEn: 'resolvedAt',
|
|
89
|
+
ronda: 'round',
|
|
90
|
+
ruta: 'route',
|
|
91
|
+
rutas: 'routes',
|
|
92
|
+
rutasCreadas: 'routesCreated',
|
|
93
|
+
salidas: 'exits',
|
|
94
|
+
siguientePaso: 'nextStep',
|
|
95
|
+
sinEscaneosVisibles: 'noVisibleScans',
|
|
96
|
+
sinSalidaRegistrada: 'withoutRecordedExit',
|
|
97
|
+
sistema: 'os',
|
|
98
|
+
sospechosos: 'suspicious',
|
|
99
|
+
solo_dentro: 'insideOnly',
|
|
100
|
+
solo_no_validos: 'invalidOnly',
|
|
101
|
+
solo_sospechosos: 'suspiciousOnly',
|
|
102
|
+
telefono: 'phone',
|
|
103
|
+
tipo: 'type',
|
|
104
|
+
titulo: 'title',
|
|
105
|
+
totalEscaneos: 'totalScans',
|
|
106
|
+
ubicacion: 'location',
|
|
107
|
+
ubicaciones: 'locations',
|
|
108
|
+
ultimoEscaneo: 'lastScan',
|
|
109
|
+
ultimos: 'latest',
|
|
110
|
+
usadas: 'used',
|
|
111
|
+
usados: 'used',
|
|
112
|
+
uso: 'usage',
|
|
113
|
+
usuarios: 'users',
|
|
114
|
+
validacion: 'validation',
|
|
115
|
+
validos: 'valid',
|
|
116
|
+
vigilante: 'guard',
|
|
117
|
+
vigilantes: 'guards',
|
|
118
|
+
vigilantesConAlgunEscaneo: 'guardsWithScans',
|
|
119
|
+
zona: 'zone',
|
|
120
|
+
zonaHoraria: 'timezone',
|
|
121
|
+
};
|
|
122
|
+
/** Valores de los parámetros enumerados (el resto de valores no se traduce). */
|
|
123
|
+
const VALUES = {
|
|
124
|
+
hoy: 'today',
|
|
125
|
+
ayer: 'yesterday',
|
|
126
|
+
ultimos_7_dias: 'last_7_days',
|
|
127
|
+
ultimos_30_dias: 'last_30_days',
|
|
128
|
+
todos: 'all',
|
|
129
|
+
entrada: 'entry',
|
|
130
|
+
salida: 'exit',
|
|
131
|
+
abierto: 'open',
|
|
132
|
+
en_progreso: 'in_progress',
|
|
133
|
+
resuelto: 'resolved',
|
|
134
|
+
cerrado: 'closed',
|
|
135
|
+
descartado: 'dismissed',
|
|
136
|
+
codigo_manual: 'manual_code',
|
|
137
|
+
añadir: 'add',
|
|
138
|
+
quitar: 'remove',
|
|
139
|
+
lun: 'mon',
|
|
140
|
+
mar: 'tue',
|
|
141
|
+
mie: 'wed',
|
|
142
|
+
jue: 'thu',
|
|
143
|
+
vie: 'fri',
|
|
144
|
+
sab: 'sat',
|
|
145
|
+
dom: 'sun',
|
|
146
|
+
};
|
|
147
|
+
const OMIT_IF_UNCHANGED = 'Omit it if it does not change.';
|
|
148
|
+
const DATE_FROM = 'Start date of the range, YYYY-MM-DD (never words like "yesterday").';
|
|
149
|
+
const DATE_TO = 'End date of the range (inclusive), YYYY-MM-DD.';
|
|
150
|
+
const PERIOD = 'Relative period. Use it when the user says "today", "yesterday", "last week", "last month" or similar.';
|
|
151
|
+
const ROUTE_FILTER = 'Route name. Omit it (do not send it empty) if the user has not given one.';
|
|
152
|
+
const DAYS = 'Days on which the time window STARTS.';
|
|
153
|
+
const TIME_FROM = 'Start time, HH:mm in the local time of the account.';
|
|
154
|
+
const TIME_TO = 'End time, HH:mm local. If it is earlier than `from`, it ends the next day (20:00-05:00).';
|
|
155
|
+
/**
|
|
156
|
+
* Descripción en inglés de cada parámetro que ve el modelo, por id del catálogo y parámetro
|
|
157
|
+
* (los anidados, con su ruta: `franjas.dias`).
|
|
158
|
+
*/
|
|
159
|
+
const DESCRIPTIONS = {
|
|
160
|
+
'rounds.get_checkpoints': { ruta: ROUTE_FILTER },
|
|
161
|
+
'rounds.get_round': {
|
|
162
|
+
ruta: ROUTE_FILTER,
|
|
163
|
+
fecha: 'Day of the round in the calendar of the account, YYYY-MM-DD. Omit it for the latest round.',
|
|
164
|
+
hora: 'Approximate start time, HH:mm in the local time of the account. Only together with `date`.',
|
|
165
|
+
},
|
|
166
|
+
'routes.get_schedules': { ruta: ROUTE_FILTER },
|
|
167
|
+
'scans.list_recent': {
|
|
168
|
+
periodo: PERIOD,
|
|
169
|
+
desde: DATE_FROM,
|
|
170
|
+
hasta: DATE_TO,
|
|
171
|
+
vigilante: 'Guard name: only their scans. Omit it unless asked.',
|
|
172
|
+
checkpoint: 'Checkpoint name: only its scans. Omit it unless asked.',
|
|
173
|
+
ubicacion: 'Location name: only its scans. Omit it unless asked.',
|
|
174
|
+
solo_sospechosos: 'true: only the scans flagged as suspicious.',
|
|
175
|
+
solo_no_validos: 'true: only the rejected (invalid) scans.',
|
|
176
|
+
},
|
|
177
|
+
'patrollers.get_stats': {
|
|
178
|
+
vigilante: 'Name of the guard (never empty: if you do not know it, ask).',
|
|
179
|
+
},
|
|
180
|
+
'patrollers.get_ranking': {
|
|
181
|
+
periodo: PERIOD,
|
|
182
|
+
desde: DATE_FROM,
|
|
183
|
+
hasta: DATE_TO,
|
|
184
|
+
},
|
|
185
|
+
'scans.count_by_patroller': {
|
|
186
|
+
periodo: `${PERIOD} Omit it (and from/to) for the last 7 days.`,
|
|
187
|
+
desde: DATE_FROM,
|
|
188
|
+
hasta: DATE_TO,
|
|
189
|
+
},
|
|
190
|
+
'checkpoints.list_unreviewed': {
|
|
191
|
+
ubicacion: 'Only the checkpoints of this location. Omit it for all.',
|
|
192
|
+
dias_minimos: 'Only the ones with at least this many days without a scan. Omit it to see all.',
|
|
193
|
+
},
|
|
194
|
+
'patrollers.get_app_links': {
|
|
195
|
+
vigilante: 'Name of the guard who will receive it: returns their link and `messageToForward`, the message to forward to them. Omit it to list the links of every guard.',
|
|
196
|
+
idioma: "Language of `messageToForward`: 'es', 'en' or 'fr' (any other language: 'en').",
|
|
197
|
+
},
|
|
198
|
+
'incidents.list': { estado: 'Only the incidents with this status. Omit it to see all.' },
|
|
199
|
+
'incidents.get': {
|
|
200
|
+
incidencia: 'Title (or part of it), `id` or number in the incident list (without status filter).',
|
|
201
|
+
},
|
|
202
|
+
'access.list_logs': {
|
|
203
|
+
periodo: 'Period. Omit it (and from/to) for the last 24 hours.',
|
|
204
|
+
desde: DATE_FROM,
|
|
205
|
+
hasta: DATE_TO,
|
|
206
|
+
ubicacion: 'Location name. Omit it for all.',
|
|
207
|
+
zona: 'Access zone, written as in the dashboard. Omit it for all.',
|
|
208
|
+
tipo: 'Only entries or only exits. Omit it for both.',
|
|
209
|
+
solo_dentro: 'true: only who is inside now (entries without an exit in the last 24 h; older ones come apart, as exits not recorded).',
|
|
210
|
+
},
|
|
211
|
+
'checkpoints.propose_create': {
|
|
212
|
+
nombre: 'Checkpoint name: short, describing the place, in normal case, e.g. "Main entrance". No generic prefixes such as "Checkpoint 1" and no numbering; if the user gives it that way, propose the clean version (they see it in the summary). If they insist on their format, keep it.',
|
|
213
|
+
ubicacion: 'Location where to create it. Ask for it only if there are several.',
|
|
214
|
+
metodo: 'qr (default: printed and stuck on the spot) or manual_code (the guard types the code; when it cannot be printed).',
|
|
215
|
+
},
|
|
216
|
+
'alerts.propose_set_preference': {
|
|
217
|
+
tipo: 'Alert type: pending_route, missed_route, upcoming_deadline, patroller_inactive (guard inactive), suspicious_scan, role_assignment, incident_created, incident_status_changed, incident_assigned or incident_comment.',
|
|
218
|
+
canal: 'Channel: email, push or whatsapp.',
|
|
219
|
+
activar: 'true = start receiving it on that channel; false = stop receiving it.',
|
|
220
|
+
},
|
|
221
|
+
'routes.propose_create': {
|
|
222
|
+
nombre: 'Route name.',
|
|
223
|
+
ubicacion: 'Location of the route. Ask for it only if there are several.',
|
|
224
|
+
checkpoints: 'Names of the checkpoints of the route, in the order they are walked.',
|
|
225
|
+
orden_estricto: 'true = they must be scanned in that order. Default: no.',
|
|
226
|
+
franjas: 'Schedules of the route, in the local time of the account.',
|
|
227
|
+
'franjas.dias': DAYS,
|
|
228
|
+
'franjas.desde': TIME_FROM,
|
|
229
|
+
'franjas.hasta': TIME_TO,
|
|
230
|
+
'franjas.repetir_cada_min': 'ONLY for one round every X minutes inside the window (60 = one round per hour): it is split into schedules of that length. Without it, the window is ONE schedule for a single round.',
|
|
231
|
+
},
|
|
232
|
+
'routes.propose_add_time_window': {
|
|
233
|
+
ruta: 'Route name.',
|
|
234
|
+
dias: DAYS,
|
|
235
|
+
desde: TIME_FROM,
|
|
236
|
+
hasta: TIME_TO,
|
|
237
|
+
},
|
|
238
|
+
'routes.propose_set_active': {
|
|
239
|
+
ruta: 'Route name.',
|
|
240
|
+
activa: 'true = activate it; false = deactivate it.',
|
|
241
|
+
},
|
|
242
|
+
'routes.propose_change_checkpoint': {
|
|
243
|
+
ruta: 'Route name.',
|
|
244
|
+
checkpoint: 'Checkpoint name.',
|
|
245
|
+
operacion: 'add (at the end of the route) or remove.',
|
|
246
|
+
},
|
|
247
|
+
'incidents.propose_update': {
|
|
248
|
+
incidencia: 'Title of the incident (or part of it), or its `id` as listed by the incident list.',
|
|
249
|
+
estado: `New status: open, in_progress (it must be assigned), resolved (needs a comment), closed (FINAL) or dismissed (needs a comment; FINAL). ${OMIT_IF_UNCHANGED}`,
|
|
250
|
+
comentario: 'Comment to add. Required for resolved and dismissed (the reason).',
|
|
251
|
+
asignar_a: 'Dashboard user to assign it to (name or email), or "me" for the user themself. Omit it if it is not reassigned.',
|
|
252
|
+
},
|
|
253
|
+
'patrollers.propose_rename': {
|
|
254
|
+
vigilante: 'Current name of the guard.',
|
|
255
|
+
nombre: `New name. ${OMIT_IF_UNCHANGED}`,
|
|
256
|
+
telefono: `New phone number of the guard. ${OMIT_IF_UNCHANGED}`,
|
|
257
|
+
},
|
|
258
|
+
'checkpoints.propose_edit': {
|
|
259
|
+
checkpoint: 'Current name of the checkpoint.',
|
|
260
|
+
ubicacion: 'Location of the checkpoint, if several share that name. Omit it otherwise.',
|
|
261
|
+
nombre: `New name. ${OMIT_IF_UNCHANGED}`,
|
|
262
|
+
descripcion: `New description. ${OMIT_IF_UNCHANGED}`,
|
|
263
|
+
},
|
|
264
|
+
'locations.propose_edit': {
|
|
265
|
+
ubicacion: 'Current name of the location. Ask for it only if there are several.',
|
|
266
|
+
nombre: `New name. ${OMIT_IF_UNCHANGED}`,
|
|
267
|
+
direccion: `New address. ${OMIT_IF_UNCHANGED} It cannot be left empty.`,
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
const english = (name) => NAMES[name] ?? name;
|
|
271
|
+
const englishValue = (value) => VALUES[value] ?? value;
|
|
272
|
+
const spanishValue = (value, values) => values.find((v) => englishValue(v) === value) ?? value;
|
|
273
|
+
/** El mismo esquema con los valores enumerados y las claves de objeto en inglés (conserva sus checks). */
|
|
274
|
+
function translateSchema(schema, describe, path) {
|
|
275
|
+
const s = schema;
|
|
276
|
+
const { def } = s;
|
|
277
|
+
switch (def.type) {
|
|
278
|
+
case 'optional':
|
|
279
|
+
case 'nullable':
|
|
280
|
+
case 'default':
|
|
281
|
+
return s.clone({
|
|
282
|
+
...def,
|
|
283
|
+
innerType: translateSchema(def.innerType, describe, path),
|
|
284
|
+
});
|
|
285
|
+
case 'array':
|
|
286
|
+
return s.clone({
|
|
287
|
+
...def,
|
|
288
|
+
element: translateSchema(def.element, () => '', path),
|
|
289
|
+
});
|
|
290
|
+
case 'enum': {
|
|
291
|
+
const values = Object.values(def.entries).map(englishValue);
|
|
292
|
+
return s.clone({ ...def, entries: Object.fromEntries(values.map((v) => [v, v])) });
|
|
293
|
+
}
|
|
294
|
+
case 'object':
|
|
295
|
+
return s.clone({
|
|
296
|
+
...def,
|
|
297
|
+
shape: translateShape(def.shape, describe, `${path}.`),
|
|
298
|
+
});
|
|
299
|
+
default:
|
|
300
|
+
return schema;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function translateShape(shape, describe, prefix = '') {
|
|
304
|
+
return Object.fromEntries(Object.entries(shape).map(([name, schema]) => {
|
|
305
|
+
const translated = translateSchema(schema, describe, `${prefix}${name}`);
|
|
306
|
+
return [english(name), translated.describe(describe(`${prefix}${name}`))];
|
|
307
|
+
}));
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Los parámetros de una capacidad con nombres, valores y descripciones en inglés, para que los vea
|
|
311
|
+
* el modelo. Lanza si a alguno le falta la descripción en inglés (un parámetro nuevo sin traducir).
|
|
312
|
+
*/
|
|
313
|
+
export function englishInputSchema(id, shape) {
|
|
314
|
+
const descriptions = DESCRIPTIONS[id] ?? {};
|
|
315
|
+
return translateShape(shape, (path) => {
|
|
316
|
+
const description = descriptions[path];
|
|
317
|
+
if (!description)
|
|
318
|
+
throw new Error(`No English description for the param ${id}.${path}`);
|
|
319
|
+
return description;
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
/** Un valor en inglés de vuelta a lo que espera la capacidad, guiado por su esquema en español. */
|
|
323
|
+
function toSpanish(schema, value) {
|
|
324
|
+
const { def } = schema;
|
|
325
|
+
switch (def.type) {
|
|
326
|
+
case 'optional':
|
|
327
|
+
case 'nullable':
|
|
328
|
+
case 'default':
|
|
329
|
+
return toSpanish(def.innerType, value);
|
|
330
|
+
case 'array':
|
|
331
|
+
return Array.isArray(value)
|
|
332
|
+
? value.map((v) => toSpanish(def.element, v))
|
|
333
|
+
: value;
|
|
334
|
+
case 'enum':
|
|
335
|
+
return typeof value === 'string'
|
|
336
|
+
? spanishValue(value, Object.values(def.entries))
|
|
337
|
+
: value;
|
|
338
|
+
case 'object':
|
|
339
|
+
return value && typeof value === 'object'
|
|
340
|
+
? argsFromEnglish(def.shape, value)
|
|
341
|
+
: value;
|
|
342
|
+
default:
|
|
343
|
+
return value;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Los argumentos que mandó el modelo (en inglés) como los espera la capacidad (`shape`, sus
|
|
348
|
+
* parámetros en español). Lo que no es un parámetro de la capacidad se descarta.
|
|
349
|
+
*/
|
|
350
|
+
export function argsFromEnglish(shape, args) {
|
|
351
|
+
const out = {};
|
|
352
|
+
for (const [name, schema] of Object.entries(shape)) {
|
|
353
|
+
const value = args[english(name)];
|
|
354
|
+
if (value !== undefined)
|
|
355
|
+
out[name] = toSpanish(schema, value);
|
|
356
|
+
}
|
|
357
|
+
return out;
|
|
358
|
+
}
|
|
359
|
+
/** Los datos que devuelve una capacidad con sus claves en inglés (los valores no se tocan). */
|
|
360
|
+
export function englishFields(value) {
|
|
361
|
+
if (Array.isArray(value))
|
|
362
|
+
return value.map(englishFields);
|
|
363
|
+
if (value && Object.getPrototypeOf(value) === Object.prototype) {
|
|
364
|
+
return Object.fromEntries(Object.entries(value).map(([key, v]) => [english(key), englishFields(v)]));
|
|
365
|
+
}
|
|
366
|
+
return value;
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=english.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"english.js","sourceRoot":"","sources":["../../src/catalog/english.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CapabilityMeta } from './types.js';
|
|
2
|
+
/** Las 25 lecturas, con el nombre que tienen en el bot. */
|
|
3
|
+
export declare const READ_ENTRIES: readonly CapabilityMeta[];
|
|
4
|
+
/** Las 19 acciones de escritura, con el nombre de `BOT_ACTIONS`. */
|
|
5
|
+
export declare const ACTION_ENTRIES: readonly CapabilityMeta[];
|
|
6
|
+
//# sourceMappingURL=entries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/catalog/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,YAAY,CAAC;AA+C1D,2DAA2D;AAC3D,eAAO,MAAM,YAAY,EAAE,SAAS,cAAc,EAuUjD,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,cAAc,EAAE,SAAS,cAAc,EA0PnD,CAAC"}
|