├── .dockerignore ├── .gitattributes ├── .githooks ├── commit-msg ├── pre-commit └── prepare-commit-msg ├── .github ├── actions │ ├── build-and-upload-plugin │ │ └── action.yml │ ├── copy-plugin-to-release-location │ │ └── action.yml │ ├── deploy-multiple-helplines │ │ └── action.yml │ ├── deployment-matrix │ │ ├── README.md │ │ ├── action.yml │ │ └── update_matrix.py │ ├── determine-target-helplines-action │ │ └── action.yml │ ├── generate-pre-release │ │ ├── action.yml │ │ ├── generate-next-tag.ts │ │ ├── package-lock.json │ │ ├── package.json │ │ └── tsconfig.json │ ├── generate-production-release │ │ └── action.yml │ ├── install-flex-plugin │ │ └── action.yml │ ├── notify-deploys │ │ └── action.yml │ ├── notify-translations │ │ └── action.yml │ └── run-e2e-tests │ │ └── action.yml ├── dependabot.yml ├── pull_request_template.md ├── scripts │ └── setupDeployFormDefinitionsEnv.sh └── workflows │ ├── check-license-header.yml │ ├── config │ └── environment-region-map.json │ ├── deploy-form-definitions.yml │ ├── deploy-multiple-helplines.yml │ ├── e2e-lambda-deploy.yml │ ├── e2e-test.yml │ ├── flex-aselo-development-deploy.yml │ ├── flex-check-translations.yml │ ├── flex-ci.yml │ ├── flex-deploy-all-production-helplines.yml │ ├── flex-deploy-all-staging-helplines.yml │ ├── flex-deploy.yml │ ├── global-ci.yml │ ├── global-production-release-tag.yml │ ├── global-qa-release-tag.yml │ ├── run-testrigor-regression-tests.yml │ ├── run-testrigor-smoke-tests.yml │ ├── terraform-plan.yml │ ├── twilio-lambda-ci.yml │ ├── twilio-lambda-deploy.yml │ ├── webchat-aselo-development-deploy.yml │ ├── webchat-ci.yml │ ├── webchat-deploy-all-production-helplines.yml │ ├── webchat-deploy-all-staging-helplines.yml │ └── webchat-deploy.yml ├── .gitignore ├── LICENSE ├── PRGuidelines.md ├── README.md ├── e2e-tests ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .nvmrc ├── Dockerfile ├── README.md ├── agent-desktop.ts ├── artifacts.ts ├── browser-logs │ └── index.ts ├── browser.ts ├── case.ts ├── caseList.ts ├── chatModel.ts ├── chatScripts.ts ├── config.ts ├── contactForm.ts ├── deleteChatChannels.ts ├── docker-entrypoint.sh ├── flexChat.ts ├── global-setup.ts ├── hrm │ ├── clearOfflineTask.ts │ └── hrmRequest.ts ├── lambda │ └── handler.js ├── notificationBar.ts ├── okta │ └── sso-login.ts ├── package-lock.json ├── package.json ├── playwright.config.ts ├── referrableResources.ts ├── skipTest.ts ├── ssmClient.ts ├── tasks.ts ├── tests │ ├── caselist.spec.ts │ ├── login.spec.ts │ ├── offlineContact.spec.ts │ ├── referrableResources.spec.ts │ └── webchat.spec.ts ├── tsconfig.eslint.json ├── tsconfig.json ├── twilio │ ├── channels.ts │ ├── tasks.ts │ └── worker.ts ├── ui-tests │ ├── aselo-service-mocks │ │ ├── aselo-page.ts │ │ ├── form-definitions.ts │ │ ├── global-context.ts │ │ ├── hrm │ │ │ ├── cases.ts │ │ │ ├── contacts.ts │ │ │ ├── e2e.json │ │ │ └── permissions.ts │ │ ├── local-resources.ts │ │ ├── serverless │ │ │ ├── issueSyncToken.ts │ │ │ ├── listWorkerQueues.ts │ │ │ └── populateCounselors.ts │ │ ├── service-configuration.ts │ │ ├── startup-mocks.ts │ │ └── task.ts │ ├── flex-in-a-box │ │ ├── flex-auth.ts │ │ ├── global-context.ts │ │ ├── local-resources.ts │ │ ├── proxied-endpoints.ts │ │ ├── service-mocks │ │ │ ├── authentication.ts │ │ │ ├── channels.ts │ │ │ └── configuration.ts │ │ ├── twilio-channel-socket.ts │ │ ├── twilio-chunderw-socket.ts │ │ ├── twilio-worker.ts │ │ ├── twilio-wss-mock-server.ts │ │ ├── twilio-wss-socket-type.ts │ │ ├── twilsock-live-query.ts │ │ ├── twilsock-socket.ts │ │ └── wss-mock-server.ts │ ├── playwright.ui-test.config.ts │ ├── tests │ │ ├── agent-desktop.spec.ts │ │ └── case-list.spec.ts │ └── ui-global-setup.ts ├── webchat.ts └── workerStatus.ts ├── lambdas ├── .eslintrc.js ├── .prettierrc ├── Dockerfile ├── account-scoped │ ├── jest.config.js │ ├── package.json │ ├── setTestEnvVars.js │ ├── src │ │ ├── Result.ts │ │ ├── albResponses.ts │ │ ├── channelCapture │ │ │ ├── captureChannelWithBot.ts │ │ │ ├── channelCaptureHandlers.ts │ │ │ ├── chatbotCallback.ts │ │ │ ├── chatbotCallbackCleanup.ts │ │ │ ├── hrmDataManipulation.ts │ │ │ ├── index.ts │ │ │ ├── insightsService.ts │ │ │ ├── lexClient.ts │ │ │ └── postSurveyListener.ts │ │ ├── conference │ │ │ ├── addParticipant.ts │ │ │ ├── getParticipant.ts │ │ │ ├── removeParticipant.ts │ │ │ ├── statusCallback.protected.ts │ │ │ └── updateParticipant.ts │ │ ├── configuration │ │ │ ├── aseloConfiguration.ts │ │ │ └── twilioConfiguration.ts │ │ ├── conversation │ │ │ └── addTaskSidToChannelAttributesTaskRouterListener.ts │ │ ├── hrm │ │ │ ├── addHangupByTaskRouterListener.ts │ │ │ ├── createHrmContactTaskRouterListener.ts │ │ │ ├── formDefinitionsCache.ts │ │ │ ├── getProfileFlagsForIdentifier.ts │ │ │ ├── hrmAccountId.ts │ │ │ ├── internalHrmRequest.ts │ │ │ ├── populateHrmContactFormFromTaskByKeys.ts │ │ │ ├── populateHrmContactFormFromTaskByMappings.ts │ │ │ └── sanitizeIdentifier.ts │ │ ├── httpErrors.ts │ │ ├── httpTypes.ts │ │ ├── index.ts │ │ ├── router.ts │ │ ├── ssmCache.ts │ │ ├── task │ │ │ ├── addCustomerExternalIdTaskRouterListener.ts │ │ │ ├── addInitialHangUpByTaskRouterListener.ts │ │ │ └── patchTaskAttributes.ts │ │ ├── taskrouter │ │ │ ├── eventFields.ts │ │ │ ├── eventTypes.ts │ │ │ ├── index.ts │ │ │ └── taskrouterEventHandler.ts │ │ ├── twilioTypes.ts │ │ └── validation │ │ │ ├── flexToken.ts │ │ │ ├── method.ts │ │ │ └── twilioWebhook.ts │ ├── tests │ │ ├── service │ │ │ ├── expectToParseAsDate.ts │ │ │ ├── hrm │ │ │ │ ├── createContact.test.ts │ │ │ │ └── getProfileFlagsForIdentifier.test.ts │ │ │ ├── lambdaAlbFetch.ts │ │ │ └── sandbox │ │ │ │ ├── mockFormDefinitions.ts │ │ │ │ ├── mockHrm.ts │ │ │ │ ├── mockServiceConfiguration.ts │ │ │ │ ├── mockSsm.ts │ │ │ │ ├── mockTaskRouter.ts │ │ │ │ └── mockingProxy.ts │ │ ├── testHrmTypes.ts │ │ ├── testHrmValues.ts │ │ ├── testTwilioTypes.ts │ │ ├── testTwilioValues.ts │ │ └── unit │ │ │ ├── RecursivePartial.ts │ │ │ ├── conversation │ │ │ └── addTaskSidToChannelAttributesTaskRouterListener.test.ts │ │ │ ├── hrm │ │ │ ├── createHrmContactTaskRouterListener.test.ts │ │ │ ├── getProfileFlagsForIdentifier.test.ts │ │ │ ├── populateHrmContactFormFromTaskByKeys.test.ts │ │ │ ├── populateHrmContactFormFromTaskByMappings.test.ts │ │ │ ├── sanitizeIdentifier.test.ts │ │ │ └── testContacts.ts │ │ │ ├── mockServiceConfiguration.ts │ │ │ └── taskrouter │ │ │ └── taskrouterEventHandler.test.ts │ ├── tsconfig.build.json │ └── tsconfig.json ├── package-lock.json ├── package.json ├── packages │ ├── hrm-form-definitions │ │ ├── .eslintignore │ │ ├── .gitignore │ │ ├── .nvmrc │ │ ├── .prettierrc │ │ ├── babel.config.js │ │ ├── form-definitions │ │ │ ├── as │ │ │ │ ├── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── PrepopulateMappings.json │ │ │ │ │ ├── README.md │ │ │ │ │ ├── caseForms │ │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ │ ├── ChickenForm.json │ │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ │ ├── Messages.json │ │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ │ ├── ProfileOverview.json │ │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ │ └── v2 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── README.md │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── EighthListCaseSectionForm.json │ │ │ │ │ ├── FifthListCaseSectionForm.json │ │ │ │ │ ├── FirstListCaseSectionForm.json │ │ │ │ │ ├── FourthListCaseSectionForm.json │ │ │ │ │ ├── SecondListCaseSectionForm.json │ │ │ │ │ ├── SeventhListCaseSectionForm.json │ │ │ │ │ ├── SixthListCaseSectionForm.json │ │ │ │ │ ├── ThirdListCaseSectionForm.json │ │ │ │ │ └── TimelineCaseSectionForm.json │ │ │ │ │ ├── flexUiLocales.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ ├── ProfileOverview.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── br │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── ca │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── cl │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── PrepopulateMappings.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ ├── oneToOneConfigSpec.json │ │ │ │ │ └── postSurvey.private.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── co │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── e2e │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── et │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── hu │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── README.md │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── in │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── jm │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── mt │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── CaseSummaryForm.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── mw │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── nz │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── ReferenceData.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── ph │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── ReferenceData.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── sg │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── th │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── ReferenceData.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── tz │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── ReferenceData.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── ukmh │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── CaseSummaryForm.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── usch │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── ENFollowUpForm.json │ │ │ │ │ ├── ExternalNotificationForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ ├── ProfileOverview.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── uscr │ │ │ │ └── v1 │ │ │ │ │ ├── BlockedEmojis.json │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── PrepopulateKeys.json │ │ │ │ │ ├── PrepopulateMappings.json │ │ │ │ │ ├── README.md │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── AssignedResponderForm.json │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── CaseReportForm.json │ │ │ │ │ ├── IncidentReportForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PersonExperiencingHomelessnessForm.json │ │ │ │ │ ├── SafetyPlanForm.json │ │ │ │ │ └── SudSurveyForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── flexUiLocales.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── za │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ ├── zm │ │ │ │ └── v1 │ │ │ │ │ ├── CallTypeButtons.json │ │ │ │ │ ├── CannedResponses.json │ │ │ │ │ ├── CaseFilters.json │ │ │ │ │ ├── CaseSections.json │ │ │ │ │ ├── CaseStatus.json │ │ │ │ │ ├── FlexUiLocales.json │ │ │ │ │ ├── HelplineInformation.json │ │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ │ ├── caseForms │ │ │ │ │ ├── CaseOverview.json │ │ │ │ │ ├── DocumentForm.json │ │ │ │ │ ├── HouseholdForm.json │ │ │ │ │ ├── IncidentForm.json │ │ │ │ │ ├── NoteForm.json │ │ │ │ │ ├── PerpetratorForm.json │ │ │ │ │ └── ReferralForm.json │ │ │ │ │ ├── customStrings │ │ │ │ │ ├── Messages.json │ │ │ │ │ └── Substitutions.json │ │ │ │ │ ├── insights │ │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ │ ├── profileForms │ │ │ │ │ ├── FlagDurations.json │ │ │ │ │ └── Sections.json │ │ │ │ │ └── tabbedForms │ │ │ │ │ ├── CallerInformationTab.json │ │ │ │ │ ├── CaseInformationTab.json │ │ │ │ │ ├── ChildInformationTab.json │ │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ │ └── IssueCategorizationTab.json │ │ │ └── zw │ │ │ │ └── v1 │ │ │ │ ├── CallTypeButtons.json │ │ │ │ ├── CannedResponses.json │ │ │ │ ├── CaseFilters.json │ │ │ │ ├── CaseSections.json │ │ │ │ ├── CaseStatus.json │ │ │ │ ├── FlexUiLocales.json │ │ │ │ ├── HelplineInformation.json │ │ │ │ ├── LayoutDefinitions.json │ │ │ │ ├── ReferenceData.json │ │ │ │ ├── caseForms │ │ │ │ ├── CaseOverview.json │ │ │ │ ├── DocumentForm.json │ │ │ │ ├── HouseholdForm.json │ │ │ │ ├── IncidentForm.json │ │ │ │ ├── NoteForm.json │ │ │ │ ├── PerpetratorForm.json │ │ │ │ └── ReferralForm.json │ │ │ │ ├── customStrings │ │ │ │ ├── Messages.json │ │ │ │ └── Substitutions.json │ │ │ │ ├── insights │ │ │ │ ├── oneToManyConfigSpecs.json │ │ │ │ └── oneToOneConfigSpec.json │ │ │ │ ├── profileForms │ │ │ │ ├── FlagDurations.json │ │ │ │ └── Sections.json │ │ │ │ └── tabbedForms │ │ │ │ ├── CallerInformationTab.json │ │ │ │ ├── CaseInformationTab.json │ │ │ │ ├── ChildInformationTab.json │ │ │ │ ├── ContactlessTaskTab.json │ │ │ │ └── IssueCategorizationTab.json │ │ ├── jest.config.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── __tests__ │ │ │ │ ├── definitionVersionId.ts │ │ │ │ ├── fetchDefinitionsMock.ts │ │ │ │ ├── formDefinition │ │ │ │ │ └── loadDefinition.test.ts │ │ │ │ ├── loadLocalJson.ts │ │ │ │ └── specification │ │ │ │ │ ├── generate.test.ts │ │ │ │ │ ├── specification.test.ts │ │ │ │ │ ├── validate.test.ts │ │ │ │ │ └── validateDefinitions.test.ts │ │ │ ├── aseloForms.ts │ │ │ ├── formDefinition │ │ │ │ ├── formSelector │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── prepopulateContactFormSelector.ts │ │ │ │ │ └── selectFormsFromAboutSelfSurveyQuestion.ts │ │ │ │ ├── index.ts │ │ │ │ ├── insightsConfig.ts │ │ │ │ ├── layoutVersion.ts │ │ │ │ ├── loadDefinition.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ └── specification │ │ │ │ ├── generate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── specification.ts │ │ │ │ └── validate.ts │ │ ├── tsconfig.eslint.json │ │ └── tsconfig.json │ ├── hrm-types │ │ ├── package.json │ │ ├── src │ │ │ ├── callType.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ └── tsconfig.json ├── tsconfig.base.json ├── tsconfig.eslint.json └── tsconfig.json ├── license-header.tpl ├── package.json ├── plugin-hrm-form ├── .env ├── .env.production ├── .eslintrc.json ├── .gitignore ├── .npmrc ├── .nvmrc ├── .prettierrc.js ├── .storybook │ ├── main.ts │ └── preview.ts ├── README.md ├── babel.config.js ├── jest.config.js ├── package-lock.json ├── package.json ├── public │ ├── appConfig.template.deploy.js │ ├── appConfig.template.e2e.js │ ├── appConfig.template.legacy-e2e.js │ ├── plugins.json │ └── plugins.local.build.json ├── src │ ├── HrmFormPlugin.tsx │ ├── ___tests__ │ │ ├── FieldText.test.js │ │ ├── RecursivePartial.ts │ │ ├── StandaloneSearch.test.tsx │ │ ├── TabPressWrapper.test.tsx │ │ ├── __snapshots__ │ │ │ └── FieldText.test.js.snap │ │ ├── callTypeButtons │ │ │ ├── CallTypeButtons.test.tsx │ │ │ └── NonDataCallTypeDialog.test.js │ │ ├── channels │ │ │ └── setUpChannels.test.ts │ │ ├── components │ │ │ ├── CSAMReport │ │ │ │ ├── CSAMReport.test.tsx │ │ │ │ └── csamReportApi.test.ts │ │ │ ├── OfflineContact │ │ │ │ └── AddOfflineContactButton.test.tsx │ │ │ ├── Pagination.test.js │ │ │ ├── PreviousContactsBanner.test.tsx │ │ │ ├── case │ │ │ │ ├── AddEditCaseItem.test.tsx │ │ │ │ ├── Case.test.tsx │ │ │ │ ├── CaseHome.test.tsx │ │ │ │ ├── ViewCaseItem.test.tsx │ │ │ │ └── caseOverview │ │ │ │ │ └── EditCaseOverview.test.tsx │ │ │ ├── caseList │ │ │ │ ├── CaseList.test.tsx │ │ │ │ └── filters │ │ │ │ │ ├── CaseListFilterProvider.test.tsx │ │ │ │ │ └── dateFilters.test.tsx │ │ │ ├── common │ │ │ │ ├── AddTaskButton.test.js │ │ │ │ ├── CategoryWithTooltip.test.js │ │ │ │ └── forms │ │ │ │ │ ├── getInitialValue.test.tsx │ │ │ │ │ └── listbox-multiselect.test.tsx │ │ │ ├── contact │ │ │ │ ├── IssueCategorizationSectionForm.test.tsx │ │ │ │ └── contactDetailsSectionFormApi.test.ts │ │ │ ├── forms │ │ │ │ ├── components │ │ │ │ │ └── customContactComponent.test.tsx │ │ │ │ └── inputGenerator.test.tsx │ │ │ ├── queuesStatus │ │ │ │ ├── QueuesStatus.test.tsx │ │ │ │ ├── QueuesStatusWriter.test.js │ │ │ │ └── helpers.test.js │ │ │ ├── teamsView │ │ │ │ └── convertDurationToSeconds.test.ts │ │ │ └── transfer │ │ │ │ ├── AcceptTransferButton.test.js │ │ │ │ ├── RejectTransferButton.test.js │ │ │ │ └── TransferButton.test.tsx │ │ ├── dateAndTimeMocks.ts │ │ ├── fullStory │ │ │ └── fullStory.test.ts │ │ ├── helpers.ts │ │ ├── mockFetchDefinitions.ts │ │ ├── mockGetConfig.ts │ │ ├── mockStyled.ts │ │ ├── notifications │ │ │ ├── newMessage.test.ts │ │ │ └── reservedTask.test.ts │ │ ├── permissions │ │ │ └── index.test.ts │ │ ├── search │ │ │ ├── ContactPreview.test.tsx │ │ │ ├── Search.test.tsx │ │ │ └── SearchResults.test.tsx │ │ ├── services │ │ │ ├── CaseService.test.ts │ │ │ ├── ContactService.test.ts │ │ │ ├── ProfileService.test.ts │ │ │ ├── ResourcesService.test.ts │ │ │ ├── caseSectionService.test.ts │ │ │ ├── fetchApi.test.ts │ │ │ ├── fetchHrmApi.test.ts │ │ │ ├── fetchProtectedApi.test.ts │ │ │ └── fetchResourcesApi.test.ts │ │ ├── states │ │ │ ├── actions.test.ts │ │ │ ├── case │ │ │ │ ├── caseStatus.test.ts │ │ │ │ ├── caseWorkingCopy.test.ts │ │ │ │ ├── reducer.test.ts │ │ │ │ ├── saveCase.test.ts │ │ │ │ ├── sections │ │ │ │ │ ├── caseSectionUpdates.test.ts │ │ │ │ │ ├── get.test.ts │ │ │ │ │ ├── selectCaseItemHistory.test.ts │ │ │ │ │ └── update.test.ts │ │ │ │ ├── selectCaseHelplineData.test.ts │ │ │ │ └── timeline.test.ts │ │ │ ├── caseList │ │ │ │ ├── listContent.test.ts │ │ │ │ └── settings.test.ts │ │ │ ├── conferencing │ │ │ │ └── conferencing.test.ts │ │ │ ├── configuration │ │ │ │ ├── actions.test.ts │ │ │ │ ├── changeLanguage.test.ts │ │ │ │ ├── reducer.test.ts │ │ │ │ └── selectCounselorsHash.test.ts │ │ │ ├── contacts │ │ │ │ ├── categories.test.ts │ │ │ │ ├── contactDetails.test.ts │ │ │ │ ├── contactDetailsAdapter.test.ts │ │ │ │ ├── contactIdentifier.test.ts │ │ │ │ ├── existingContacts.test.ts │ │ │ │ ├── issueCategorizationStateApi.test.ts │ │ │ │ ├── resourceReferral.test.ts │ │ │ │ ├── saveContact.test.ts │ │ │ │ └── selectContactSaveStatus.test.ts │ │ │ ├── csam-report │ │ │ │ ├── actions.test.ts │ │ │ │ ├── existingContactExternalReport.test.ts │ │ │ │ └── reducer.test.ts │ │ │ ├── getUpdatedDate.test.ts │ │ │ ├── queuesStatus │ │ │ │ ├── actions.test.ts │ │ │ │ └── reducer.test.ts │ │ │ ├── resources │ │ │ │ ├── resources.test.ts │ │ │ │ └── search.test.ts │ │ │ ├── routing │ │ │ │ ├── actions.test.ts │ │ │ │ ├── getRoute.test.ts │ │ │ │ └── reducer.test.ts │ │ │ └── search │ │ │ │ ├── actions.test.ts │ │ │ │ └── reducer.test.ts │ │ ├── testCases.ts │ │ ├── testContacts.ts │ │ ├── transfer │ │ │ ├── formDataTransfer.test.ts │ │ │ └── transferTaskState.test.ts │ │ ├── translations │ │ │ ├── index.test.ts │ │ │ └── legacy.test.ts │ │ └── utils │ │ │ ├── formatters.test.js │ │ │ ├── mappers.test.js │ │ │ ├── prepopulateForm.test.ts │ │ │ ├── setUpActions.test.ts │ │ │ └── setUpTaskRouterListeners.test.ts │ ├── authentication.ts │ ├── channels │ │ ├── colors.ts │ │ └── setUpChannels.tsx │ ├── components │ │ ├── AddCaseButton.tsx │ │ ├── AseloMessaging │ │ │ ├── AseloMessageInput │ │ │ │ ├── AseloMessageInput.tsx │ │ │ │ ├── index.ts │ │ │ │ └── styles.tsx │ │ │ ├── AseloMessageList.tsx │ │ │ └── index.ts │ │ ├── CSAMReport │ │ │ ├── CSAMReport.tsx │ │ │ ├── CSAMReportChildForm.tsx │ │ │ ├── CSAMReportCounsellorForm.tsx │ │ │ ├── CSAMReportFormDefinition.ts │ │ │ ├── CSAMReportStatusScreen.tsx │ │ │ ├── CSAMReportTypePicker.tsx │ │ │ ├── csamReportApi.ts │ │ │ └── styles.tsx │ │ ├── Conference │ │ │ ├── ConferenceActions │ │ │ │ ├── ConferencePanel.tsx │ │ │ │ ├── Hangup.tsx │ │ │ │ ├── PhoneInputDialog.tsx │ │ │ │ ├── ToggleMute.tsx │ │ │ │ ├── ToogleDialpad.tsx │ │ │ │ └── styles.ts │ │ │ ├── ConferenceMonitor │ │ │ │ └── index.tsx │ │ │ ├── HoldParticipantButton │ │ │ │ └── index.tsx │ │ │ ├── ParticipantLabel │ │ │ │ ├── index.tsx │ │ │ │ └── styles.tsx │ │ │ └── RemoveParticipantButton │ │ │ │ └── index.tsx │ │ ├── ContactNotLoaded.tsx │ │ ├── CustomCRMContainer.tsx │ │ ├── FieldDate.tsx │ │ ├── FieldSelect.jsx │ │ ├── FieldText.tsx │ │ ├── FormNotEditable.tsx │ │ ├── HrmForm.tsx │ │ ├── ManualPullButton │ │ │ └── index.tsx │ │ ├── Messaging │ │ │ ├── MessageItem │ │ │ │ ├── MessageItem.tsx │ │ │ │ ├── index.ts │ │ │ │ └── styles.tsx │ │ │ └── MessageList │ │ │ │ ├── MessageList.tsx │ │ │ │ ├── index.ts │ │ │ │ └── styles.tsx │ │ ├── NavigableContainer │ │ │ ├── index.tsx │ │ │ └── styles.tsx │ │ ├── OfflineContact │ │ │ ├── AddOfflineContactButton.tsx │ │ │ ├── OfflineContactTask.tsx │ │ │ ├── index.ts │ │ │ └── styles.tsx │ │ ├── RequiredAsterisk.jsx │ │ ├── StandaloneSearch.tsx │ │ ├── TabPressWrapper.jsx │ │ ├── TaskView.tsx │ │ ├── callTypeButtons │ │ │ ├── CallTypeButtons.tsx │ │ │ ├── SaveContactCallTypeDialog.tsx │ │ │ ├── index.ts │ │ │ └── styles.tsx │ │ ├── cannedResponses │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── case │ │ │ ├── ActionHeader.tsx │ │ │ ├── AddEditCaseItem.tsx │ │ │ ├── Case.tsx │ │ │ ├── CaseAddButton.tsx │ │ │ ├── CaseHome.tsx │ │ │ ├── CaseSection.tsx │ │ │ ├── CaseSectionListRow.tsx │ │ │ ├── CaseSectionPreviewText.tsx │ │ │ ├── CaseTags.tsx │ │ │ ├── CloseCaseDialog.tsx │ │ │ ├── ConnectToCaseButton.tsx │ │ │ ├── ViewCaseItem.tsx │ │ │ ├── caseOverview │ │ │ │ ├── CaseOverviewEditHistory.tsx │ │ │ │ ├── CaseOverviewHeader.tsx │ │ │ │ ├── CaseOverviewItem.tsx │ │ │ │ ├── CaseTextAreaEntry.tsx │ │ │ │ ├── EditCaseOverview.tsx │ │ │ │ └── index.tsx │ │ │ ├── casePrint │ │ │ │ ├── CasePrintCSAMReports.tsx │ │ │ │ ├── CasePrintCategories.tsx │ │ │ │ ├── CasePrintContact.tsx │ │ │ │ ├── CasePrintDetails.tsx │ │ │ │ ├── CasePrintFooter.tsx │ │ │ │ ├── CasePrintHeader.tsx │ │ │ │ ├── CasePrintMultiSection.tsx │ │ │ │ ├── CasePrintSection.tsx │ │ │ │ ├── CasePrintSectionsList.tsx │ │ │ │ ├── CasePrintSummary.tsx │ │ │ │ ├── CasePrintView.tsx │ │ │ │ ├── images.ts │ │ │ │ ├── presentValuesFromStrings.ts │ │ │ │ └── styles │ │ │ │ │ ├── categories.ts │ │ │ │ │ ├── csamReport.ts │ │ │ │ │ ├── details.ts │ │ │ │ │ ├── footer.ts │ │ │ │ │ ├── header.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── notes.ts │ │ │ │ │ ├── section.ts │ │ │ │ │ └── summary.ts │ │ │ ├── documentUploadHandler.ts │ │ │ ├── index.ts │ │ │ ├── openNewCase.ts │ │ │ ├── styles.tsx │ │ │ └── timeline │ │ │ │ ├── FullTimelineView.tsx │ │ │ │ ├── Timeline.tsx │ │ │ │ └── TimelineIcon.tsx │ │ ├── caseList │ │ │ ├── CaseList.tsx │ │ │ ├── CaseListTable.tsx │ │ │ ├── CaseListTableHead.tsx │ │ │ ├── CaseListTableHeadCell.tsx │ │ │ ├── CaseListTableRow.tsx │ │ │ ├── filters │ │ │ │ ├── CaseListFilterProvider.tsx │ │ │ │ ├── DateRangeFilter.tsx │ │ │ │ ├── Filters.tsx │ │ │ │ ├── MultiSelectFilter.tsx │ │ │ │ ├── SearchInput.tsx │ │ │ │ └── dateFilters.ts │ │ │ └── index.js │ │ ├── caseMergingBanners │ │ │ ├── AddToCaseBanner.tsx │ │ │ ├── CaseCreatedBanner.tsx │ │ │ ├── ContactAddedToCaseBanner.tsx │ │ │ ├── ContactRemovedFromCaseBanner.tsx │ │ │ ├── InfoIcon.tsx │ │ │ └── WarningIcon.tsx │ │ ├── common │ │ │ ├── AddTaskButton │ │ │ │ ├── index.tsx │ │ │ │ └── styles.tsx │ │ │ ├── CategoryWithTooltip.tsx │ │ │ ├── ClickOutsideInterceptor.tsx │ │ │ ├── ContactDetails │ │ │ │ └── index.ts │ │ │ ├── forms │ │ │ │ ├── CategoryCheckboxes.tsx │ │ │ │ ├── DownloadFile.tsx │ │ │ │ ├── FormTab.tsx │ │ │ │ ├── Section.tsx │ │ │ │ ├── SectionEntry │ │ │ │ │ ├── SectionEntry.tsx │ │ │ │ │ ├── SectionEntryValue.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── UploadFileInput.tsx │ │ │ │ ├── formGenerators.tsx │ │ │ │ ├── formValues.ts │ │ │ │ └── types.ts │ │ │ └── icons │ │ │ │ ├── AudioIcon.tsx │ │ │ │ ├── CallIcon.tsx │ │ │ │ ├── CallTypeIcon.tsx │ │ │ │ ├── ChevronDownIcon.tsx │ │ │ │ ├── FacebookIcon.tsx │ │ │ │ ├── ImageIcon.tsx │ │ │ │ ├── InstagramIcon.tsx │ │ │ │ ├── LineIcon.tsx │ │ │ │ ├── OpenPageIcon.tsx │ │ │ │ ├── PdfIcon.tsx │ │ │ │ ├── SmsIcon.tsx │ │ │ │ ├── TelegramIcon.tsx │ │ │ │ ├── UnsupportedFileIcon.tsx │ │ │ │ ├── UploadIcon.tsx │ │ │ │ ├── VideoIcon.tsx │ │ │ │ └── WhatsappIcon.tsx │ │ ├── contact │ │ │ ├── ContactDetails.tsx │ │ │ ├── ContactDetailsHome.tsx │ │ │ ├── ContactDetailsSection.tsx │ │ │ ├── ContactDetailsSectionForm.tsx │ │ │ ├── ContactInProgressBanners.tsx │ │ │ ├── EditContactSection.tsx │ │ │ ├── GenerateSummaryButton │ │ │ │ ├── GenerateSummaryIcon.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── setUpLlmNotifications.tsx │ │ │ ├── IssueCategorizationSectionForm.tsx │ │ │ ├── MediaSection │ │ │ │ ├── RecordingSection.tsx │ │ │ │ ├── TranscriptSection.tsx │ │ │ │ ├── index.ts │ │ │ │ └── styles.tsx │ │ │ ├── ResourceReferralList │ │ │ │ ├── index.tsx │ │ │ │ └── styles.tsx │ │ │ ├── contactDetailsSectionFormApi.ts │ │ │ └── helpers.tsx │ │ ├── customIntegrations │ │ │ └── uscr │ │ │ │ ├── DispatchIncidentButton.tsx │ │ │ │ ├── dispatchAttempt.ts │ │ │ │ ├── dispatchService.ts │ │ │ │ └── styles.tsx │ │ ├── emojiPicker │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── forms │ │ │ ├── components │ │ │ │ ├── FormInput │ │ │ │ │ ├── FormInput.test.tsx │ │ │ │ │ ├── FormInput.tsx │ │ │ │ │ └── styles.tsx │ │ │ │ ├── FormTextArea │ │ │ │ │ └── FormTextArea.tsx │ │ │ │ ├── customContactComponent.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── styles.tsx │ │ │ │ └── types.ts │ │ │ ├── customContactComponentRegistry.ts │ │ │ ├── formatFormValue.tsx │ │ │ ├── hooks │ │ │ │ └── useCreateFormFromDefinition.tsx │ │ │ ├── index.ts │ │ │ ├── inputGenerator.tsx │ │ │ └── test-utils.tsx │ │ ├── pagination │ │ │ ├── index.tsx │ │ │ └── styles.tsx │ │ ├── profile │ │ │ ├── IdentifierBanner │ │ │ │ ├── PreviousContactsBanner.tsx │ │ │ │ ├── ProfileIdentifierBanner.tsx │ │ │ │ ├── iconsFromTask.ts │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ProfileCaseDetails.tsx │ │ │ ├── ProfileCases.tsx │ │ │ ├── ProfileContactDetails.tsx │ │ │ ├── ProfileContacts.tsx │ │ │ ├── ProfileDetails.tsx │ │ │ ├── ProfileEdit.tsx │ │ │ ├── ProfileRelationshipList.tsx │ │ │ ├── ProfileRouter.tsx │ │ │ ├── ProfileTabs.tsx │ │ │ ├── profileFlag │ │ │ │ ├── ProfileFlagChip.tsx │ │ │ │ ├── ProfileFlagEdit.tsx │ │ │ │ ├── ProfileFlagList.tsx │ │ │ │ └── ProfileFlagSection.tsx │ │ │ ├── section │ │ │ │ ├── ProfileDetailsSection.tsx │ │ │ │ ├── ProfileSectionEdit.tsx │ │ │ │ ├── ProfileSectionGroup.tsx │ │ │ │ └── ProfileSectionView.tsx │ │ │ ├── styles.tsx │ │ │ └── types.tsx │ │ ├── profileList │ │ │ ├── ProfileDetailsRow.tsx │ │ │ ├── ProfileHeader.tsx │ │ │ ├── ProfileHeaderCell.tsx │ │ │ ├── ProfileList.tsx │ │ │ ├── ProfileListTable.tsx │ │ │ ├── filters │ │ │ │ ├── ProfileFilters.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── queuesStatus │ │ │ ├── QueueCard.tsx │ │ │ ├── QueuesStatusWriter.jsx │ │ │ ├── helpers.ts │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── resources │ │ │ ├── ReferrableResourceSideLink.tsx │ │ │ ├── ReferrableResources.tsx │ │ │ ├── ResourceIdCopyButton │ │ │ │ ├── index.tsx │ │ │ │ └── styles.tsx │ │ │ ├── convertKHPResourceAttributes.ts │ │ │ ├── resourceView │ │ │ │ ├── ExpandableAttributeContent.tsx │ │ │ │ ├── ExpandableSection.tsx │ │ │ │ ├── OperatingHours.tsx │ │ │ │ ├── ResourceAttribute.tsx │ │ │ │ ├── ResourceAttributeWithPrivacy.tsx │ │ │ │ ├── SiteDetails.tsx │ │ │ │ └── ViewResource.tsx │ │ │ ├── search │ │ │ │ ├── ResourcePreview.tsx │ │ │ │ ├── SearchAutoComplete.tsx │ │ │ │ ├── SearchResources.tsx │ │ │ │ ├── SearchResourcesForm.tsx │ │ │ │ └── SearchResourcesResults.tsx │ │ │ ├── setUpReferrableResources.tsx │ │ │ ├── styles.tsx │ │ │ └── types.ts │ │ ├── router │ │ │ └── Router.tsx │ │ ├── search │ │ │ ├── CasePreview │ │ │ │ ├── CaseHeader.tsx │ │ │ │ └── index.tsx │ │ │ ├── ConnectDialog.tsx │ │ │ ├── ContactPreview │ │ │ │ ├── ContactHeader.tsx │ │ │ │ └── index.tsx │ │ │ ├── ExpandableTextBlock.tsx │ │ │ ├── GeneralizedSearchForm │ │ │ │ ├── SearchFormDefiniton.ts │ │ │ │ └── index.tsx │ │ │ ├── PreviewDescription.tsx │ │ │ ├── SearchForm │ │ │ │ └── index.tsx │ │ │ ├── SearchResults │ │ │ │ ├── SearchResultsBackButton.tsx │ │ │ │ ├── SearchResultsQueryTemplate.tsx │ │ │ │ └── index.tsx │ │ │ ├── TagsAndCounselor.tsx │ │ │ ├── index.tsx │ │ │ └── styles.tsx │ │ ├── sideLinks │ │ │ ├── CaseListSideLink.tsx │ │ │ ├── DirectoryClosedIcon.tsx │ │ │ ├── DirectoryOpenedIcon.tsx │ │ │ ├── ProfileListSideLink.tsx │ │ │ ├── SettingsSideLink.tsx │ │ │ └── StandaloneSearchSideLink.tsx │ │ ├── tabbedForms │ │ │ ├── BottomBar.tsx │ │ │ ├── CSAMAttachments.tsx │ │ │ ├── CSAMReportButton.tsx │ │ │ ├── CSAMReportDropdown.tsx │ │ │ ├── ContactlessTaskTab.tsx │ │ │ ├── ContactlessTaskTabDefinition.ts │ │ │ ├── TabbedFormsCase.tsx │ │ │ ├── TabbedFormsContact.tsx │ │ │ ├── TabbedFormsRouter.tsx │ │ │ ├── TabbedFormsSearch.tsx │ │ │ ├── TabbedFormsTabs.tsx │ │ │ ├── hooks │ │ │ │ └── useTabbedForm.ts │ │ │ ├── styles.tsx │ │ │ └── types.ts │ │ ├── teamsView │ │ │ ├── AgentColumn.tsx │ │ │ ├── SkillsColumn.tsx │ │ │ ├── StatusColumn.tsx │ │ │ ├── index.ts │ │ │ ├── styles.tsx │ │ │ ├── taskCardEnhancement.ts │ │ │ ├── teamsViewFilters.ts │ │ │ └── teamsViewSorting.ts │ │ ├── toolkits │ │ │ ├── CounselorToolkitDialog.tsx │ │ │ ├── CounselorToolkitSideLink.tsx │ │ │ └── setUpCounselorToolkits.tsx │ │ ├── transfer │ │ │ ├── AcceptTransferButton.tsx │ │ │ ├── RefreshMessage.tsx │ │ │ ├── RejectTransferButton.tsx │ │ │ ├── TransferButton.tsx │ │ │ ├── isErrorLoadingConversation.ts │ │ │ └── setUpTransferComponents.tsx │ │ └── translator │ │ │ └── index.tsx │ ├── conference │ │ ├── index.ts │ │ ├── setUpConferenceActions.tsx │ │ └── setUpConferenceComponents.tsx │ ├── contexts │ │ └── LocalizationContext.jsx │ ├── conversationListeners.ts │ ├── definitionVersions.ts │ ├── dualWrite │ │ ├── br.ts │ │ └── index.ts │ ├── fullStory │ │ └── index.ts │ ├── hooks │ │ ├── useExpandableOnOverflow.ts │ │ ├── useFeatureFlags.ts │ │ ├── useIsOverflowing.ts │ │ ├── usePreviousValue.ts │ │ └── useTraceUpdate.ts │ ├── hrmConfig.ts │ ├── index.js │ ├── maskIdentifiers │ │ ├── index.ts │ │ └── unmaskPhoneNumber │ │ │ ├── EyeCloseIcon.tsx │ │ │ ├── EyeOpenIcon.tsx │ │ │ ├── ViewTaskNumber.tsx │ │ │ ├── index.tsx │ │ │ └── styles.tsx │ ├── notifications │ │ ├── newMessage.ts │ │ ├── playNotification.ts │ │ └── reservedTask.ts │ ├── permissions │ │ ├── br.json │ │ ├── ca.json │ │ ├── canEditContact.ts │ │ ├── canEditInProgressContact.ts │ │ ├── cl.json │ │ ├── co.json │ │ ├── demo.json │ │ ├── dev.json │ │ ├── e2e.json │ │ ├── et.json │ │ ├── fetchRules.ts │ │ ├── hu.json │ │ ├── in.json │ │ ├── index.ts │ │ ├── jm.json │ │ ├── mt.json │ │ ├── mw.json │ │ ├── nz.json │ │ ├── ph.json │ │ ├── search-permissions.ts │ │ ├── sg.json │ │ ├── th.json │ │ ├── tz.json │ │ ├── ukmh.json │ │ ├── usch.json │ │ ├── uscr.json │ │ ├── za.json │ │ ├── zm.json │ │ └── zw.json │ ├── private │ │ └── .gitignore │ ├── react-app-env.d.ts │ ├── rerenderView.ts │ ├── services │ │ ├── CSAMReportService.ts │ │ ├── CaseService.ts │ │ ├── ContactService.ts │ │ ├── HelplineService.ts │ │ ├── InsightsService.ts │ │ ├── PaginationParams.ts │ │ ├── PermissionsService.ts │ │ ├── ProfileService.ts │ │ ├── ResourceService.ts │ │ ├── ServerlessService.ts │ │ ├── caseSectionService.ts │ │ ├── conferenceService.ts │ │ ├── fetchApi.ts │ │ ├── fetchHrmApi.ts │ │ ├── fetchProtectedApi.ts │ │ ├── fetchResourcesApi.ts │ │ ├── formSubmissionHelpers.ts │ │ ├── getExternalRecordingInfo.ts │ │ ├── llmAssistantService.ts │ │ ├── twilioTaskService.ts │ │ └── twilioWorkerService.ts │ ├── setupTests.js │ ├── states │ │ ├── DomainConstants.ts │ │ ├── actions.ts │ │ ├── asyncDispatch.ts │ │ ├── case │ │ │ ├── caseActivities.ts │ │ │ ├── caseBanners.ts │ │ │ ├── caseStatus.ts │ │ │ ├── caseWorkingCopy.ts │ │ │ ├── hooks │ │ │ │ ├── useCase.ts │ │ │ │ └── useCaseSections.ts │ │ │ ├── loadCaseIntoState.ts │ │ │ ├── markCaseAsUpdating.ts │ │ │ ├── reducer.ts │ │ │ ├── referenceCase.ts │ │ │ ├── saveCase.ts │ │ │ ├── sections │ │ │ │ ├── caseSectionUpdates.ts │ │ │ │ ├── copySection.ts │ │ │ │ ├── get.ts │ │ │ │ ├── selectCaseItemHistory.ts │ │ │ │ └── workingCopy.ts │ │ │ ├── selectCaseHelplineData.ts │ │ │ ├── selectCaseStateByCaseId.ts │ │ │ ├── selectCurrentRouteCase.ts │ │ │ ├── singleCase.ts │ │ │ ├── timeline.ts │ │ │ └── types.ts │ │ ├── caseList │ │ │ ├── dateFilters.ts │ │ │ ├── listContent.ts │ │ │ ├── reducer.ts │ │ │ ├── selectCaseListSettings.ts │ │ │ ├── selectCasesForList.ts │ │ │ └── settings.ts │ │ ├── conferencing │ │ │ ├── callStatus.ts │ │ │ └── index.ts │ │ ├── configuration │ │ │ ├── actions.ts │ │ │ ├── changeLanguage.ts │ │ │ ├── hooks │ │ │ │ ├── useProfileFlagDurations.ts │ │ │ │ └── useProfileSectionTypes.ts │ │ │ ├── reducer.ts │ │ │ ├── selectCounselorsHash.ts │ │ │ ├── selectDefinitions.ts │ │ │ ├── selectLocaleState.ts │ │ │ └── types.ts │ │ ├── contacts │ │ │ ├── actions.ts │ │ │ ├── categories.ts │ │ │ ├── contactDetails.ts │ │ │ ├── contactDetailsAdapter.ts │ │ │ ├── contactIdentifier.ts │ │ │ ├── contactReduxUpdates.ts │ │ │ ├── contactState.ts │ │ │ ├── existingContacts.ts │ │ │ ├── getUnsavedContact.ts │ │ │ ├── issueCategorizationStateApi.ts │ │ │ ├── llmAssistant.ts │ │ │ ├── offlineContactTask.ts │ │ │ ├── reducer.ts │ │ │ ├── resourceReferral.ts │ │ │ ├── saveContact.ts │ │ │ ├── selectContactByCaseId.ts │ │ │ ├── selectContactByTaskSid.ts │ │ │ ├── selectContactDetailsByContext.ts │ │ │ ├── selectContactSaveStatus.ts │ │ │ ├── selectContactStateByContactId.ts │ │ │ ├── selectContextContactId.ts │ │ │ ├── selectCurrentOfflineContact.ts │ │ │ └── types.ts │ │ ├── conversations │ │ │ └── index.ts │ │ ├── csam-report │ │ │ ├── actions.ts │ │ │ ├── existingContactExternalReport.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── customIntegrations │ │ │ ├── index.ts │ │ │ └── uscrIncidentDispatch.ts │ │ ├── dualWrite │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── getUpdatedDate.ts │ │ ├── hooks │ │ │ └── useLoadWithRetry.ts │ │ ├── index.ts │ │ ├── parseFetchError.ts │ │ ├── profile │ │ │ ├── actions.ts │ │ │ ├── hooks │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ ├── useIdentifier.ts │ │ │ │ ├── useProfile.ts │ │ │ │ ├── useProfileFlags.ts │ │ │ │ ├── useProfileLoader.ts │ │ │ │ ├── useProfileProperty.ts │ │ │ │ ├── useProfileRelationshipsBytype.ts │ │ │ │ ├── useProfileSection.ts │ │ │ │ ├── useProfilesList.ts │ │ │ │ └── useProfilesListLoader.ts │ │ │ ├── identifiers.ts │ │ │ ├── loadIdentifierEntryIntoRedux.ts │ │ │ ├── loadProfileEntryIntoRedux.ts │ │ │ ├── profileFlags.ts │ │ │ ├── profiles.ts │ │ │ ├── profilesList.ts │ │ │ ├── reducer.ts │ │ │ ├── selectors.ts │ │ │ └── types.ts │ │ ├── queuesStatus │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── resources │ │ │ ├── index.ts │ │ │ ├── referenceLocations.ts │ │ │ ├── search.ts │ │ │ └── types.ts │ │ ├── routing │ │ │ ├── actions.ts │ │ │ ├── getRoute.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── search │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ ├── selectCasesForSearchResults.ts │ │ │ ├── selectContactsForSearchResults.ts │ │ │ ├── selectPreviousContactCounts.ts │ │ │ ├── selectSearchStateForTask.ts │ │ │ └── types.ts │ │ ├── selectors │ │ │ ├── flexSelectors.ts │ │ │ └── hrmStateSelectors.ts │ │ ├── storeNamespaces.ts │ │ ├── types.ts │ │ └── validationRules.ts │ ├── stories │ │ ├── Button.stories.tsx │ │ ├── Configure.mdx │ │ ├── assets │ │ │ ├── accessibility.png │ │ │ ├── accessibility.svg │ │ │ ├── addon-library.png │ │ │ ├── assets.png │ │ │ ├── avif-test-image.avif │ │ │ ├── context.png │ │ │ ├── discord.svg │ │ │ ├── docs.png │ │ │ ├── figma-plugin.png │ │ │ ├── github.svg │ │ │ ├── share.png │ │ │ ├── styling.png │ │ │ ├── testing.png │ │ │ ├── theming.png │ │ │ ├── tutorials.svg │ │ │ └── youtube.svg │ │ ├── button │ │ │ ├── index.tsx │ │ │ └── styles.tsx │ │ └── samples │ │ │ ├── Button.tsx │ │ │ ├── Header.tsx │ │ │ ├── Page.tsx │ │ │ ├── SampleButton.stories.ts │ │ │ ├── SampleHeader.stories.ts │ │ │ ├── SamplePage.stories.ts │ │ │ ├── button.css │ │ │ ├── header.css │ │ │ └── page.css │ ├── styles │ │ ├── GlobalOverrides.js │ │ ├── HrmStyles.tsx │ │ ├── HrmTheme.ts │ │ ├── banners.ts │ │ ├── buttons.tsx │ │ ├── constants.ts │ │ ├── filters.ts │ │ ├── global-overrides.css │ │ ├── index.ts │ │ ├── layout.tsx │ │ ├── mainHeader.ts │ │ ├── table.ts │ │ └── typography.tsx │ ├── transfer │ │ ├── formDataTransfer.ts │ │ ├── setUpTransferActions.tsx │ │ └── transferTaskState.ts │ ├── translations │ │ ├── README.md │ │ ├── en-CA │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-GB │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-IN │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-JM │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-MT │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-NZ │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-SG │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-US │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-USCH │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── en-USCR │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── es-CL │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── es-CO │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── es-ES │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── hu-HU │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ ├── index.ts │ │ ├── locales │ │ │ ├── en-CA.json │ │ │ ├── en-GB.json │ │ │ ├── en-MT.json │ │ │ ├── en-NZ.json │ │ │ ├── en-US.json │ │ │ ├── en.json │ │ │ ├── es-CL.json │ │ │ ├── es-CO.json │ │ │ ├── es.json │ │ │ ├── fr.json │ │ │ ├── hu.json │ │ │ ├── pt.json │ │ │ └── th.json │ │ ├── pt-BR │ │ │ ├── flexUI.json │ │ │ └── messages.json │ │ └── th-TH │ │ │ ├── flexUI.json │ │ │ └── messages.json │ ├── types │ │ ├── index.ts │ │ ├── twilio.ts │ │ └── types.ts │ └── utils │ │ ├── categories.ts │ │ ├── checkers.ts │ │ ├── conversationDuration.ts │ │ ├── definitionVersions.ts │ │ ├── devUtils.js │ │ ├── formatters.tsx │ │ ├── groupedChannels.ts │ │ ├── mappers.ts │ │ ├── prepopulateForm.ts │ │ ├── selectChannelType.ts │ │ ├── selectMediaIcon.tsx │ │ ├── setUpActions.ts │ │ ├── setUpComponents.tsx │ │ ├── setUpMonitoring.ts │ │ ├── setUpProviders.tsx │ │ ├── setUpTaskRouterListeners.ts │ │ ├── sharedState.ts │ │ ├── shouldSendInsightsData.ts │ │ ├── task.ts │ │ └── useFocus.tsx ├── tsconfig.json ├── webpack.config.js └── webpack.dev.js ├── scripts ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .nvmrc ├── .prettierrc ├── README.md ├── copy_objects.rb ├── package-lock.json ├── package.json ├── src │ ├── formDefinitions │ │ └── generateNewHelplineFormDefinitions.ts │ ├── helpers │ │ ├── log.ts │ │ └── ssm.ts │ ├── setAppConfigCreds.ts │ └── terraformSupplemental │ │ ├── checkArgv.ts │ │ ├── createTwilioApiKeyAndSsmSecret.ts │ │ ├── execTerraform.ts │ │ ├── handleSsmRoleArg.ts │ │ ├── handleTerraformArgs.ts │ │ ├── importDefaultTwilioResourcesToTerraform.ts │ │ ├── runAgainstAllAccountsForEnvironment.ts │ │ ├── setEnvFromSsm.ts │ │ ├── twilioResources.ts │ │ ├── twilioToTerraformImporter.ts │ │ ├── updateAllAssetUrls.ts │ │ └── updateFlexServiceConfiguration.ts ├── tsconfig.eslint.json └── tsconfig.json ├── twilio-iac ├── .gitignore ├── .tflint.hcl ├── Flags-Matrix.md ├── Makefile ├── README.md ├── docs │ ├── service_configuration.md │ ├── terragrunt.md │ └── terragrunt_migration.md ├── helplines │ ├── README.md │ ├── as │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── development.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── development.hcl │ │ ├── production.hcl │ │ └── staging.hcl │ ├── baseline │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ └── staging.hcl │ ├── br │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ └── pt_br │ │ │ │ │ ├── bots │ │ │ │ │ └── contact_reason.json │ │ │ │ │ ├── intents │ │ │ │ │ ├── contact_reason.json │ │ │ │ │ └── pre_survey.json │ │ │ │ │ └── slot_types │ │ │ │ │ ├── contact_reason.json │ │ │ │ │ └── ethnicity.json │ │ │ ├── lex_v2 │ │ │ │ └── pt_br │ │ │ │ │ ├── bots │ │ │ │ │ ├── contact_reason.json │ │ │ │ │ └── pre_survey.json │ │ │ │ │ ├── intents │ │ │ │ │ ├── contact_reason.json │ │ │ │ │ └── pre_survey.json │ │ │ │ │ ├── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ ├── contact_reason.json │ │ │ │ │ ├── ethnicity.json │ │ │ │ │ ├── gender.json │ │ │ │ │ └── yes_no.json │ │ │ │ │ └── slots │ │ │ │ │ ├── about_self.json │ │ │ │ │ ├── age.json │ │ │ │ │ ├── contact_options.json │ │ │ │ │ ├── ethnicity.json │ │ │ │ │ └── gender.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ ├── messaging-conv.tftpl │ │ │ └── messaging.tftpl │ ├── ca │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ ├── 988camh.tftpl │ │ │ ├── ab211.tftpl │ │ │ ├── g2tns.tftpl │ │ │ ├── g2ton.tftpl │ │ │ ├── hc.tftpl │ │ │ ├── khp_main.tftpl │ │ │ └── webchat.tftpl │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── cl │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ └── es_CL │ │ │ │ │ └── intents │ │ │ │ │ └── post_survey.json │ │ │ ├── lex_v2 │ │ │ │ └── es_CL │ │ │ │ │ ├── bots │ │ │ │ │ └── post_survey.json │ │ │ │ │ ├── intents │ │ │ │ │ ├── post_survey_no.json │ │ │ │ │ └── post_survey_yes.json │ │ │ │ │ └── slots │ │ │ │ │ ├── felt_supported.json │ │ │ │ │ ├── was_helpful.json │ │ │ │ │ └── would_recommend.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── files │ │ │ └── additional.chatbot.tf │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── co │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ └── es_CO │ │ │ │ │ └── intents │ │ │ │ │ └── post_survey.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ ├── messaging-flow.tftpl │ │ │ └── whatsapp.tftpl │ ├── configs │ │ ├── lex │ │ │ ├── config_v2.json │ │ │ ├── en │ │ │ │ ├── bots │ │ │ │ │ ├── language_selector.json │ │ │ │ │ ├── post_survey.json │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ ├── intents │ │ │ │ │ ├── post_survey.json │ │ │ │ │ └── pre_survey.json │ │ │ │ └── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ ├── gender.json │ │ │ │ │ └── yes_no.json │ │ │ ├── en_US │ │ │ │ └── slot_types │ │ │ │ │ └── gender.json │ │ │ ├── es │ │ │ │ ├── bots │ │ │ │ │ ├── post_survey.json │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ └── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ ├── fourLevelAssessment.json │ │ │ │ │ ├── gender_girl_boy.json │ │ │ │ │ └── yes_no.json │ │ │ ├── es_CO │ │ │ │ ├── intents │ │ │ │ │ └── pre_survey.json │ │ │ │ └── slot_types │ │ │ │ │ └── gender.json │ │ │ ├── mt │ │ │ │ ├── bots │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ └── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ └── yes_no.json │ │ │ ├── pt │ │ │ │ ├── bots │ │ │ │ │ └── pre_survey.json │ │ │ │ └── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ ├── gender.json │ │ │ │ │ └── yes_no.json │ │ │ ├── ru │ │ │ │ └── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ └── yes_no.json │ │ │ ├── sw_TZ │ │ │ │ └── bots │ │ │ │ │ └── pre_survey.json │ │ │ └── uk │ │ │ │ ├── bots │ │ │ │ ├── pre_survey.json │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ └── slot_types │ │ │ │ ├── age.json │ │ │ │ └── yes_no.json │ │ ├── lex_v2 │ │ │ ├── en │ │ │ │ ├── bots │ │ │ │ │ ├── post_survey.json │ │ │ │ │ └── pre_survey.json │ │ │ │ ├── intents │ │ │ │ │ ├── post_survey_no.json │ │ │ │ │ ├── post_survey_yes.json │ │ │ │ │ └── pre_survey.json │ │ │ │ ├── slot_types │ │ │ │ │ ├── age.json │ │ │ │ │ ├── gender.json │ │ │ │ │ └── yes_no.json │ │ │ │ └── slots │ │ │ │ │ ├── about_self.json │ │ │ │ │ ├── age.json │ │ │ │ │ ├── caller_type.json │ │ │ │ │ ├── gender.json │ │ │ │ │ ├── was_helpful.json │ │ │ │ │ └── would_recommend.json │ │ │ └── es │ │ │ │ └── slot_types │ │ │ │ ├── four_level_assessment.json │ │ │ │ └── yes_no.json │ │ └── service-configuration │ │ │ └── defaults.json │ ├── defaults.hcl │ ├── e2e │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ └── development.json │ │ └── development.hcl │ ├── et │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ └── messaging-chatbot-operating-hours.tftpl │ ├── files │ │ ├── README.md │ │ ├── additional.chatbot.tf │ │ ├── additional.configure.tf │ │ ├── additional.lex.tf │ │ └── additional.provision.tf │ ├── hu │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ ├── ru │ │ │ │ │ ├── bots │ │ │ │ │ │ └── pre_survey.json │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ └── uk │ │ │ │ │ └── intents │ │ │ │ │ └── pre_survey.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ ├── messaging-lex.tftpl │ │ │ └── voice-ivr.tftpl │ ├── in │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ └── staging.hcl │ ├── jm │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ └── en_JM │ │ │ │ │ ├── intents │ │ │ │ │ └── pre_survey.json │ │ │ │ │ └── slot_types │ │ │ │ │ ├── gender.json │ │ │ │ │ ├── howDidYouKnowAboutOurLine.json │ │ │ │ │ └── parish.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── mt │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ ├── en_MT │ │ │ │ │ ├── intents │ │ │ │ │ │ ├── language_selector.json │ │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ │ └── slot_types │ │ │ │ │ │ ├── feeling.json │ │ │ │ │ │ ├── gender.json │ │ │ │ │ │ └── language.json │ │ │ │ ├── mt_MT │ │ │ │ │ ├── intents │ │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ │ └── slot_types │ │ │ │ │ │ ├── feeling.json │ │ │ │ │ │ └── gender.json │ │ │ │ └── uk │ │ │ │ │ ├── intents │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── terms_conditions_acceptance.json │ │ │ │ │ └── slot_types │ │ │ │ │ ├── feeling.json │ │ │ │ │ └── gender.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ ├── messaging-lex-conv.tftpl │ │ │ ├── messaging-lex-web-location-block.tftpl │ │ │ └── messaging-whatsapp-lex-conv.tftpl │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── mw │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ └── en_MW │ │ │ │ │ ├── bots │ │ │ │ │ └── youth_testing.json │ │ │ │ │ ├── intents │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── youth_testing.json │ │ │ │ │ └── slot_types │ │ │ │ │ ├── gender.json │ │ │ │ │ └── youth_testing.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ └── mw-lex.tftpl │ │ │ └── workflows │ │ │ ├── master-prod.tftpl │ │ │ └── master.tftpl │ ├── nz │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ └── en_NZ │ │ │ │ │ ├── bots │ │ │ │ │ ├── counsel_check.json │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── pre_survey_ig.json │ │ │ │ │ └── intents │ │ │ │ │ ├── counsel_check.json │ │ │ │ │ ├── pre_survey.json │ │ │ │ │ └── pre_survey_ig.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── channel-attributes │ │ │ ├── custom-conversations.tftpl │ │ │ ├── modica.tftpl │ │ │ ├── voice.tftpl │ │ │ ├── webchat.tftpl │ │ │ └── whatsapp-conversations.tftpl │ │ │ ├── studio-flows │ │ │ ├── instagram-lex-priority-v2.tftpl │ │ │ ├── messaging-lex-priority-v2.tftpl │ │ │ ├── messaging-lex-priority-v3.tftpl │ │ │ ├── messaging-lex-priority.tftpl │ │ │ ├── messaging-no-chatbot-operating-hours-flags-routing-v2.tftpl │ │ │ ├── messaging-no-chatbot-operating-hours-flags-routing.tftpl │ │ │ └── voice.tftpl │ │ │ └── workflows │ │ │ ├── master_calls.tftpl │ │ │ ├── master_messaging.tftpl │ │ │ └── queue-transfers.tftpl │ ├── ph │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ ├── common │ │ │ │ │ └── slot_types │ │ │ │ │ │ ├── counsellorGenderPreference.json │ │ │ │ │ │ ├── csam.json │ │ │ │ │ │ ├── gender.json │ │ │ │ │ │ └── yes_no.json │ │ │ │ ├── en_PH │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ └── fil_PH │ │ │ │ │ ├── bots │ │ │ │ │ └── pre_survey.json │ │ │ │ │ ├── intents │ │ │ │ │ └── pre_survey.json │ │ │ │ │ └── slot_types │ │ │ │ │ └── age.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ ├── with-lex-chatbot-conv.tftpl │ │ │ └── with-lex-chatbot.tftpl │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── sg │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ ├── messaging-greeting-message.tftpl │ │ │ └── voice-no-chatbot-operating-hours.tftpl │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── templates │ │ ├── channel-attributes │ │ │ ├── custom-channel-conversations.tftpl │ │ │ ├── default-conversations.tftpl │ │ │ ├── default.tftpl │ │ │ ├── voice.tftpl │ │ │ └── webchat.tftpl │ │ ├── studio-flows │ │ │ ├── messaging-basic-with-function.tftpl │ │ │ ├── messaging-blocking-conv.tftpl │ │ │ ├── messaging-blocking.tftpl │ │ │ ├── messaging-custom-channel-blocking-conv.tftpl │ │ │ ├── messaging-custom-channel-blocking.tftpl │ │ │ ├── messaging-custom-channel-lex-v2-blocking.tftpl │ │ │ ├── messaging-custom-channel-lex-v3-blocking.tftpl │ │ │ ├── messaging-greeting-message.tftpl │ │ │ ├── messaging-lex-v2-blocking.tftpl │ │ │ ├── messaging-lex-v2.tftpl │ │ │ ├── messaging-lex-v3-blocking.tftpl │ │ │ ├── messaging-lex-v3.tftpl │ │ │ ├── messaging-lex.tftpl │ │ │ ├── messaging-no-chatbot-operating-hours-blocking-conv.tftpl │ │ │ ├── messaging-no-chatbot-operating-hours-blocking.tftpl │ │ │ ├── messaging-no-chatbot-operating-hours.tftpl │ │ │ ├── messaging.tftpl │ │ │ ├── sms-basic.tftpl │ │ │ ├── voice-basic.tftpl │ │ │ ├── voice-no-chatbot-operating-hours-blocking.tftpl │ │ │ ├── voice-no-chatbot-operating-hours.tftpl │ │ │ └── webchat-basic.tftpl │ │ └── workflows │ │ │ ├── lex.tftpl │ │ │ ├── master.tftpl │ │ │ ├── queue-transfers.tftpl │ │ │ └── survey.tftpl │ ├── th │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ ├── facebook-flow-conv.tftpl │ │ │ └── facebook-flow.tftpl │ ├── tz │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ ├── common │ │ │ │ │ └── slot_types │ │ │ │ │ │ ├── age.json │ │ │ │ │ │ ├── gender.json │ │ │ │ │ │ └── yes_no.json │ │ │ │ ├── en_US │ │ │ │ │ ├── intents │ │ │ │ │ │ └── language_selector.json │ │ │ │ │ └── slot_types │ │ │ │ │ │ └── language.json │ │ │ │ └── sw_TZ │ │ │ │ │ └── intents │ │ │ │ │ └── pre_survey.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ └── messaging-lex-v3-blocking.tftpl │ ├── ukmh │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ └── messaging-greeting-message-blocking.tftpl │ ├── usch │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ └── staging.hcl │ ├── uscr │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ └── studio-flows │ │ │ ├── incoming_to_outbound_number.tftpl │ │ │ └── voice.tftpl │ ├── za │ │ ├── common.hcl │ │ ├── configs │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ ├── messaging-facebook-national.tftpl │ │ │ └── messaging-facebook-office.tftpl │ │ │ └── workflows │ │ │ └── master.tftpl │ ├── zm │ │ ├── common.hcl │ │ ├── configs │ │ │ ├── lex │ │ │ │ ├── bem │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ ├── common │ │ │ │ │ ├── bots │ │ │ │ │ │ └── pre_survey.json │ │ │ │ │ └── slot_types │ │ │ │ │ │ ├── age.json │ │ │ │ │ │ ├── gender.json │ │ │ │ │ │ ├── helpline.json │ │ │ │ │ │ └── yes_no.json │ │ │ │ ├── en_US │ │ │ │ │ ├── intents │ │ │ │ │ │ ├── language_selector.json │ │ │ │ │ │ └── pre_survey.json │ │ │ │ │ └── slot_types │ │ │ │ │ │ └── language.json │ │ │ │ ├── kqn │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ ├── loz │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ ├── lun │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ ├── nyz │ │ │ │ │ └── intents │ │ │ │ │ │ └── pre_survey.json │ │ │ │ └── toi │ │ │ │ │ └── intents │ │ │ │ │ └── pre_survey.json │ │ │ └── service-configuration │ │ │ │ ├── common.json │ │ │ │ ├── production.json │ │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ │ ├── studio-flows │ │ │ ├── messaging-conv.tftpl │ │ │ ├── messaging-webchat-conv.tftpl │ │ │ ├── messaging-webchat.tftpl │ │ │ ├── messaging.tftpl │ │ │ └── voice-ac.tftpl │ │ │ └── workflows │ │ │ └── master.tftpl │ └── zw │ │ ├── common.hcl │ │ ├── configs │ │ └── service-configuration │ │ │ ├── common.json │ │ │ ├── production.json │ │ │ └── staging.json │ │ ├── production.hcl │ │ ├── staging.hcl │ │ └── templates │ │ ├── studio-flows │ │ ├── messaging-greeting-message-blocking.tftpl │ │ └── voice-ac.tftpl │ │ └── workflows │ │ └── master.tftpl ├── makefiles │ ├── 00-setup.make │ ├── assume-role.make │ ├── docker.make │ ├── scripts.make │ ├── service-config.make │ ├── shell.make │ ├── terraform.make │ ├── terraform │ │ ├── container.make │ │ ├── scripts.make │ │ └── terraform.make │ ├── terragrunt │ │ ├── container.make │ │ ├── scripts.make │ │ ├── setup.make │ │ └── terragrunt.make │ ├── test.make │ └── utils │ │ └── help.make ├── scripts │ ├── assumeStsRole.sh │ ├── compileScripts.sh │ ├── deploy-scripts │ │ ├── compile.sh │ │ ├── install.sh │ │ ├── setup.sh │ │ ├── terraform │ │ │ └── twilioResourceImportAccountDefaults.sh │ │ └── terragrunt │ │ │ └── twilioResourceImportAccountDefaults.sh │ ├── installScripts.sh │ ├── migration │ │ ├── migrateTFSecrets.sh │ │ └── state │ │ │ ├── copyOldState.sh │ │ │ ├── main.sh │ │ │ ├── stage-chatbot.sh │ │ │ ├── stage-common.sh │ │ │ ├── stage-configure.sh │ │ │ └── stage-provision.sh │ ├── noop │ │ └── external-recordings │ │ │ └── after.sh │ ├── python_tools │ │ ├── .python-version │ │ ├── manageSecrets.py │ │ ├── manageServiceConfig.py │ │ ├── requirements.txt │ │ └── src │ │ │ ├── aws │ │ │ ├── __init__.py │ │ │ ├── s3_client.py │ │ │ ├── ssm_client.py │ │ │ └── sts_client.py │ │ │ ├── gsheet │ │ │ ├── __init__.py │ │ │ └── export_flags_matrix.py │ │ │ ├── lex_v2_migration │ │ │ ├── .gitignore │ │ │ ├── __init__.py │ │ │ ├── bot_definition_example.json │ │ │ ├── create_files.py │ │ │ └── templates │ │ │ │ ├── intent.json │ │ │ │ ├── slot.json │ │ │ │ └── slot_type.json │ │ │ ├── secret_manager │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ └── questionnaire.py │ │ │ ├── service_configuration │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ ├── constants.py │ │ │ ├── manager.py │ │ │ ├── remote_syncer.py │ │ │ ├── service_configuration.py │ │ │ └── version.py │ │ │ └── twilio │ │ │ ├── __init__.py │ │ │ └── twilio.py │ └── verifyPreWork.sh ├── stages │ ├── Makefile │ ├── README.md │ ├── aws-provider.tftpl │ ├── backend-local.tftpl │ ├── backend-remote.tftpl │ ├── configure │ │ ├── .terraform.lock.hcl │ │ ├── Makefile │ │ └── terragrunt.hcl │ ├── external-recordings │ │ ├── .terraform.lock.hcl │ │ ├── Makefile │ │ ├── README.md │ │ └── terragrunt.hcl │ ├── lex │ │ ├── .terraform.lock.hcl │ │ ├── Makefile │ │ ├── README.md │ │ └── terragrunt.hcl │ ├── provision │ │ ├── .terraform.lock.hcl │ │ ├── Makefile │ │ └── terragrunt.hcl │ └── terragrunt.root.hcl └── terraform-modules │ ├── aws │ └── default │ │ ├── main.tf │ │ ├── ssm.tf │ │ └── variables.tf │ ├── channels │ ├── custom-lambdas │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── message-handler-lambda │ │ ├── alb-tg.tf │ │ ├── main.tf │ │ └── variables.tf │ └── v1 │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── datadog │ └── v1 │ │ ├── main.tf │ │ └── variables.tf │ ├── events │ └── v1 │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── external-recordings │ ├── main.tf │ ├── outputs.tf │ └── variables.tf │ ├── hrmServiceIntegration │ └── default │ │ ├── main.tf │ │ └── variables.tf │ ├── lex │ ├── v1 │ │ ├── main.tf │ │ └── variables.tf │ └── v2 │ │ ├── main.tf │ │ └── variables.tf │ ├── serverless │ └── default │ │ ├── .terraform.lock.hcl │ │ ├── getServerlessServiceEnvironmentData.py │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── services │ └── default │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── stages │ ├── configure │ │ ├── main.tf │ │ └── variables.tf │ ├── external-recordings │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── lex │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ └── provision │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── survey │ └── default │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ └── taskRouter │ └── v1 │ ├── main.tf │ ├── outputs.tf │ └── variables.tf └── webchat ├── .eslintrc.json ├── .gitignore ├── .nvmrc ├── .prettierrc.js ├── README.md ├── assets ├── e2e-chat.html └── test-chat.html ├── configurations ├── as-development.ts ├── as-production.ts ├── as-staging.ts ├── ca-production.ts ├── ca-staging.ts ├── cl-production.ts ├── cl-staging.ts ├── co-production.ts ├── co-staging.ts ├── e2e-development.ts ├── et-production.ts ├── et-staging.ts ├── hu-production.ts ├── hu-staging.ts ├── jm-production.ts ├── jm-staging.ts ├── mt-production.ts ├── mt-staging.ts ├── mw-production.ts ├── mw-staging.ts ├── nz-production.ts ├── nz-staging.ts ├── sg-production.ts ├── sg-staging.ts ├── tz-production.ts ├── tz-staging.ts ├── ukmh-production.ts ├── ukmh-staging.ts ├── usch-staging.ts ├── uscr-production.ts ├── uscr-staging.ts ├── za-production.ts ├── za-staging.ts ├── zm-production.ts ├── zm-staging.ts ├── zw-production.ts └── zw-staging.ts ├── global.d.ts ├── jest.config.js ├── package-lock.json ├── package.json ├── private └── secret.example.ts ├── scripts └── output-helplines-for-environment.js ├── src ├── aselo-webchat-state.ts ├── aselo-webchat.tsx ├── blockedIps.json ├── branding-overrides │ └── index.ts ├── contact-identifier │ └── index.ts ├── dom-utils.ts ├── emoji-picker │ ├── components │ │ ├── EmojiButton.tsx │ │ ├── EmojiIcon.tsx │ │ ├── EmojiPicker.tsx │ │ ├── emoji-styles.tsx │ │ └── localizedEmojiPicker.ts │ ├── emoji-state.ts │ └── renderEmojis.tsx ├── end-chat │ ├── CloseChatButtons.tsx │ ├── EndChat.tsx │ ├── QuickExit.tsx │ ├── QuickExitIcon.tsx │ ├── end-chat-service.ts │ └── end-chat-styles.tsx ├── index.html ├── index.ts ├── ip-tracker.ts ├── language.ts ├── messagebubble-component │ ├── CustomMessageBubble.tsx │ ├── message-bubble-styles.tsx │ └── renderCustomMessageBubble.tsx ├── mobile-optimization │ ├── full-screen.ts │ ├── index.ts │ ├── viewport.ts │ └── widget-expanded-listener.ts ├── operating-hours.ts ├── pre-engagement-form │ ├── ReCaptcha │ │ ├── index.tsx │ │ └── recaptchaValidation.ts │ ├── form-components │ │ ├── checkbox.tsx │ │ ├── dependent-select.tsx │ │ ├── form-component.tsx │ │ ├── index.tsx │ │ ├── input-text.tsx │ │ ├── select.tsx │ │ ├── styles.tsx │ │ ├── submit-button.tsx │ │ ├── title.tsx │ │ └── types.ts │ ├── index.tsx │ ├── localization.tsx │ ├── placeholder-form.tsx │ └── state.ts ├── safe-html-parser.tsx ├── task.ts └── translations │ ├── en.ts │ ├── es.ts │ ├── fr.ts │ ├── hu.ts │ ├── index.ts │ ├── mt.ts │ ├── ru.ts │ └── ukr.ts ├── tests └── task.test.ts ├── tsconfig.json ├── types.ts ├── utils.d.ts ├── utils.js └── webpack.config.js /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | **/node_modules/ 3 | **/dist/ 4 | twilio-iac/ -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.tpl text eol=lf 3 | *.tftpl text eol=lf 4 | *.sh text eol=lf -------------------------------------------------------------------------------- /.githooks/commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git secrets --commit_msg_hook -- "$@" 3 | -------------------------------------------------------------------------------- /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git secrets --pre_commit_hook -- "$@" 3 | -------------------------------------------------------------------------------- /.githooks/prepare-commit-msg: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git secrets --prepare_commit_msg_hook -- "$@" 3 | -------------------------------------------------------------------------------- /.github/actions/generate-pre-release/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generate-next-tag", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "generate-next-tag": "npm install && npx ts-node ./generate-next-tag.ts" 9 | }, 10 | "author": "", 11 | "license": "AGPL", 12 | "dependencies": { 13 | "@actions/core": "^1.9.1" 14 | }, 15 | "devDependencies": { 16 | "@types/node": "^18.7.15", 17 | "ts-node": "^10.9.1", 18 | "typescript": "^4.8.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.github/actions/generate-pre-release/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "types": [ 4 | // ... your other types 5 | "node" 6 | ], 7 | }, 8 | } -------------------------------------------------------------------------------- /.github/workflows/config/environment-region-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "development": [ 3 | "us-east-1" 4 | ], 5 | "staging": [ 6 | "us-east-1", 7 | "eu-west-1" 8 | ], 9 | "production": [ 10 | "us-east-1", 11 | "eu-west-1", 12 | "ca-central-1" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio Code 2 | *.code-workspace 3 | .DS_Store 4 | .vscode/settings.json 5 | **/node_modules/ 6 | **/dist 7 | 8 | **/__pycache__/ 9 | 10 | **/junit.xml 11 | -------------------------------------------------------------------------------- /e2e-tests/.eslintignore: -------------------------------------------------------------------------------- 1 | .eslintrc.js -------------------------------------------------------------------------------- /e2e-tests/.gitignore: -------------------------------------------------------------------------------- 1 | # File created during tests 2 | temp/ 3 | .env 4 | test-results/ 5 | ui-tests/junit.xml 6 | junit.xml -------------------------------------------------------------------------------- /e2e-tests/.nvmrc: -------------------------------------------------------------------------------- 1 | 16.20.0 2 | -------------------------------------------------------------------------------- /e2e-tests/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "exclude": [] 5 | } -------------------------------------------------------------------------------- /e2e-tests/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "CommonJS", 4 | "target": "es2019", 5 | "strict": true, 6 | "sourceMap": true, 7 | "esModuleInterop": true, 8 | "declaration": true, 9 | "allowSyntheticDefaultImports": true, 10 | "allowJs": true, 11 | "checkJs": true, 12 | "resolveJsonModule": true, 13 | "outDir": "./dist", 14 | "rootDir": "." 15 | }, 16 | "include": ["**/*.ts"], 17 | "exclude": ["node_modules/**"] 18 | } -------------------------------------------------------------------------------- /lambdas/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "printWidth": 90, 4 | "singleQuote": true, 5 | "trailingComma": "all", 6 | "endOfLine": "auto" 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/account-scoped/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | // This file is copied to the lambda root at build time, so all paths are relative to the root 2 | { 3 | "extends": "./tsconfig.base.json", 4 | "files": [], 5 | "references": [ 6 | { "path": "packages/hrm-types" }, 7 | { "path": "packages/hrm-form-definitions" }, 8 | { "path": "account-scoped" }, 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /lambdas/account-scoped/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "include": ["src/**/*.ts"], 4 | "compilerOptions": { 5 | "outDir": "./dist" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/.eslintignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | .eslintrc.js -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/.nvmrc: -------------------------------------------------------------------------------- 1 | 16.20.0 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "semi": true, 4 | "singleQuote": true, 5 | "trailingComma": "all", 6 | "tabWidth": 2, 7 | "endOfLine": "auto" 8 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "operatingArea": { "searchable": true, "type": "multi-select", "position": "left" }, 5 | 6 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 7 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 8 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 9 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["inProgress", "closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["inProgress"] 13 | }, 14 | "inProgress": { 15 | "value": "inProgress", 16 | "label": "In Progress", 17 | "color": "blue", 18 | "transitions": ["closed"] 19 | } 20 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "label": "English (EN)", "shortLabel": "EN", "aseloLocale": "en-US" }, 3 | { "label": "แบบไทย (TH)", "shortLabel": "TH", "aseloLocale": "th-TH" }, 4 | { "label": "Español (ES)", "shortLabel": "ES", "aseloLocale": "es-CL" } 5 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["age", "gender", "firstName"], 8 | "CallerInformationTab":["province","district"], 9 | "CaseInformationTab":["urgencyLevel"] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/PrepopulateMappings.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "age": "ChildInformationTab.age", 8 | "gender": "ChildInformationTab.gender", 9 | "firstName": "ChildInformationTab.firstName", 10 | "province": "CallerInformationTab.province", 11 | "district": "CallerInformationTab.district", 12 | "urgencyLevel": "CaseInformationTab.urgencyLevel" 13 | } 14 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/caseForms/ChickenForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "boc", 4 | "label": "Boc", 5 | "type": "select", 6 | "options": [ 7 | { "value": "", "label": "" }, 8 | { "value": "Boc", "label": "Boc" }, 9 | { "value": "Bwaaaaak", "label": "Bwaaaaak" }, 10 | { "value": "BocARGHHH", "label": "BocARGHHH" } 11 | ], 12 | "required": { "value": true, "message": "RequiredFieldError" } 13 | } 14 | ] 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "GoodbyeMsg": "The counselor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 4 | "EndChatMsg": "You ended the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "ClosedOutOfShift": "The helpline is out of shift, please reach us later.", 6 | "ClosedHolidays": "The helpline is closed due to a holiday.", 7 | "UnsupportedMediaErrorMsg": "Sorry, the message you just sent is unsupported and could not be delivered." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "HelplineSubstitution": "Helpline-Substitution" 4 | }, 5 | "es": { 6 | "HelplineSubstitution": "Substitución de la Línea de Ayuda" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | }, 10 | { 11 | "attributeName": "conversation_attribute_10", 12 | "insightsObject": "conversations", 13 | "paths": [ 14 | "savedContact.id" 15 | ], 16 | "saveForNonDataContacts": true 17 | } 18 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/profileForms/ProfileOverview.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": { "isPII": true }, 3 | "identifiers": { "isPII": true } 4 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["inProgress", "closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["inProgress"] 13 | }, 14 | "inProgress": { 15 | "value": "inProgress", 16 | "label": "In Progress", 17 | "color": "blue", 18 | "transitions": ["closed"] 19 | } 20 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["age", "gender", "firstName"], 8 | "CallerInformationTab":["province","district"], 9 | "CaseInformationTab":["urgencyLevel"] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | { 2 | "summary": { "isPII": true } 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/flexUiLocales.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "conversation_attribute_10", 4 | "insightsObject": "conversations", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | }, 10 | { 11 | "attributeName": "conversation_attribute_10", 12 | "insightsObject": "conversations", 13 | "paths": [ 14 | "savedContact.id" 15 | ], 16 | "saveForNonDataContacts": true 17 | } 18 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/profileForms/ProfileOverview.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": { "isPII": true }, 3 | "identifiers": { "isPII": true } 4 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/as/v2/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | 5 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 6 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 7 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 8 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Aberto", 5 | "color": "green", 6 | "transitions": ["closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Fechado", 11 | "color": "red", 12 | "transitions": ["open"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "SaferNet", 6 | "value": "SaferNet", 7 | "default": true, 8 | "manager": { 9 | "name": "Juliana Cunha", 10 | "phone": "+20000000", 11 | "email": "julianacunha@safernet.org.br" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Documento", 6 | "description": "Formatos de arquivos aceitos: Word, PDFs, or JPGs.\nArquivo não deve exceder 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comentários", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] 18 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Notas", 5 | "type": "textarea", 6 | "placeholder": "Escreva aqui suas notas...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "pt": {}, 3 | "en": {} 4 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.state" 7 | ] 8 | } 9 | ] 10 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/br/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | 5 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 6 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 7 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 8 | } 9 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/CaseSections.json: -------------------------------------------------------------------------------- 1 | { 2 | "note": { 3 | "label": "Note", 4 | "formPath": "caseForms/NoteForm.json" 5 | }, 6 | "referral": { 7 | "label": "Referral", 8 | "formPath": "caseForms/ReferralForm.json" 9 | }, 10 | "household": { 11 | "label": "Household Member", 12 | "formPath": "caseForms/HouseholdForm.json" 13 | }, 14 | "perpetrator": { 15 | "label": "Perpetrator", 16 | "formPath": "caseForms/PerpetratorForm.json" 17 | }, 18 | "incident": { 19 | "label": "Incident", 20 | "formPath": "caseForms/IncidentForm.json" 21 | } 22 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "ongoing", 4 | "label": "Ongoing", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Closed", 13 | "color": "red", 14 | "transitions": [ 15 | "ongoing" 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "label": "English (EN)", "shortLabel": "EN", "aseloLocale": "en-US" }, 3 | { "label": "French (FR)", "shortLabel": "FR", "aseloLocale": "fr" } 4 | ] 5 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Kids Help Phone", 6 | "value": "Kids Help Phone", 7 | "default": true, 8 | "kmsUrl": "http://kms2013.kidshelp.ca/Pages/Home.aspx", 9 | "manager": { 10 | "name": "Ayisha Memon", 11 | "phone": "", 12 | "email": "" 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["nickname", "age", "gender", "sexualOrientation", "province", "Newcomer", "region", "ethnicity", "school", "livingSituation", "upset", "supportType", "suicidalThoughts"], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "natureOfCrisis", 4 | "label": "Nature of Crisis - Details", 5 | "type": "textarea", 6 | "placeholder": "", 7 | "rows": 10, 8 | "width": 250 9 | }, 10 | { 11 | "name": "safetyPlan", 12 | "label": "Safety Plan", 13 | "type": "textarea", 14 | "placeholder": "", 15 | "rows": 10, 16 | "width": 250 17 | } 18 | ] 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "conversation_attribute_10", 4 | "insightsObject": "conversations", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ca/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Backchannel Email"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | 5 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 6 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 7 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 8 | } 9 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Abierto", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Cerrado", 13 | "color": "red", 14 | "transitions": [ 15 | "open" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Línea Libre", 6 | "value": "Línea Libre", 7 | "default": true, 8 | "manager": { 9 | "name": "Helpline Manager", 10 | "phone": "+123 45 678", 11 | "email": "supervisor@helpline.org" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["age", "gender", "contactIdentifier","friendlyName","province","district","ip"], 8 | "CallerInformationTab":["age", "gender"], 9 | "CaseInformationTab":[] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/PrepopulateMappings.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | }, 4 | "preEngagement":{ 5 | "age": [["ChildInformationTab.age", "CallerInformationTab.age"]], 6 | "gender": [["ChildInformationTab.gender", "CallerInformationTab.gender"]], 7 | "contactIdentifier":"ChildInformationTab.contactIdentifier", 8 | "friendlyName":"ChildInformationTab.friendlyName", 9 | "province":"ChildInformationTab.province", 10 | "district":"ChildInformationTab.district", 11 | "ip":"ChildInformationTab.ip" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Archivo", 6 | "description": "Formato de archivos aceptados: Word, PDFs, o JPGs.\nTamaño de archivo no puede exceder 5MB", 7 | "required": { 8 | "value": true, 9 | "message": "RequiredFieldError" 10 | } 11 | }, 12 | { 13 | "name": "comments", 14 | "label": "Comentarios", 15 | "type": "textarea", 16 | "placeholder": "", 17 | "rows": 20, 18 | "width": 289 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Nota", 5 | "type": "textarea", 6 | "placeholder": "Escriba su nota aquí...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"es": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "customer_attribute_3", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/insights/postSurvey.private.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "insightsObject": "conversations", 4 | "attributeName": "conversation_measure_1", 5 | "questions": [ 6 | "wasHelpful" 7 | ] 8 | }, 9 | { 10 | "insightsObject": "conversations", 11 | "attributeName": "conversation_measure_2", 12 | "questions": [ 13 | "feltSupported" 14 | ] 15 | }, 16 | { 17 | "insightsObject": "conversations", 18 | "attributeName": "conversation_measure_2", 19 | "questions": [ 20 | "wouldRecommend" 21 | ] 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/cl/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Bloqueo Temporal (24 Horas)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Bloqueo Contacto Repetido (30 días)", 10 | "durationInHours": "720" 11 | }, 12 | { 13 | "flag": "blocked", 14 | "label": "Bloqueo Largo Plazo (1 Año)", 15 | "durationInHours": "8760" 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Abierto", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Cerrado", 13 | "color": "red", 14 | "transitions": [ 15 | "open" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Te Guío", 6 | "value": "Te Guío", 7 | "default": true, 8 | "manager": { 9 | "name": "Juan Felipe Urrea", 10 | "phone": "+57 1756 3689", 11 | "email": "teguio@redpapaz.org" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "es": { 3 | "WelcomeMsg": "Hola. ¡Qué gusto saludarte!", 4 | "GoodbyeMsg": "El guía abandonó el chat. Gracias por contactarnos. Por favor contáctanos nuevamente si necesita más ayuda.", 5 | "EndChatMsg": "El usuario a abandonado el chat. Gracias por contactarse con nosotros. Por favor contáctenos de nuevo si necesita más ayuda.", 6 | "UnsupportedMediaErrorMsg": "Lo sentimos, el mensaje que acaba de enviar no es compatible y no se pudo entregar." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "es": {} 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.schooling", 7 | "contactForm.childInformation.grade" 8 | ] 9 | }, 10 | { 11 | "attributeName": "city", 12 | "insightsObject": "customers", 13 | "paths": [ 14 | "contactForm.childInformation.district", 15 | "contactForm.childInformation.province" 16 | ] 17 | } 18 | ] 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/co/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": [ 3 | "Te Protejo", 4 | "Otras Líneas de Ayudas u Otras Org.", 5 | "Instituciones Educativas" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["inProgress", "closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["inProgress"] 13 | }, 14 | "inProgress": { 15 | "value": "inProgress", 16 | "label": "In Progress", 17 | "color": "blue", 18 | "transitions": ["closed"] 19 | } 20 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":[], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 4 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help." 5 | } 6 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | }, 10 | { 11 | "attributeName": "conversation_attribute_10", 12 | "insightsObject": "conversations", 13 | "paths": [ 14 | "savedContact.id" 15 | ], 16 | "saveForNonDataContacts": true 17 | } 18 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/e2e/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["open"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Adama Child Helpline", 6 | "value": "Adama Child Helpline", 7 | "default": true, 8 | "manager": { 9 | "name": "Tamirat Abebe", 10 | "phone": "000 000 0000", 11 | "email": "mira3620@gmail.com" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab": [], 4 | "CallerInformationTab": [] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":[], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 4 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": {} 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.region" 7 | ] 8 | } 9 | ] 10 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/et/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Folyamatban", 5 | "color": "green", 6 | "transitions": ["closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Lezárt", 11 | "color": "red", 12 | "transitions": [] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Kék Vonal", 6 | "value": "Kék Vonal", 7 | "default": true, 8 | "manager": { 9 | "name": "Táler Orsolya", 10 | "phone": "", 11 | "email": "" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":["geolocation"], 4 | "CallerInformationTab":["geolocation"] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":[], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Dokumentum", 6 | "description": "Elfogadott fájlformátumok: Word, PDF vagy JPG.\nA fájl mérete nem haladhatja meg az 5 MB-ot", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Megjegyzés", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] 18 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Megjegyzés", 5 | "type": "textarea", 6 | "placeholder": "", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/caseForms/ReferralForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "date", 4 | "type": "date-input", 5 | "label": "Dátum", 6 | "required": { "value": true, "message": "RequiredFieldError" }, 7 | "metadata": { 8 | "eventTimestampSource": true 9 | } 10 | }, 11 | { 12 | "name": "referredTo", 13 | "label": "Továbbítva", 14 | "type": "input" 15 | }, 16 | { 17 | "name": "comments", 18 | "label": "Megjegyzés", 19 | "type": "textarea", 20 | "rows": 25, 21 | "width": 300 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "hu": {}, 3 | "ukr": {}, 4 | "ru": {} 5 | } 6 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/hu/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": [] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["closed", "passive"] 7 | }, 8 | "passive": { 9 | "value": "passive", 10 | "label": "Passive", 11 | "color": "orange", 12 | "transitions": ["closed", "open"] 13 | }, 14 | "closed": { 15 | "value": "closed", 16 | "label": "Closed", 17 | "color": "red", 18 | "transitions": ["open"] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Meri Trustline", 6 | "value": "Meri Trustline", 7 | "default": true, 8 | "manager": { 9 | "name": "Siddarth Pillai", 10 | "phone": "+91 90826 40268", 11 | "email": "siddharth@ratifoundation.org" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] 18 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 4 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "conversation_attribute_10", 4 | "insightsObject": "conversations", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/in/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Email", "In person", "Other"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | 2 | 3 | { 4 | "open": { 5 | "value": "open", 6 | "label": "Open", 7 | "color": "green", 8 | "transitions": ["closed"] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Closed", 13 | "color": "red", 14 | "transitions": ["open"] 15 | } 16 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | 2 | 3 | { 4 | "label": "Helpline", 5 | "helplines": [ 6 | { 7 | "label": "SafeSpot", 8 | "value": "SafeSpot", 9 | "default": true, 10 | "manager": { 11 | "name": "Anna Dawkins", 12 | "phone": "", 13 | "email": "adawkins@safespotja.com" 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab": ["parish"], 4 | "CallerInformationTab": ["parish"], 5 | "CaseInformationTab": ["howDidYouKnowAboutOurLine"] 6 | }, 7 | "preEngagement":{ 8 | "ChildInformationTab":[], 9 | "CallerInformationTab":[], 10 | "CaseInformationTab":[] 11 | } 12 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "GoodbyeMsg": "The counselor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 4 | "EndChatMsg": "You ended the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "ClosedOutOfShift": "The helpline is out of shift, please reach us later.", 6 | "ClosedHolidays": "The helpline is closed due to a holiday.", 7 | "UnsupportedMediaErrorMsg": "Sorry, the message you just sent is unsupported and could not be delivered." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": { 2 | "abusive": "Abusive - Indecent Exposure" 3 | }} 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "customer_attribute_3", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | } 7 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary - General Assessment of Case and Plan", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "General Assessment of Case and Plan" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/jm/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["BiP"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "label": "High Volume", 4 | "text": "We are currently experiencing a high number of chats, please be patient with us. Alternatively you can contact us through email. May I gently remind you that the chat service is open 24/7" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Ongoing", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Closed", 13 | "color": "red", 14 | "transitions": [ 15 | "ongoing" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Kellimni", 6 | "value": "Kellimni", 7 | "kmsUrl": "https://drive.google.com/drive/folders/1F-hBZ4tkVXQATquLmxgajA-O_lz2kQPk?usp=drive_link", 8 | "default": true, 9 | "manager": { 10 | "name": "Rachel Scicluna", 11 | "phone": "+35621244123", 12 | "email": "rachel@kellimni.org" 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["friendlyName", "language","age","gender","feeling"], 8 | "CallerInformationTab":["friendlyName", "language"], 9 | "CaseInformationTab":[] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/caseForms/CaseSummaryForm.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "File", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { 8 | "value": true, 9 | "message": "RequiredFieldError" 10 | } 11 | }, 12 | { 13 | "name": "comments", 14 | "label": "Comments", 15 | "type": "textarea", 16 | "placeholder": "", 17 | "rows": 20, 18 | "width": 289 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": {}, 3 | "mt": {}, 4 | "ukr": {} 5 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "conversation_attribute_9", 4 | "insightsObject": "conversations", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (2 Hours)", 5 | "durationInHours": "2" 6 | } 7 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mt/v1/tabbedForms/CaseInformationTab.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "callSummary", 4 | "label": "Contact Summary", 5 | "type": "textarea", 6 | "required": { 7 | "value": true, 8 | "message": "RequiredFieldError" 9 | } 10 | }, 11 | { 12 | "name": "repeatCaller", 13 | "label": "Repeat Caller?", 14 | "type": "checkbox" 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["open"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Tithandizane", 6 | "value": "Tithandizane Helpline", 7 | "default": true, 8 | "manager": { 9 | "name": "Moses Msukwa", 10 | "phone": "+265 882 00 03 03", 11 | "email": "mosesmsukwa@yoneco.org" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 4 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.regionalArea", 7 | "contactForm.childInformation.district", 8 | "contactForm.childInformation.traditionalAuthority" 9 | ] 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (1 Year)", 10 | "durationInHours": "8760" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/mw/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Youthline", 6 | "value": "Youthline", 7 | "default": true, 8 | "kmsUrl": "https://youthlineakl.sharepoint.com/:f:/s/HelplineVolunteers/EpyGKTEC61tHq9quKHQD51gBuLEAD1w2-81TqRDX7tTe-A?e=4wpbre", 9 | "manager": { 10 | "name": "", 11 | "phone": "", 12 | "email": "" 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["gender", "age","friendlyName","region","ethnicity"], 8 | "CallerInformationTab":["gender", "age","friendlyName","region","ethnicity"], 9 | "CaseInformationTab":[] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/ReferenceData.json: -------------------------------------------------------------------------------- 1 | { 2 | "responseOptions": [ 3 | { 4 | "value": "", 5 | "label": "" 6 | }, 7 | { 8 | "value": "Yes", 9 | "label": "Yes" 10 | }, 11 | { 12 | "value": "No", 13 | "label": "No" 14 | }, 15 | { 16 | "value": "Unknown", 17 | "label": "Unknown" 18 | }, 19 | { 20 | "value": "Not applicable", 21 | "label": "Not applicable" 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "File", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { 8 | "value": true, 9 | "message": "RequiredFieldError" 10 | } 11 | }, 12 | { 13 | "name": "comments", 14 | "label": "Comments", 15 | "type": "textarea", 16 | "placeholder": "", 17 | "rows": 20, 18 | "width": 289 19 | } 20 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Additional information", 5 | "type": "textarea", 6 | "placeholder": "" 7 | }, 8 | { 9 | "name": "stepsNeeded", 10 | "label": "Any next steps that you feel may need to be considered?", 11 | "type": "textarea", 12 | "placeholder": "" 13 | } 14 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Short Term Block (72 Hours)", 10 | "durationInHours": "72" 11 | }, 12 | { 13 | "flag": "blocked", 14 | "label": "Long Term Block (5 Years)", 15 | "durationInHours": "43848" 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/nz/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": [ 3 | "Email", 4 | "Outgoing SMS" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "label": "What is CSAM", 4 | "text": "CSAM refers to any representation, whether visual, audio, or written combination thereof, by electronic, mechanical, digital, optical, magnetic or any other means, of child engaged or involved in real or simulated explicit sexual activities." 5 | }, 6 | { 7 | "label": "What is Sexual Exploitation?", 8 | "text": "The use of children for sexual gratification by adults for remuneration in cash or kind to the child, or third person(s)." 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "ECPAT Philippines", 6 | "value": "ECPAT Philippines", 7 | "default": true, 8 | "manager": { 9 | "name": "Ginno Corral", 10 | "phone": "(+632) 920 8151", 11 | "email": "ginnoreycorral@gmail.com" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":[], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] 18 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": {}, 3 | "tl": {} 4 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ph/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["In person", "Analyst Report", "Other"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/CallTypeButtons.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "child", 4 | "label": "Child calling about self", 5 | "type": "button", 6 | "category": "data" 7 | }, 8 | { 9 | "name": "caller", 10 | "label": "Someone calling about a child", 11 | "type": "button", 12 | "category": "data" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["inProgress", "closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["inProgress"] 13 | }, 14 | "inProgress": { 15 | "value": "inProgress", 16 | "label": "In Progress", 17 | "color": "blue", 18 | "transitions": ["closed"] 19 | } 20 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Tinkle Friend", 6 | "value": "Tinkle Friend", 7 | "default": true, 8 | "manager": { 9 | "name": "Ahmad Taufiq Bin Muhammad", 10 | "email": "taufiq@childrensociety.org.sg" 11 | } 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["firstName", "gender", "age", "reason", "howDidYouHearAboutUs", "contactNumber", "emailAddress"], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "customer_attribute_3", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (3 Hours)", 5 | "durationInHours": "3" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (1 Week)", 10 | "durationInHours": "168" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/sg/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/CallTypeButtons.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "child", 4 | "label": "เด็ก", 5 | "type": "button", 6 | "category": "data" 7 | }, 8 | { 9 | "name": "caller", 10 | "label": "ผู้ติดต่ออื่น", 11 | "type": "button", 12 | "category": "data" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "label": "ยินดีต้อนรับ", 4 | "text": "สวัสดีค่ะ มูลนิธิสายเด็ก1387 ยินดีให้บริการค่ะ กรุณาบอกอายุและจังหวัดที่น้องอยู่ค่ะ" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "เปิด", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "ปิด", 13 | "color": "red", 14 | "transitions": [ 15 | "open" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "แผนก", 3 | "helplines": [ 4 | { 5 | "label": "มูลนิธิสายเด็ก 1387", 6 | "value": "มูลนิธิสายเด็ก 1387", 7 | "default": true, 8 | "manager": { 9 | "name": "Jinda Chaipon", 10 | "phone": "+66 93 614 1654", 11 | "email": "jinda@childlinethailand.org " 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "สามารถโหลดไฟล์ Word, PDF หรือ JPG.\n โดยขนาดไฟล์ไม่เกิน 5 MB", 7 | "required": { 8 | "value": true, 9 | "message": "RequiredFieldError" 10 | } 11 | }, 12 | { 13 | "name": "comments", 14 | "label": "Comments", 15 | "type": "textarea", 16 | "placeholder": "", 17 | "rows": 20, 18 | "width": 289 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "th": { 3 | "WelcomeMsg": "สวัสดีค่ะ มูลนิธิสายเด็ก1387 ยินดีให้บริการค่ะ กรุณาบอกอายุและจังหวัดที่น้องอยู่ค่ะ", 4 | "GoodbyeMsg": "พี่ๆ สายเด็กขอบคุณนะคะที่มาใช้บริการ หากมีเรื่องไม่สบายใจ อยากปรึกษา อยากระบาย ทักมาหากันได้เลยนะคะ ตั้งแต่เวลา 06:00-24:00", 5 | "UnsupportedMediaErrorMsg": "ขออภัย ข้อความที่คุณเพิ่งส่งไม่รองรับและไม่สามารถส่งได้" 6 | }, 7 | "en": {} 8 | } 9 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"th": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "customer_attribute_3", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Long Term Block (100 Years)", 5 | "durationInHours": "876600" 6 | } 7 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/th/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Email", "ติดต่อศูนย์","ลงพื้นที่","จดหมาย", "TikTok", "Media Monitoring"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "ongoing", 4 | "label": "Ongoing", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Closed", 13 | "color": "red", 14 | "transitions": [ 15 | "ongoing" 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "National Child Helpline", 6 | "value": "National Child Helpline", 7 | "default": true, 8 | "manager": { 9 | "name": "Helpline Manager", 10 | "phone": "+255222936576", 11 | "email": "info@sematanzania.org" 12 | } 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["age", "gender", "firstName", "location"], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Welcome to the National Child Helpline 116, you are speaking to a counsellor, welcome to serve you. \n Karibu Huduma Simu kwa Mtoto Namba 116, unaongea na mshauri nasaha, Karibu nikuhudumie.", 4 | "GoodbyeMsg": "The Counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/tz/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Closed", 13 | "color": "red", 14 | "transitions": [ 15 | "open" 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Mental Health Innovations", 6 | "value": "Mental Health Innovations", 7 | "default": true, 8 | "manager": { 9 | "name": "Helpline Manager", 10 | "phone": "+12345678910", 11 | "email": "info@helpline.org" 12 | } 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["firstName", "lastName", "contactIdentifier", "phone1", "ip", "anxietyScale"], 8 | "CallerInformationTab":[], 9 | "CaseInformationTab":[] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "safeguardingConcernsRaised", 9 | "label": "Safeguarding concerns raised", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/caseForms/CaseSummaryForm.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Welcome to The Mix. We'll be with you soon. If you're currently in crisis, text THEMIX to 85258", 4 | "GoodbyeMsg": "The Peer Supporter has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "EndChatMsg": "The Young person left the conversation.", 6 | "UnsupportedMediaErrorMsg": "Sorry, the message you just sent is unsupported and could not be delivered." 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/insights/oneToOneConfigSpec.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | }, 11 | { 12 | "name": "details", 13 | "label": "Details", 14 | "editLabel": "Edit Details", 15 | "type": "textarea", 16 | "rows": 20, 17 | "width": 500, 18 | "placeholder": "Enter Details" 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/ukmh/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["inProgress", "closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["inProgress"] 13 | }, 14 | "inProgress": { 15 | "value": "inProgress", 16 | "label": "In Progress", 17 | "color": "blue", 18 | "transitions": ["closed"] 19 | } 20 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Childhelp", 3 | "helplines": [ 4 | { 5 | "label": "Childhelp", 6 | "value": "Childhelp", 7 | "default": true, 8 | "kmsUrl": "www.google.com", 9 | "manager": { 10 | "name": "Helpline Manager", 11 | "phone": "+123 45 678", 12 | "email": "supervisor@helpline.org" 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey":{ 3 | "ChildInformationTab":[], 4 | "CallerInformationTab":[] 5 | }, 6 | "preEngagement":{ 7 | "ChildInformationTab":["childAge", "childGender", "childState"], 8 | "CallerInformationTab":["province","district"], 9 | "CaseInformationTab":["howTheHelpseekerHeardAboutUs"] 10 | } 11 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "GoodbyeMsg": "The counselor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 4 | "EndChatMsg": "You ended the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "ClosedOutOfShift": "The helpline is out of shift, please reach us later.", 6 | "ClosedHolidays": "The helpline is closed due to a holiday.", 7 | "UnsupportedMediaErrorMsg": "Sorry, the message you just sent is unsupported and could not be delivered." 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | }, 10 | { 11 | "attributeName": "conversation_attribute_10", 12 | "insightsObject": "conversations", 13 | "paths": [ 14 | "savedContact.id" 15 | ], 16 | "saveForNonDataContacts": true 17 | } 18 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/profileForms/ProfileOverview.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": { "isPII": true }, 3 | "identifiers": { "isPII": true } 4 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/usch/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/BlockedEmojis.json: -------------------------------------------------------------------------------- 1 | [ 2 | "beer", 3 | "beers", 4 | "wine_glass", 5 | "cocktail", 6 | "tropical_drink", 7 | "tumbler_glass", 8 | "smoking", 9 | "middle_finger", 10 | "wink", 11 | "stuck_out_tongue_winking_eye", 12 | "kissing_heart", 13 | "kissing", 14 | "kissing_closed_eyes", 15 | "kissing_smiling_eyes", 16 | "tongue", 17 | "eggplant", 18 | "peach", 19 | "dancers", 20 | "men-with-bunny-ears-partying", 21 | "women-with-bunny-ears-partying", 22 | "syringe", 23 | "pill" 24 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/CallTypeButtons.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "child", 4 | "label": "RESPONDERS: Incident in the Field", 5 | "type": "button", 6 | "category": "data" 7 | }, 8 | { 9 | "name": "caller", 10 | "label": "OPERATORS: Incident Requested", 11 | "type": "button", 12 | "category": "data" 13 | }, 14 | { 15 | "name": "test", 16 | "label": "Test/Informational", 17 | "type": "button", 18 | "category": "non-data" 19 | } 20 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, "operatingArea": { "searchable": true, "type": "multi-select", "position": "left" }, 4 | 5 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 6 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 7 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 8 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "CIRCLE", 6 | "value": "CIRCLE", 7 | "default": true, 8 | "kmsUrl": "http://www.google.com", 9 | "manager": { 10 | "name": "Helpline Manager", 11 | "phone": "+123 45 678", 12 | "email": "supervisor@helpline.org" 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/PrepopulateKeys.json: -------------------------------------------------------------------------------- 1 | { 2 | "survey": { 3 | "ChildInformationTab": [], 4 | "CallerInformationTab": [] 5 | }, 6 | "preEngagement": { 7 | "ChildInformationTab": [ 8 | "incidentSummary", 9 | "specificLocation" 10 | ], 11 | "CallerInformationTab": [ 12 | "contactIdentifier", 13 | "friendlyName", 14 | "officeDepartmentBid" 15 | 16 | ], 17 | "CaseInformationTab": [ 18 | "priority" 19 | ] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/flexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | }, 10 | { 11 | "attributeName": "conversation_attribute_10", 12 | "insightsObject": "conversations", 13 | "paths": [ 14 | "savedContact.id" 15 | ], 16 | "saveForNonDataContacts": true 17 | } 18 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (24 Hours)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Long Term Block (5 Years)", 10 | "durationInHours": "43848" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/uscr/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["inProgress", "closed"] 7 | }, 8 | "inProgress": { 9 | "value": "inProgress", 10 | "label": "In Progress", 11 | "color": "green", 12 | "transitions": ["closed"] 13 | }, 14 | "closed": { 15 | "value": "closed", 16 | "label": "Closed", 17 | "color": "red", 18 | "transitions": ["open"] 19 | } 20 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | 2 | [ 3 | { 4 | "name": "note", 5 | "label": "Note", 6 | "type": "textarea", 7 | "placeholder": "Type here to add note...", 8 | "rows": 20, 9 | "width": 500 10 | } 11 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.municipality", 8 | "contactForm.childInformation.district" 9 | ] 10 | }, 11 | { 12 | "attributeName": "conversation_attribute_10", 13 | "insightsObject": "conversations", 14 | "paths": [ 15 | "savedContact.id" 16 | ], 17 | "saveForNonDataContacts": true 18 | } 19 | ] 20 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/za/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Email", "In person", "Correspondence"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": ["closed"] 7 | }, 8 | "closed": { 9 | "value": "closed", 10 | "label": "Closed", 11 | "color": "red", 12 | "transitions": ["open"] 13 | } 14 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/caseForms/DocumentForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "fileName", 4 | "type": "file-upload", 5 | "label": "Document", 6 | "description": "Accepted file formats: Word, PDFs, or JPGs.\nFile size not to exceed 5MB", 7 | "required": { "value": true, "message": "RequiredFieldError" } 8 | }, 9 | { 10 | "name": "comments", 11 | "label": "Comments", 12 | "type": "textarea", 13 | "placeholder": "", 14 | "rows": 20, 15 | "width": 289 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "area", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "contactForm.childInformation.province", 7 | "contactForm.childInformation.district" 8 | ] 9 | }, 10 | { 11 | "attributeName": "conversation_attribute_10", 12 | "insightsObject": "conversations", 13 | "paths": [ 14 | "savedContact.id" 15 | ], 16 | "saveForNonDataContacts": true 17 | } 18 | ] 19 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zm/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Bulletin board", "Post", "In person", "Website forum", "Other"] 3 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/CannedResponses.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/CaseFilters.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": { "component": "generate-status-filter", "position": "left" }, 3 | "counselor": { "component": "generate-counselor-filter", "position": "left" }, 4 | "createdDate": { "component": "generate-created-date-filter", "position": "right" }, 5 | "updatedDate": { "component": "generate-updated-date-filter", "position": "right" }, 6 | "followUpDate": { "type": "date-input", "allowFutureDates": true, "position": "right" } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/CaseStatus.json: -------------------------------------------------------------------------------- 1 | { 2 | "open": { 3 | "value": "open", 4 | "label": "Open", 5 | "color": "green", 6 | "transitions": [ 7 | "closed" 8 | ] 9 | }, 10 | "closed": { 11 | "value": "closed", 12 | "label": "Closed", 13 | "color": "red", 14 | "transitions": [ 15 | "open" 16 | ] 17 | } 18 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/FlexUiLocales.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/HelplineInformation.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Helpline", 3 | "helplines": [ 4 | { 5 | "label": "Helpline Centre", 6 | "value": "Helpline Centre", 7 | "default": true, 8 | "manager": { 9 | "name": "Munyaradzi Nhemachena", 10 | "phone": "263 24 225 2000", 11 | "email": "helplinehre@childline.org.zw" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/caseForms/CaseOverview.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "status", 4 | "label": "Case Status", 5 | "type": "select" 6 | }, 7 | { 8 | "name": "childIsAtRisk", 9 | "label": "Child is at risk", 10 | "type": "checkbox" 11 | }, 12 | { 13 | "name": "followUpDate", 14 | "label": "Follow Up Date", 15 | "type": "date-input" 16 | }, 17 | { 18 | "name": "summary", 19 | "label": "Summary", 20 | "type": "textarea", 21 | "rows": 5, 22 | "width": 300, 23 | "isPII": true 24 | } 25 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/caseForms/NoteForm.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "note", 4 | "label": "Note", 5 | "type": "textarea", 6 | "placeholder": "Type here to add note...", 7 | "rows": 20, 8 | "width": 500 9 | } 10 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/customStrings/Messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "en": { 3 | "WelcomeMsg": "Hi, this is the agent. How can I help you?", 4 | "GoodbyeMsg": "The agent has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/customStrings/Substitutions.json: -------------------------------------------------------------------------------- 1 | {"en": {}} 2 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/insights/oneToManyConfigSpecs.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "attributeName": "customer_attribute_3", 4 | "insightsObject": "customers", 5 | "paths": [ 6 | "savedContact.id" 7 | ], 8 | "saveForNonDataContacts": true 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/profileForms/FlagDurations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "flag": "blocked", 4 | "label": "Short Term Block (1 Day)", 5 | "durationInHours": "24" 6 | }, 7 | { 8 | "flag": "blocked", 9 | "label": "Medium Term Block (1 Week)", 10 | "durationInHours": "168" 11 | }, 12 | { 13 | "flag": "blocked", 14 | "label": "Long Term Block (1 Year)", 15 | "durationInHours": "8760" 16 | } 17 | ] -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/profileForms/Sections.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "summary", 4 | "label": "Summary", 5 | "editLabel": "Edit Summary", 6 | "type": "textarea", 7 | "rows": 20, 8 | "width": 500, 9 | "placeholder": "Enter a summary of the client" 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/form-definitions/zw/v1/tabbedForms/ContactlessTaskTab.json: -------------------------------------------------------------------------------- 1 | { 2 | "offlineChannels": ["Aerogram","Childline Mobile App","Video Relay System","Drop-In","HSCT","U-Report","Virtual Peer to Peer","Mobile Drop-In","YCFIC"] 3 | } 4 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src/**/*.ts", "src/**/*.js"], 4 | "exclude": [] 5 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-form-definitions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "CommonJS", 4 | "target": "es2019", 5 | "strict": true, 6 | "sourceMap": true, 7 | "esModuleInterop": true, 8 | "declaration": true, 9 | "allowSyntheticDefaultImports": true, 10 | "allowJs": true, 11 | "checkJs": true, 12 | "resolveJsonModule": true, 13 | "outDir": "./dist", 14 | "rootDir": "./src" 15 | }, 16 | "include": ["src/**/*.ts", "src/**/*.js"], 17 | "exclude": ["src/**/*.test.ts", "src/__tests__/**"] 18 | } -------------------------------------------------------------------------------- /lambdas/packages/hrm-types/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@tech-matters/hrm-types", 3 | "version": "1.0.0", 4 | "description": "Module to hold HRM data types (twilio domain repo version)", 5 | "main": "dist/index.js", 6 | "devDependencies": { 7 | "ts-node": "^10.1.0", 8 | "typescript": "^4.3.5" 9 | }, 10 | "scripts": { 11 | "build": "npx tsc", 12 | "lint": "eslint --max-warnings 5 --ext ts src" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lambdas/packages/hrm-types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "include": ["src/**/*.ts"], 4 | "compilerOptions": { 5 | "outDir": "./dist" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lambdas/packages/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "compilerOptions": { 4 | "declaration": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /lambdas/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node16/tsconfig.json", 3 | "exclude": ["**/*.test.ts", "**/node_modules"], 4 | "compilerOptions": { 5 | "esModuleInterop": true, 6 | "lib": ["ES2022"], 7 | "strict": true, 8 | "allowSyntheticDefaultImports": true, 9 | "allowJs": true, 10 | "checkJs": true, 11 | "resolveJsonModule": true 12 | }, 13 | "ts-node": { 14 | "transpileOnly": true, 15 | "files": true 16 | } 17 | } -------------------------------------------------------------------------------- /lambdas/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "include": [".eslintrc.js", "jest.config.js", "**/*.ts", "**/*.js", "**/index.d.ts"], 4 | "exclude": ["cdk.out/**", "**/dist/**", "**/coverage/**", "node_modules/**", "**/node_modules/**"] 5 | } 6 | -------------------------------------------------------------------------------- /lambdas/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "files": [], 4 | // The references must be in order. If package A is a dependency for package B, then A must be referenced before B. For more details see https://www.typescriptlang.org/docs/handbook/project-references.html 5 | "references": [ 6 | { "path": "packages/hrm-types" }, 7 | { "path": "packages/hrm-form-definitions" }, 8 | { "path": "account-scoped" } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /plugin-hrm-form/.env: -------------------------------------------------------------------------------- 1 | ENABLE_MONITORING=false 2 | -------------------------------------------------------------------------------- /plugin-hrm-form/.env.production: -------------------------------------------------------------------------------- 1 | ENABLE_MONITORING=true -------------------------------------------------------------------------------- /plugin-hrm-form/.npmrc: -------------------------------------------------------------------------------- 1 | legacy-peer-deps=true -------------------------------------------------------------------------------- /plugin-hrm-form/.nvmrc: -------------------------------------------------------------------------------- 1 | 20.18.3 -------------------------------------------------------------------------------- /plugin-hrm-form/public/plugins.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "HrmFormPlugin", 4 | "version": "0.0.0", 5 | "class": "HrmFormPlugin", 6 | "requires": [ 7 | { 8 | "@twilio/flex-ui": "^1.11.2" 9 | } 10 | ], 11 | "src": "http://localhost:3000/plugin-hrm-form.js" 12 | } 13 | ] 14 | -------------------------------------------------------------------------------- /plugin-hrm-form/public/plugins.local.build.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "HrmFormPlugin", 4 | "version": "0.0.0", 5 | "class": "HrmFormPlugin", 6 | "requires": [ 7 | { 8 | "@twilio/flex-ui": "^1.11.2" 9 | } 10 | ], 11 | "src": "http://127.0.0.1:8085" 12 | } 13 | ] 14 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/private/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/accessibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/accessibility.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/addon-library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/addon-library.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/assets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/assets.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/avif-test-image.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/avif-test-image.avif -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/context.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/context.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/docs.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/figma-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/figma-plugin.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/share.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/styling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/styling.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/testing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/testing.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/stories/assets/theming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/plugin-hrm-form/src/stories/assets/theming.png -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-CA/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hi, you've reached a counsellor. What would you like to talk about?", 3 | "GoodbyeMsg": "Would you have 5 minutes to answer a few questions to help us improve the service? The survey is optional. We appreciate your help if you choose to participate! You can also find more information about data usage & the survey by clicking the link: https://survey.alchemer-ca.com/s3/50188874/Post-Chat-Survey" 4 | } 5 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-GB/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Please leave your message below and a pracitioner will aim to get back to you when they can.", 3 | "GoodbyeMsg": "Thank you for reaching out. Please contact us again if you need more help." 4 | } 5 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-IN/messages.json: -------------------------------------------------------------------------------- 1 | 2 | 3 | { 4 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 5 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 6 | 7 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 8 | } 9 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-JM/flexUI.json: -------------------------------------------------------------------------------- 1 | { 2 | "abusive": "Abusive - Indecent Exposure" 3 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-JM/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 3 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 4 | 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-MT/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hi, this is the professional. How can I help you?", 3 | "GoodbyeMsg": "Thank you for contacting us. Feel free to come again, we are available 24/7." 4 | } 5 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-US/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 3 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 4 | 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-USCH/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hi, this is the counsellor. How can I help you?", 3 | "GoodbyeMsg": "The counsellor has left the chat. Thank you for reaching out. Please contact us again if you need more help.", 4 | 5 | "SaferNet-CustomGoodbyeMsg": "This chat has ended. Thank you for reaching out. Please help us improve by rating your experience through the following link: " 6 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-USCR/flexUI.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/en-USCR/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/es-CO/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hola. ¡Qué gusto saludarte!", 3 | "GoodbyeMsg": "El guía ha abandonado el chat. Gracias por comunicarte. Por favor, vuelve a escribirnos si necesitas más ayuda." 4 | } 5 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/es-ES/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Hola, este es el consejero. ¿Cómo puedo ayudarle?", 3 | "GoodbyeMsg": "El consejero ha abandonado el chat. Gracias por comunicarse. Por favor, póngase en contacto con nosotros de nuevo si necesita más ayuda.", 4 | "SaferNet-CustomGoodbyeMsg": "Este chat ha terminado. Gracias por comunicarse. Por favor, ayúdanos a mejorar calificando tu experiencia a través del siguiente enlace: " 5 | } 6 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/hu-HU/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Szia, a Kék Vonal ügyelője vagyok. Hogyan tudok segíteni Neked?", 3 | "GoodbyeMsg": "Az ügyelő lezárta a beszélgetést. Köszönjük, hogy megkerestél minket. Jelentkezz újra, ha segítségre van szükséged" 4 | } 5 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/locales/en-NZ.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/locales/en-US.json: -------------------------------------------------------------------------------- 1 | { 2 | "Locale-English": "English" 3 | } -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/pt-BR/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "Olá, sou da equipe da SaferNet, precisa de ajuda?", 3 | "GoodbyeMsg": "O atendente saiu do chat. Obrigado por nos contactar. Por favor, entre em contato novamente se precisar de mais ajuda", 4 | 5 | "SaferNet-CustomGoodbyeMsg": "Essa conversa foi finalizada. Obrigada por nos contatar. Por favor, nos ajude a melhorar o canal avaliando a orientação que recebeu clicando no link ao lado: " 6 | } 7 | -------------------------------------------------------------------------------- /plugin-hrm-form/src/translations/th-TH/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "WelcomeMsg": "สวัสดีค่ะ มูลนิธิสายเด็ก1387 ยินดีให้บริการค่ะ กรุณาบอกอายุและจังหวัดที่น้องอยู่ค่ะ", 3 | "GoodbyeMsg": "พี่ๆ สายเด็กขอบคุณนะคะที่มาใช้บริการ หากมีเรื่องไม่สบายใจ อยากปรึกษา อยากระบาย ทักมาหากันได้เลยนะคะ ตั้งแต่เวลา 06:00-24:00" 4 | 5 | 6 | } 7 | -------------------------------------------------------------------------------- /scripts/.eslintignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | .eslintrc.js -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | source.json 2 | destination.json 3 | !package.json 4 | !package-lock.json 5 | dist/ 6 | .env 7 | private/ 8 | 9 | # Generated files 10 | new-flex-plugins-workflow.yml 11 | new-serverless-workflow.yml 12 | /src/autopilot-migration/json/ 13 | -------------------------------------------------------------------------------- /scripts/.nvmrc: -------------------------------------------------------------------------------- 1 | 18.12.1 2 | -------------------------------------------------------------------------------- /scripts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "semi": true, 4 | "singleQuote": true, 5 | "trailingComma": "all", 6 | "tabWidth": 2, 7 | "endOfLine": "auto" 8 | } -------------------------------------------------------------------------------- /scripts/src/terraformSupplemental/handleSsmRoleArg.ts: -------------------------------------------------------------------------------- 1 | import { setRoleToAssume } from '../helpers/ssm'; 2 | import { logDebug } from '../helpers/log'; 3 | 4 | export const handleSsmRoleArg = (argv: any) => { 5 | logDebug('handleSsmRoleArg: ', argv.ssmRole); 6 | if (argv.ssmRole) { 7 | setRoleToAssume(argv.ssmRole); 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /scripts/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src/**/*.ts", "src/**/*.js", "*.js"] 4 | } -------------------------------------------------------------------------------- /scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/node14/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "es2019", 5 | "strict": true, 6 | "sourceMap": true, 7 | "esModuleInterop": true, 8 | "allowSyntheticDefaultImports": true, 9 | "allowJs": true, 10 | "checkJs": true, 11 | "resolveJsonModule": true, 12 | "moduleResolution": "node", 13 | "outDir": "./dist", 14 | "rootDir": "./src" 15 | }, 16 | "include": ["src/**/*.ts", "src/**/*.js"] 17 | } 18 | -------------------------------------------------------------------------------- /twilio-iac/.gitignore: -------------------------------------------------------------------------------- 1 | **/*private.tfvars 2 | **/*private.json 3 | **/*.tfstate 4 | **/*.tfstate.lock.info 5 | 6 | .env 7 | 8 | .terraform/ 9 | .terragrunt-cache/ 10 | terragrunt-debug.tfvars.json -------------------------------------------------------------------------------- /twilio-iac/.tflint.hcl: -------------------------------------------------------------------------------- 1 | plugin "terraform" { 2 | enabled = true 3 | preset = "recommended" 4 | } 5 | 6 | plugin "aws" { enabled = true } 7 | -------------------------------------------------------------------------------- /twilio-iac/Makefile: -------------------------------------------------------------------------------- 1 | GIT_ROOT := $(shell git rev-parse --show-toplevel) 2 | 3 | include $(GIT_ROOT)/twilio-iac/makefiles/*.make 4 | include $(GIT_ROOT)/twilio-iac/makefiles/terragrunt/*.make -------------------------------------------------------------------------------- /twilio-iac/helplines/as/configs/service-configuration/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "definitionVersion": "demo-v1", 4 | "feature_flags": { 5 | "enable_active_contact_header": true, 6 | "enable_client_profiles": true, 7 | "enable_conferencing": true, 8 | "enable_fullstory_monitoring": true, 9 | "enable_hierarchical_translations": true, 10 | "enable_region_resource_search": true, 11 | "enable_save_in_progress_contacts": true 12 | }, 13 | "helplineLanguage": "en-US" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /twilio-iac/helplines/as/development.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | common_config_hcl = read_terragrunt_config("common.hcl") 3 | common_config = local.common_config_hcl.locals.config 4 | config = merge(local.common_config, local.local_config) 5 | 6 | local_config = { 7 | enable_external_recordings = true 8 | permission_config = "dev" 9 | get_profile_flags_for_identifier_base_url = "hrm-development.tl.techmatters.org/lambda/twilio/account-scoped" 10 | } 11 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/baseline/configs/service-configuration/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "contacts_waiting_channels": [ 4 | "web" 5 | ], 6 | "definitionVersion": "-v1", 7 | "helplineLanguage": "en-US", 8 | "permissionConfig": "" 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/baseline/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "" 5 | } 6 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/baseline/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/baseline/production.hcl: -------------------------------------------------------------------------------- 1 | /** 2 | * This file overrides the config output by `common.hcl` that are specific to the production environment. 3 | **/ 4 | 5 | locals { 6 | common_config_hcl = read_terragrunt_config("common.hcl") 7 | common_config = local.common_config_hcl.locals.config 8 | config = merge(local.common_config, local.local_config) 9 | 10 | local_config = { 11 | custom_task_routing_filter_expression = "" 12 | flow_vars = {} 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /twilio-iac/helplines/baseline/staging.hcl: -------------------------------------------------------------------------------- 1 | /** 2 | * This file overrides the config output by `common.hcl` that are specific to the staging environment. 3 | **/ 4 | 5 | locals { 6 | common_config_hcl = read_terragrunt_config("common.hcl") 7 | common_config = local.common_config_hcl.locals.config 8 | config = merge(local.common_config, local.local_config) 9 | 10 | local_config = { 11 | custom_task_routing_filter_expression = "" 12 | flow_vars = {} 13 | } 14 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/br/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "assets_bucket_url": "https://s3.amazonaws.com/assets-staging.tl.techmatters.org", 4 | "feature_flags": { 5 | "enable_external_transcripts": false 6 | 7 | }, 8 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/cl/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/", 6 | "resources_base_url": "" 7 | } 8 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/cl/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "pdfImagesSource": "https://tl-public-chat-cl-stg.s3.amazonaws.com", 6 | "helpline_code": "cl", 7 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 8 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/cl/files/additional.chatbot.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | custom_chatbots = { 3 | post_survey: { 4 | sid= module.custom_chatbots.post_survey_bot_es_sid 5 | } 6 | } 7 | } 8 | 9 | module "custom_chatbots" { 10 | source = "../../chatbots/linea-libre-cl" 11 | serverless_url = local.serverless_url 12 | } 13 | -------------------------------------------------------------------------------- /twilio-iac/helplines/co/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "previous_ui_version": { 6 | "date": "2022-12-15T11:41:49.281Z", 7 | "semver": "~1.31.2", 8 | "version": "1.31.2" 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/co/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/configs/lex/pt/slot_types/yes_no.json: -------------------------------------------------------------------------------- 1 | { 2 | "yes_no": { 3 | "description": "General configs/lex/en/slot_types slot type for Yes-No kind of questions", 4 | "value_selection_strategy": "TOP_RESOLUTION", 5 | "values": { 6 | "Yes": { 7 | "synonyms": [ 8 | "y", 9 | "sim", 10 | "claro", 11 | "yeah", 12 | "OK", 13 | "1" 14 | ] 15 | }, 16 | "No": { 17 | "synonyms": [ 18 | "n", 19 | "no", 20 | "não", 21 | "2" 22 | ] 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/e2e/configs/service-configuration/development.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /twilio-iac/helplines/et/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "previous_ui_version": { 6 | "date": "2022-12-15T09:01:38.531Z", 7 | "semver": "~1.31.2", 8 | "version": "1.31.2" 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/et/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "previous_ui_version": { 6 | "date": "2022-12-02T14:30:25.818Z", 7 | "semver": "~1.31.2", 8 | "version": "1.31.2" 9 | }, 10 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 11 | } 12 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/files/additional.chatbot.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * This is pretty hacky, but it is short term, so I'm not going to worry about it too much. 3 | * The[chatbot stage module's chatbot_sids output ../../terraform-modules/stages/chatbot/outputs.tf 4 | * dependnds on this custom_chatbots local variable so that it can merge together outputs from 5 | * the "standard" chatbot module and any helpline specific custom chatbot modules. 6 | * See the co chatbot for an example: ../co/files/additional.chatbot.tf 7 | **/ 8 | locals { 9 | custom_chatbots = {} 10 | } 11 | -------------------------------------------------------------------------------- /twilio-iac/helplines/files/additional.configure.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /twilio-iac/helplines/files/additional.lex.tf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /twilio-iac/helplines/files/additional.provision.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/twilio-iac/helplines/files/additional.provision.tf -------------------------------------------------------------------------------- /twilio-iac/helplines/hu/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "contacts_waiting_channels": [ 4 | "voice", 5 | "web" 6 | ], 7 | "feature_flags": { 8 | "enable_canned_responses": false, 9 | "enable_contact_editing": false 10 | }, 11 | "hrm_base_url": "https://hrm-production-eu.tl.techmatters.org" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /twilio-iac/helplines/hu/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "hrm_base_url": "https://hrm-staging-eu.tl.techmatters.org", 6 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /twilio-iac/helplines/in/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "pdfImagesSource": "https://tl-public-chat-in-prod.s3.amazonaws.com", 6 | "previous_ui_version": { 7 | "date": "2022-12-15T10:50:34.295Z", 8 | "semver": "~1.31.2", 9 | "version": "1.31.2" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/in/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "helplineLanguage": "en-IN", 6 | "hrm_base_url": "https://hrm-staging.tl.techmatters.org", 7 | "pdfImagesSource": "https://tl-public-chat-in-stg.s3.amazonaws.com", 8 | "previous_ui_version": { 9 | "date": "2022-12-02T13:26:43.739Z", 10 | "semver": "~1.31.2", 11 | "version": "1.31.2" 12 | }, 13 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 14 | } 15 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/in/production.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | common_config_hcl = read_terragrunt_config("common.hcl") 3 | common_config = local.common_config_hcl.locals.config 4 | config = merge(local.common_config, local.local_config) 5 | 6 | local_config = { 7 | custom_task_routing_filter_expression = "isContactlessTask==true" 8 | 9 | 10 | flow_vars = {} 11 | 12 | 13 | channels = {} 14 | } 15 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/in/staging.hcl: -------------------------------------------------------------------------------- 1 | locals { 2 | common_config_hcl = read_terragrunt_config("common.hcl") 3 | common_config = local.common_config_hcl.locals.config 4 | config = merge(local.common_config, local.local_config) 5 | 6 | 7 | local_config = { 8 | 9 | custom_task_routing_filter_expression = "isContactlessTask==true or twilioNumber=='whatsapp:+18122896374'" 10 | 11 | 12 | flow_vars = {} 13 | 14 | 15 | channels = {} 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/jm/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "multipleOfficeSupport": true, 6 | "previous_ui_version": { 7 | "date": "2022-12-15T10:11:44.338Z", 8 | "semver": "~1.31.2", 9 | "version": "1.31.2" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/mt/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/", 6 | "helplineLanguage": "en-MT" 7 | } 8 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/mt/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | "enable_client_profiles": true 5 | }, 6 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 7 | "helplineLanguage": "en-MT", 8 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/mw/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | "enable_fullstory_monitoring": false 5 | }, 6 | "previous_ui_version": { 7 | "date": "2022-12-15T09:06:48.011Z", 8 | "semver": "~1.31.2", 9 | "version": "1.31.2" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/mw/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | "enable_external_transcripts": false 5 | }, 6 | "hrm_base_url": "https://hrm-test.tl.techmatters.org", 7 | "pdfImagesSource": "https://tl-public-chat-mw-stg.s3.amazonaws.com", 8 | "previous_ui_version": { 9 | "date": "2022-12-05T10:39:38.567Z", 10 | "semver": "~1.31.2", 11 | "version": "1.31.2" 12 | }, 13 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 14 | } 15 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/nz/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/nz/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "definitionVersion": "nz-v1", 4 | "feature_flags": { 5 | "enable_llm_summary": true 6 | }, 7 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 8 | } 9 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/nz/templates/channel-attributes/modica.tftpl: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{trigger.message.ChannelAttributes.from}}", 3 | "channelType": "{{trigger.message.ChannelAttributes.channel_type}}", 4 | "channelSid": "{{trigger.message.ChannelSid}}", 5 | "twilioNumber": "{{trigger.message.ChannelAttributes.twilioNumber}}", 6 | "ignoreAgent": "", 7 | "helpline": "${helpline}", 8 | "language":"${task_language}", 9 | "transferTargetType": "", 10 | "memory": {{trigger.message.ChannelAttributes.memory| to_json}}, 11 | "clinical": "{{flow.variables.clinical}}" 12 | } 13 | -------------------------------------------------------------------------------- /twilio-iac/helplines/nz/templates/channel-attributes/voice.tftpl: -------------------------------------------------------------------------------- 1 | { 2 | "type": "inbound", 3 | "name": "{{trigger.call.From}}", 4 | "ignoreAgent": "", 5 | "helpline":"${helpline}", 6 | "transferTargetType": "", 7 | "channelType": "voice", 8 | "clinical": "{{flow.variables.clinical}}" 9 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/ph/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/ph/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/sg/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/", 6 | "resources_base_url": "" 7 | } 8 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/sg/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | "enable_conferencing":true 5 | }, 6 | "helpline_code": "sg", 7 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 8 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/templates/channel-attributes/default.tftpl: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{trigger.message.ChannelAttributes.from}}", 3 | "channelType": "{{trigger.message.ChannelAttributes.channel_type}}", 4 | "channelSid": "{{trigger.message.ChannelSid}}", 5 | "twilioNumber": "{{trigger.message.ChannelAttributes.twilioNumber}}", 6 | "ignoreAgent": "", 7 | "helpline":"${helpline}", 8 | "language":"${task_language}", 9 | "transferTargetType": "", 10 | "memory": {{trigger.message.ChannelAttributes.memory| to_json}} 11 | } 12 | -------------------------------------------------------------------------------- /twilio-iac/helplines/templates/channel-attributes/voice.tftpl: -------------------------------------------------------------------------------- 1 | { 2 | "type": "inbound", 3 | "name": "{{trigger.call.From}}", 4 | "ignoreAgent": "", 5 | "helpline":"${helpline}", 6 | "transferTargetType": "", 7 | "channelType": "voice" 8 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/templates/workflows/lex.tftpl: -------------------------------------------------------------------------------- 1 | { 2 | "task_routing": { 3 | "filters": [ 4 | { 5 | "filter_friendly_name": "CaptureChannel", 6 | "expression": "isChatCaptureControl==true", 7 | "targets": [ 8 | { 9 | "queue": "${task_queues.survey}" 10 | } 11 | ] 12 | } 13 | ] 14 | } 15 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/templates/workflows/survey.tftpl: -------------------------------------------------------------------------------- 1 | { 2 | "task_routing": { 3 | "filters": [ 4 | { 5 | "filter_friendly_name": "Survey Filter", 6 | "expression": "isSurveyTask==true", 7 | "targets": [ 8 | { 9 | "expression": "isSurveyTask==true", 10 | "queue": "${task_queues.survey}" 11 | } 12 | ] 13 | } 14 | ] 15 | } 16 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/th/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "pdfImagesSource": "https://tl-public-chat-th-prod.s3.amazonaws.com" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/th/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | "enable_client_profiles": true }, 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/tz/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "", 6 | "feature_flags": { 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/tz/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png", 6 | "feature_flags": { 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/ukmh/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "", 6 | "feature_flags": { 7 | "enable_hierarchical_translations": true 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/ukmh/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png", 6 | "feature_flags": { 7 | "enable_hierarchical_translations": true 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/usch/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "" 5 | } 6 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/usch/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png", 6 | "feature_flags": { 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/usch/production.hcl: -------------------------------------------------------------------------------- 1 | /** 2 | * This file overrides the config output by `common.hcl` that are specific to the production environment. 3 | **/ 4 | 5 | locals { 6 | common_config_hcl = read_terragrunt_config("common.hcl") 7 | common_config = local.common_config_hcl.locals.config 8 | config = merge(local.common_config, local.local_config) 9 | 10 | local_config = { 11 | custom_task_routing_filter_expression = "" 12 | flow_vars = {} 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /twilio-iac/helplines/usch/staging.hcl: -------------------------------------------------------------------------------- 1 | /** 2 | * This file overrides the config output by `common.hcl` that are specific to the staging environment. 3 | **/ 4 | 5 | locals { 6 | common_config_hcl = read_terragrunt_config("common.hcl") 7 | common_config = local.common_config_hcl.locals.config 8 | config = merge(local.common_config, local.local_config) 9 | 10 | local_config = { 11 | custom_task_routing_filter_expression = "" 12 | flow_vars = {} 13 | } 14 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/uscr/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-production.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "" 5 | } 6 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/uscr/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "form_definitions_base_url": "https://assets-staging.tl.techmatters.org/form-definitions/", 4 | "resources_base_url": "", 5 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png", 6 | "feature_flags": { 7 | "use_prepopulate_mappings": true 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/za/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "pdfImagesSource": "https://tl-public-chat-za-prod.s3.amazonaws.com" 6 | } 7 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/za/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | }, 5 | "hrm_base_url": "https://hrm-test.tl.techmatters.org", 6 | "previous_ui_version": { 7 | "date": "2022-12-05T11:25:21.793Z", 8 | "semver": "~1.31.2", 9 | "version": "1.31.2" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/zm/configs/service-configuration/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "definitionVersion": "v1", 4 | "feature_flags": { 5 | "enable_csam_report": true, 6 | "enable_lex": true 7 | }, 8 | "permissionConfig": "zm" 9 | } 10 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/zm/configs/service-configuration/staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributes": { 3 | "feature_flags": { 4 | "enable_client_profiles": true, 5 | "enable_llm_summary": true 6 | }, 7 | "logo_url" : "https://aselo-logo.s3.amazonaws.com/200+transparent+background+no+TM+staging.png", 8 | "previous_ui_version": { 9 | "date": "2022-12-05T15:35:52.544Z", 10 | "semver": "~1.31.2", 11 | "version": "1.31.2" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /twilio-iac/helplines/zw/configs/service-configuration/production.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /twilio-iac/makefiles/docker.make: -------------------------------------------------------------------------------- 1 | pull: 2 | docker $(DOCKER_IMAGE):$(TF_VER) 3 | -------------------------------------------------------------------------------- /twilio-iac/makefiles/scripts.make: -------------------------------------------------------------------------------- 1 | init-scripts: install-scripts 2 | 3 | install-scripts: 4 | docker run -it --rm $(DEFAULT_ARGS) $(DOCKER_IMAGE):$(TF_VER) $(TF_ROOT_PATH)/scripts/deploy-scripts/install.sh 5 | 6 | compile-scripts: 7 | docker run -it --rm $(DEFAULT_ARGS) $(DOCKER_IMAGE):$(TF_VER) $(TF_ROOT_PATH)/scripts/deploy-scripts/compile.sh 8 | -------------------------------------------------------------------------------- /twilio-iac/makefiles/shell.make: -------------------------------------------------------------------------------- 1 | shell-assume-role: export-aws-credentials shell ## Assume a role and then then run a shell in the terragrunt container 2 | -------------------------------------------------------------------------------- /twilio-iac/makefiles/terraform/container.make: -------------------------------------------------------------------------------- 1 | ##@ Container Utilities 2 | 3 | shell: ## Run a shell in the terraform container 4 | docker run -it --rm $(DEFAULT_ARGS) $(DOCKER_IMAGE):$(TF_VER) bash 5 | -------------------------------------------------------------------------------- /twilio-iac/makefiles/terraform/terraform.make: -------------------------------------------------------------------------------- 1 | ##@ Terraform Targets 2 | 3 | apply: verify-pre-work apply-tf ## Apply the current terraform config 4 | 5 | get: get-tf ## Get modules for the current terraform config 6 | 7 | init: verify-pre-work init-scripts init-tf ## Initialize the current terraform config 8 | 9 | plan: verify-pre-work plan-tf ## Plan the current terraform config 10 | 11 | destroy: destroy-tf ## Destroy the current terraform config 12 | 13 | validate: validate-tf ## Validate the current terraform config 14 | -------------------------------------------------------------------------------- /twilio-iac/makefiles/terragrunt/container.make: -------------------------------------------------------------------------------- 1 | ##@ Container Utilities 2 | 3 | shell: ## Run a shell in the terragrunt container 4 | docker run -it --rm $(DEFAULT_ARGS) $(TG_ENV) $(DOCKER_IMAGE):$(TF_VER) bash 5 | -------------------------------------------------------------------------------- /twilio-iac/makefiles/terragrunt/scripts.make: -------------------------------------------------------------------------------- 1 | verify-pre-work: verify-env 2 | docker run -it --rm $(DEFAULT_ARGS) $(DOCKER_IMAGE):$(TF_VER) $(TF_ROOT_PATH)/scripts/verifyPreWork.sh $(HL) $(HL_ENV) $(MY_ENV) -------------------------------------------------------------------------------- /twilio-iac/makefiles/utils/help.make: -------------------------------------------------------------------------------- 1 | ##@ Utility 2 | 3 | # This prints help commands based on the comments in Makefiles. 4 | # Descriptions of targets are expected to be on the same line as the target, and to be prefixed with `##`. 5 | # Other blocks are expected to be on a line by themselves, and to be prefixed with `##@`. 6 | 7 | help: ## Display this help 8 | @awk 'BEGIN {FS = ":.*##";} /^[$$()% 0-9a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) -------------------------------------------------------------------------------- /twilio-iac/scripts/compileScripts.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cd ../../scripts/ 4 | 5 | npm run compile 6 | -------------------------------------------------------------------------------- /twilio-iac/scripts/deploy-scripts/compile.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 4 | . ${script_dir}/setup.sh 5 | 6 | npm run compile 7 | -------------------------------------------------------------------------------- /twilio-iac/scripts/deploy-scripts/install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 4 | . ${script_dir}/setup.sh 5 | 6 | npm i 7 | -------------------------------------------------------------------------------- /twilio-iac/scripts/deploy-scripts/setup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | export repo_root=$(git rev-parse --show-toplevel) 4 | 5 | cd $repo_root/scripts/ 6 | -------------------------------------------------------------------------------- /twilio-iac/scripts/deploy-scripts/terraform/twilioResourceImportAccountDefaults.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # export LOG_LEVEL=DEBUG 4 | 5 | script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 6 | . ${script_dir}/../setup.sh 7 | 8 | 9 | npm run twilioResources -- import-account-defaults --helplineDirectory="${MY_ENV}" 10 | -------------------------------------------------------------------------------- /twilio-iac/scripts/deploy-scripts/terragrunt/twilioResourceImportAccountDefaults.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # export LOG_LEVEL=DEBUG 4 | 5 | script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 6 | . ${script_dir}/../setup.sh 7 | 8 | npm run twilioResources -- import-account-defaults --helplineShortCode="${HL}" --helplineEnvironment="${HL_ENV}" --stage="${MY_ENV}" 9 | -------------------------------------------------------------------------------- /twilio-iac/scripts/installScripts.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cd ../../scripts/ 4 | 5 | npm i 6 | -------------------------------------------------------------------------------- /twilio-iac/scripts/migration/state/stage-provision.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # export TF_LOG=TRACE 4 | 5 | # List of full identifiers to move split by comma 6 | move_identifiers=() 7 | 8 | # List of partial identifiers to remove from Terraform state 9 | delete_identifiers=( 10 | "^module.chatbots" 11 | "^module.custom_chatbots" 12 | "^twilio_autopilot" 13 | "^module.twilioChannel" 14 | "^module.voiceChannel" 15 | "^module.flex" 16 | "^module.customChannel" 17 | "POST_SURVEY_BOT_CHAT_URL" 18 | "twilio_post_survey_bot_chat_url" 19 | "^module.channel" 20 | ) 21 | 22 | . ${script_dir}/stage-common.sh -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/.python-version: -------------------------------------------------------------------------------- 1 | 3.11.4 -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/manageSecrets.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from os import environ 4 | from sys import argv, exit 5 | from src.secret_manager import Questionnaire 6 | 7 | if environ.get('PROVISION_SKIP_MIGRATION'): 8 | print('Skipping secret management because PROVISION_SKIP_MIGRATION is set') 9 | exit(0) 10 | 11 | helpline = str(argv[1]) 12 | 13 | Questionnaire(helpline=helpline).start() 14 | -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/manageServiceConfig.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from src.service_configuration import main 4 | 5 | main() 6 | -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/aws/__init__.py: -------------------------------------------------------------------------------- 1 | from .s3_client import S3Client 2 | from .ssm_client import SSMClient 3 | from .sts_client import STSClient -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/gsheet/__init__.py: -------------------------------------------------------------------------------- 1 | from .export_flags_matrix import export_flags_matrix -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/lex_v2_migration/.gitignore: -------------------------------------------------------------------------------- 1 | **/ 2 | *.json 3 | !bot_definition_example.json 4 | !templates/ 5 | !templates/** -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/lex_v2_migration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/twilio-iac/scripts/python_tools/src/lex_v2_migration/__init__.py -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/lex_v2_migration/templates/slot_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "slotTypeName": "", 3 | "slotTypeValues": [], 4 | "valueSelectionSetting": { 5 | "resolutionStrategy": "TopResolution" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/secret_manager/__init__.py: -------------------------------------------------------------------------------- 1 | from .questionnaire import Questionnaire 2 | -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/service_configuration/__init__.py: -------------------------------------------------------------------------------- 1 | from .manager import main 2 | -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/service_configuration/constants.py: -------------------------------------------------------------------------------- 1 | """ Constants for the service configuration manager """ 2 | AWS_ROLE_ARNS: dict[str, str] = { 3 | 'developer': 'arn:aws:iam::712893914485:role/twilio-iac-service-config-developer', 4 | 'manager': 'arn:aws:iam::712893914485:role/twilio-iac-service-config-manager', 5 | } 6 | 7 | def get_aws_role_arn(environment: str): 8 | role_key = "manager" if environment == "production" else "developer" 9 | aws_role_arn = AWS_ROLE_ARNS.get(role_key) 10 | return aws_role_arn -------------------------------------------------------------------------------- /twilio-iac/scripts/python_tools/src/twilio/__init__.py: -------------------------------------------------------------------------------- 1 | from .twilio import Twilio 2 | -------------------------------------------------------------------------------- /twilio-iac/scripts/verifyPreWork.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | hl_or_dir=$1 4 | environment=$2 5 | stage=$3 6 | 7 | printf "\n\n" 8 | if [ -n "$environment" ]; then 9 | hl_info="$hl_or_dir/$environment - $stage" 10 | else 11 | hl_info="$hl_or_dir" 12 | fi 13 | 14 | echo "You are working on the following environment: $hl_info" 15 | printf "\n\n" 16 | 17 | exit 0 -------------------------------------------------------------------------------- /twilio-iac/stages/backend-local.tftpl: -------------------------------------------------------------------------------- 1 | terraform { 2 | required_providers { 3 | twilio = { 4 | source = "twilio/twilio" 5 | version = "0.17.0" 6 | } 7 | datadog = { 8 | source = "datadog/datadog" 9 | version = "3.46.0" 10 | } 11 | } 12 | 13 | backend "local" { 14 | path = "${local_state_path}" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /twilio-iac/stages/configure/Makefile: -------------------------------------------------------------------------------- 1 | GIT_ROOT := $(shell git rev-parse --show-toplevel) 2 | 3 | include $(GIT_ROOT)/twilio-iac/makefiles/*.make 4 | include $(GIT_ROOT)/twilio-iac/makefiles/terragrunt/*.make 5 | -------------------------------------------------------------------------------- /twilio-iac/stages/external-recordings/Makefile: -------------------------------------------------------------------------------- 1 | GIT_ROOT := $(shell git rev-parse --show-toplevel) 2 | 3 | include $(GIT_ROOT)/twilio-iac/makefiles/*.make 4 | include $(GIT_ROOT)/twilio-iac/makefiles/terragrunt/*.make 5 | -------------------------------------------------------------------------------- /twilio-iac/stages/lex/Makefile: -------------------------------------------------------------------------------- 1 | GIT_ROOT := $(shell git rev-parse --show-toplevel) 2 | 3 | include $(GIT_ROOT)/twilio-iac/makefiles/*.make 4 | include $(GIT_ROOT)/twilio-iac/makefiles/terragrunt/*.make 5 | -------------------------------------------------------------------------------- /twilio-iac/stages/provision/Makefile: -------------------------------------------------------------------------------- 1 | GIT_ROOT := $(shell git rev-parse --show-toplevel) 2 | 3 | include $(GIT_ROOT)/twilio-iac/makefiles/*.make 4 | include $(GIT_ROOT)/twilio-iac/makefiles/terragrunt/*.make 5 | -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/channels/custom-lambdas/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/twilio-iac/terraform-modules/channels/custom-lambdas/outputs.tf -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/channels/v1/outputs.tf: -------------------------------------------------------------------------------- 1 | output "channel_studio_flows_sids" { 2 | description = "Channel studio flow SIDs and related attributes" 3 | value = { 4 | for channel, flow in twilio_studio_flows_v2.channel_studio_flow : 5 | channel => { 6 | flow_sid = flow.sid 7 | enable_datadog_monitor = lookup(var.channels[channel], "enable_datadog_monitor", false) 8 | custom_monitor = lookup(var.channels[channel], "custom_monitor", {}) 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/events/v1/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/twilio-iac/terraform-modules/events/v1/outputs.tf -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/external-recordings/outputs.tf: -------------------------------------------------------------------------------- 1 | output "iam_access_key_id" { 2 | value = nonsensitive(aws_ssm_parameter.access_key_id.value) 3 | } 4 | 5 | output "iam_secret_access_key_ssm_key" { 6 | value = aws_ssm_parameter.secret_access_key.name 7 | } 8 | 9 | output "bucket_url" { 10 | // TODO: this may need to be region specific 11 | value = nonsensitive("https://${var.bucket_name}.s3.amazonaws.com/${var.path}") 12 | } 13 | -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/serverless/default/variables.tf: -------------------------------------------------------------------------------- 1 | variable "twilio_account_sid" { 2 | type = string 3 | } 4 | 5 | variable "twilio_auth_token" { 6 | type = string 7 | } 8 | 9 | variable "ui_editable" { 10 | description = " Whether or not the service is editable in the console" 11 | type = bool 12 | default = false 13 | } 14 | -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/services/default/outputs.tf: -------------------------------------------------------------------------------- 1 | output "flex_chat_service_sid" { 2 | description = "Twilio SID of the 'flex chat' service" 3 | value = twilio_chat_services_v2.flex_chat_service.sid 4 | } 5 | output "flex_proxy_service_sid" { 6 | description = "Twilio SID of the 'flex proxy' service" 7 | value = twilio_proxy_services_v1.flex_proxy_service.sid 8 | } 9 | 10 | output "shared_state_sync_service_sid" { 11 | description = "Twilio SID of the 'Shared State Service' sync service" 12 | value = twilio_sync_services_v1.shared_state_service.sid 13 | } -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/stages/external-recordings/variables.tf: -------------------------------------------------------------------------------- 1 | variable "environment" { 2 | description = "The environment for the helpline." 3 | type = string 4 | } 5 | 6 | variable "short_environment" { 7 | description = "The short code for the environment." 8 | type = string 9 | } 10 | 11 | variable "short_helpline" { 12 | description = "The short code for the helpline." 13 | type = string 14 | } 15 | 16 | variable "enable_external_recordings" { 17 | description = "Enable external recordings for the helpline." 18 | type = bool 19 | } 20 | -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/stages/lex/outputs.tf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techmatters/flex-plugins/675b19b728007dd9e8d820448c77e0f2ac42cbdd/twilio-iac/terraform-modules/stages/lex/outputs.tf -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/survey/default/outputs.tf: -------------------------------------------------------------------------------- 1 | output "survey_workflow_sid" { 2 | description = "Twilio SID of the 'Survey Workflow' service" 3 | value = twilio_taskrouter_workspaces_workflows_v1.survey_workflow.sid 4 | } -------------------------------------------------------------------------------- /twilio-iac/terraform-modules/taskRouter/v1/outputs.tf: -------------------------------------------------------------------------------- 1 | output "flex_task_assignment_workspace_sid" { 2 | description = "Twilio SID of the 'Flex Task Assignment' workspace" 3 | value = twilio_taskrouter_workspaces_v1.flex_task_assignment.sid 4 | } 5 | 6 | output "workflow_sids" { 7 | value = { for idx, w in var.workflows : idx => try(twilio_taskrouter_workspaces_workflows_v1.workflow[idx].sid, "") } 8 | } 9 | 10 | output "task_channel_sids" { 11 | value = { for idx, tc in var.task_channels : idx => try(twilio_taskrouter_workspaces_task_channels_v1.task_channel[idx].sid, "") } 12 | } 13 | -------------------------------------------------------------------------------- /webchat/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["twilio-react", "prettier/prettier"], 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 2019, 6 | "sourceType": "module", 7 | "ecmaFeatures": { 8 | "jsx": true 9 | } 10 | }, 11 | "rules": { 12 | "no-console": "off", 13 | "no-alert": "off", 14 | "import/no-extraneous-dependencies": "off", 15 | "no-use-before-define": "off", 16 | "react/display-name": "off", 17 | "no-negated-condition": "off", 18 | "no-warning-comments": "off" 19 | }, 20 | "ignorePatterns": ["config.ts"] 21 | } 22 | -------------------------------------------------------------------------------- /webchat/.nvmrc: -------------------------------------------------------------------------------- 1 | 18.16.0 -------------------------------------------------------------------------------- /webchat/README.md: -------------------------------------------------------------------------------- 1 | # webchat 2 | 3 | Webchat software for Aselo built on [Twilio Flex Webchat](https://www.twilio.com/docs/flex/developer/webchat/setup). See [aselo.org](https://aselo.org/) or [contact Aselo](https://aselo.org/contact-us/) for more information. 4 | 5 | ## git-secrets 6 | In order to prevent sensitive credentials to be leaked, please follow this instructions to setup `git-secrets`. 7 | - Install [git-secrets](https://github.com/awslabs/git-secrets) in your computer. 8 | - Go into the repo root folder. 9 | - Run `git secrets --register-aws`. 10 | - Run `git config --local core.hooksPath .githooks/`. -------------------------------------------------------------------------------- /webchat/src/blockedIps.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /webchat/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "module": "commonjs", 6 | "strict": true, 7 | "allowJs": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "resolveJsonModule": true, 10 | "esModuleInterop": true, 11 | "jsx": "react-jsx", 12 | "allowSyntheticDefaultImports": true, 13 | } 14 | } --------------------------------------------------------------------------------