autopilot-core-sandbox 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (822) hide show
  1. package/README.md +53 -0
  2. package/dist/Provider.d.ts +21 -0
  3. package/dist/Provider.d.ts.map +1 -0
  4. package/dist/Provider.js +61 -0
  5. package/dist/Provider.js.map +1 -0
  6. package/dist/dist/Provider.d.ts +21 -0
  7. package/dist/dist/Provider.d.ts.map +1 -0
  8. package/dist/dist/Provider.js +61 -0
  9. package/dist/dist/Provider.js.map +1 -0
  10. package/dist/dist/index.d.ts +45 -0
  11. package/dist/dist/index.d.ts.map +1 -0
  12. package/dist/dist/index.js +61 -0
  13. package/dist/dist/index.js.map +1 -0
  14. package/dist/dist/interfaces/index.d.ts +1238 -0
  15. package/dist/dist/interfaces/index.d.ts.map +1 -0
  16. package/dist/dist/interfaces/index.js +3 -0
  17. package/dist/dist/interfaces/index.js.map +1 -0
  18. package/dist/dist/migrations/20260608222757_remote_schema.sql +5666 -0
  19. package/dist/dist/migrations/20260611174826_add_job_item_recurring_id_to_job_item.sql +7 -0
  20. package/dist/dist/migrations/20260625224612_add_dashboard_guided_tour_dismissed_to_settings_user.sql +5 -0
  21. package/dist/dist/migrations/20260627031433_support_chat_tables.sql +115 -0
  22. package/dist/dist/migrations/20260627031434_support_chat_rls.sql +37 -0
  23. package/dist/dist/migrations/20260704170209_add_estimate_scheduling.sql +121 -0
  24. package/dist/dist/migrations/20260704170210_add_estimate_scheduling_rls.sql +42 -0
  25. package/dist/dist/migrations/20260704235034_add_estimate_reminder_settings.sql +11 -0
  26. package/dist/dist/migrations/20260707003825_blocked_number_table.sql +32 -0
  27. package/dist/dist/migrations/20260707003826_blocked_number_rls.sql +22 -0
  28. package/dist/dist/migrations/20260709191055_sms_opt_out_table.sql +38 -0
  29. package/dist/dist/migrations/20260709191056_sms_opt_out_rls.sql +21 -0
  30. package/dist/dist/migrations/20260709214507_job_time_entry_table.sql +70 -0
  31. package/dist/dist/migrations/20260709214508_job_time_entry_rls.sql +21 -0
  32. package/dist/dist/migrations/20260711185956_phone_call_table.sql +99 -0
  33. package/dist/dist/migrations/20260711185957_phone_call_rls.sql +25 -0
  34. package/dist/dist/migrations/20260712014705_ai_voice_assistant_settings.sql +71 -0
  35. package/dist/dist/migrations/20260712014706_ai_voice_assistant_settings_rls.sql +14 -0
  36. package/dist/dist/migrations/20260712014707_ai_prompt_templates.sql +28 -0
  37. package/dist/dist/migrations/20260712014708_ai_prompt_templates_rls.sql +5 -0
  38. package/dist/dist/migrations/20260712014709_ai_prompt_templates_seed.sql +77 -0
  39. package/dist/dist/migrations/20260715011550_reminder_dispatch_table.sql +47 -0
  40. package/dist/dist/migrations/20260715011551_reminder_dispatch_rls.sql +22 -0
  41. package/dist/dist/migrations/20260715192923_dedup_sequence_contact_add_unique_constraint.sql +27 -0
  42. package/dist/dist/migrations/20260716194420_add_employee_location_tracking.sql +146 -0
  43. package/dist/dist/migrations/20260716194421_add_employee_location_tracking_rls.sql +154 -0
  44. package/dist/dist/migrations/20260716194422_get_client_map_last_completed_jobs.sql +28 -0
  45. package/dist/dist/migrations/20260717144535_add_blast_email_invalid_skipped_count.sql +2 -0
  46. package/dist/dist/migrations/20260717162900_create_blast_email_chunk.sql +36 -0
  47. package/dist/dist/migrations/20260717162901_add_blast_email_chunk_rls.sql +5 -0
  48. package/dist/dist/migrations/20260717162902_add_blast_email_chunk_progress_columns.sql +3 -0
  49. package/dist/dist/migrations/20260717162903_add_blast_email_bounce_tracking_columns.sql +4 -0
  50. package/dist/dist/migrations/20260717162904_create_email_hard_bounced.sql +23 -0
  51. package/dist/dist/migrations/20260717162905_add_email_hard_bounced_rls.sql +5 -0
  52. package/dist/dist/migrations/20260717164837_add_sequence_contact_sent_at.sql +19 -0
  53. package/dist/dist/migrations/20260717170920_add_sequence_contact_claim_index.sql +12 -0
  54. package/dist/dist/migrations/20260719215139_create_outbound_event.sql +59 -0
  55. package/dist/dist/migrations/20260719215140_create_outbound_event_rls.sql +16 -0
  56. package/dist/dist/migrations/20260719215141_create_webhook_delivery.sql +99 -0
  57. package/dist/dist/migrations/20260719215142_create_webhook_delivery_rls.sql +11 -0
  58. package/dist/dist/migrations/20260719215143_outbound_event_triggers.sql +219 -0
  59. package/dist/dist/migrations/20260719215144_create_api_key.sql +34 -0
  60. package/dist/dist/migrations/20260719215146_create_api_key_rls.sql +12 -0
  61. package/dist/dist/migrations/20260719215147_webhook_subscription_add_secret_active.sql +28 -0
  62. package/dist/dist/migrations/20260719215148_api_aggregate_create_functions.sql +479 -0
  63. package/dist/dist/migrations/20260721174837_webhook_subscription_generic_endpoints.sql +41 -0
  64. package/dist/dist/migrations/20260721185631_webhook_outbox_retention.sql +87 -0
  65. package/dist/dist/migrations/20260721190304_create_qb_sync_task.sql +120 -0
  66. package/dist/dist/migrations/20260721190306_qb_sync_task_rls.sql +8 -0
  67. package/dist/dist/migrations/20260721190307_qb_mapping_orphan_fks.sql +29 -0
  68. package/dist/dist/migrations/20260721190308_qb_task_retention.sql +90 -0
  69. package/dist/dist/migrations/20260721234401_create_permission_role.sql +83 -0
  70. package/dist/dist/migrations/20260721234402_permission_role_rls.sql +22 -0
  71. package/dist/dist/migrations/20260721234403_user_role_add_permission_role_id.sql +12 -0
  72. package/dist/dist/migrations/20260721234404_seed_permission_roles.sql +100 -0
  73. package/dist/dist/migrations/20260721234405_backfill_user_role_permission_role_id.sql +20 -0
  74. package/dist/dist/migrations/20260722193800_permission_role_add_manage_employees.sql +56 -0
  75. package/dist/dist/migrations/20260723025606_staging_new_employee_company_read_rls.sql +10 -0
  76. package/dist/dist/migrations/20260723134328_create_google_lsa_integration.sql +1016 -0
  77. package/dist/dist/migrations/20260723134329_google_lsa_integration_rls.sql +205 -0
  78. package/dist/dist/migrations/20260723150640_google_lsa_hardening.sql +169 -0
  79. package/dist/dist/migrations/20260723150641_google_lsa_hardening_rls.sql +12 -0
  80. package/dist/dist/migrations/20260724230721_google_lsa_facebook_exclusivity_attach.sql +104 -0
  81. package/dist/dist/migrations/20260724230722_google_lsa_facebook_exclusivity_attach_rls.sql +20 -0
  82. package/dist/dist/migrations/20260725172630_add_message_pagination_and_search.sql +265 -0
  83. package/dist/dist/migrations/20260725172631_add_message_pagination_and_search_rls.sql +72 -0
  84. package/dist/dist/migrations/20260725172632_optimize_message_thread_pagination_search.sql +245 -0
  85. package/dist/dist/migrations/20260725172633_harden_message_search_and_photo_pagination.sql +256 -0
  86. package/dist/dist/migrations/20260725172634_fix_message_thread_line_filter.sql +250 -0
  87. package/dist/dist/migrations/20260725174948_google_lsa_attach_bing_exclusivity_guard.sql +23 -0
  88. package/dist/dist/migrations/20260725200430_client_portal_settings.sql +41 -0
  89. package/dist/dist/migrations/20260725200431_client_portal_settings_rls.sql +21 -0
  90. package/dist/dist/migrations/20260725200433_client_portal_auth_tables.sql +81 -0
  91. package/dist/dist/migrations/20260725200434_client_portal_auth_rls.sql +18 -0
  92. package/dist/dist/migrations/20260725200435_portal_claim_login_attempt.sql +36 -0
  93. package/dist/dist/migrations/20260725200436_portal_appointment_request.sql +39 -0
  94. package/dist/dist/migrations/20260725200437_portal_appointment_request_rls.sql +10 -0
  95. package/dist/dist/migrations/20260725210000_google_reserve_integration.sql +85 -0
  96. package/dist/dist/migrations/20260725210001_google_reserve_integration_rls.sql +10 -0
  97. package/dist/dist/migrations/20260725220000_add_analytics_query_indexes.sql +47 -0
  98. package/dist/dist/migrations/20260725230000_onboarding_preload_data.sql +1074 -0
  99. package/dist/dist/migrations/20260725230001_onboarding_preload_data_rls.sql +40 -0
  100. package/dist/dist/migrations/20260725230002_add_pricebook_query_indexes.sql +13 -0
  101. package/dist/dist/migrations/20260726000000_facebook_ads_integration.sql +1538 -0
  102. package/dist/dist/migrations/20260726000001_facebook_ads_integration_rls.sql +356 -0
  103. package/dist/dist/migrations/20260726000002_facebook_ads_attach_lsa_exclusivity_guard.sql +25 -0
  104. package/dist/dist/migrations/20260726000003_facebook_ads_attach_bing_exclusivity_guard.sql +22 -0
  105. package/dist/dist/migrations/20260726010000_create_bing_ads_integration.sql +1112 -0
  106. package/dist/dist/migrations/20260726010001_bing_ads_integration_rls.sql +227 -0
  107. package/dist/dist/migrations/20260726220000_add_document_theme_settings.sql +11 -0
  108. package/dist/dist/migrations/20260726220001_update_document_theme_comments.sql +7 -0
  109. package/dist/dist/migrations/20260727210319_evolve_tier_for_pricing.sql +68 -0
  110. package/dist/dist/migrations/20260727210320_create_billing_addon.sql +85 -0
  111. package/dist/dist/migrations/20260727210321_create_billing_addon_rls.sql +21 -0
  112. package/dist/dist/migrations/20260728213930_create_usage_metering.sql +189 -0
  113. package/dist/dist/migrations/20260728213931_create_usage_metering_rls.sql +32 -0
  114. package/dist/dist/migrations/20260729004305_marketing_charge_txn_functions.sql +242 -0
  115. package/dist/dist/migrations/20260729004306_marketing_charge_txn_functions_rls.sql +37 -0
  116. package/dist/dist/migrations/20260729005524_update_deduct_from_balance_errcode.sql +42 -0
  117. package/dist/dist/migrations/20260730193601_fix_deduct_from_balance_lost_update.sql +46 -0
  118. package/dist/dist/migrations/20260730193602_add_blast_sms_chunk_reaper_columns.sql +27 -0
  119. package/dist/dist/migrations/20260731011415_create_google_calendar_connection.sql +84 -0
  120. package/dist/dist/migrations/20260731011416_google_calendar_connection_rls.sql +23 -0
  121. package/dist/dist/migrations/20260731011417_create_google_calendar_sync.sql +157 -0
  122. package/dist/dist/migrations/20260731011418_google_calendar_sync_rls.sql +26 -0
  123. package/dist/dist/migrations/20260731011419_event_outbound_triggers.sql +28 -0
  124. package/dist/dist/migrations/20260731011420_add_google_calendar_addon_key.sql +24 -0
  125. package/dist/dist/migrations/20260731011421_gcal_task_retention.sql +109 -0
  126. package/dist/dist/migrations/20260731234245_create_estimate_proposal.sql +157 -0
  127. package/dist/dist/migrations/20260731234247_estimate_proposal_rls.sql +46 -0
  128. package/dist/dist/migrations/20260731234248_add_proposal_estimate_settings.sql +17 -0
  129. package/dist/dist/migrations/20260731234249_add_estimate_proposals_addon_key.sql +25 -0
  130. package/dist/dist/migrations/20260731234250_approve_estimate_proposal_function.sql +133 -0
  131. package/dist/dist/migrations/20260801010609_save_estimate_proposal_function.sql +154 -0
  132. package/dist/dist/migrations/20260801173554_add_hide_autopilot_branding_setting.sql +6 -0
  133. package/dist/dist/migrations/20260806230917_add_client_billing_address_columns.sql +9 -0
  134. package/dist/dist/migrations/20260806230944_api_create_client_billing_address.sql +93 -0
  135. package/dist/dist/migrations/20260807014702_create_parent_id_company_id_keys.sql +20 -0
  136. package/dist/dist/migrations/20260807014703_create_contract_template.sql +30 -0
  137. package/dist/dist/migrations/20260807014704_create_contract.sql +233 -0
  138. package/dist/dist/migrations/20260807014705_create_contract_signature.sql +39 -0
  139. package/dist/dist/migrations/20260807014706_create_item_contract_requirement.sql +38 -0
  140. package/dist/dist/migrations/20260807014707_create_settings_contract.sql +23 -0
  141. package/dist/dist/migrations/20260807014708_contract_rls.sql +74 -0
  142. package/dist/dist/migrations/20260807014709_sign_contract_function.sql +92 -0
  143. package/dist/dist/migrations/20260807014710_create_settings_rental.sql +34 -0
  144. package/dist/dist/migrations/20260807014711_create_saved_location.sql +56 -0
  145. package/dist/dist/migrations/20260807014712_create_rental_task_option.sql +52 -0
  146. package/dist/dist/migrations/20260807014713_create_asset.sql +90 -0
  147. package/dist/dist/migrations/20260807014714_add_job_schedule_asset_fkeys.sql +39 -0
  148. package/dist/dist/migrations/20260807014715_rental_rls.sql +48 -0
  149. package/dist/dist/migrations/20260807014716_add_job_schedule_any_time.sql +7 -0
  150. package/dist/dist/migrations/20260807014717_add_job_schedule_target_location.sql +48 -0
  151. package/dist/dist/migrations/20260807014718_job_schedule_completion_guard.sql +53 -0
  152. package/dist/dist/migrations/20260807014719_add_job_schedule_list_sort_key.sql +7 -0
  153. package/dist/dist/migrations/20260807014720_add_item_duration.sql +11 -0
  154. package/dist/dist/migrations/20260807014721_add_settings_booking_enforce_rental_availability.sql +9 -0
  155. package/dist/dist/migrations/20260807014722_add_job_unsigned_rental_agreement.sql +10 -0
  156. package/dist/dist/migrations/20260807014723_add_item_size.sql +12 -0
  157. package/dist/dist/migrations/20260809193533_add_booking_path_button_labels.sql +11 -0
  158. package/dist/dist/migrations/20260809231721_add_route_distance_cache.sql +37 -0
  159. package/dist/dist/migrations/20260809231722_route_distance_cache_rls.sql +15 -0
  160. package/dist/dist/migrations/20260809231723_apply_rental_route_plan_function.sql +275 -0
  161. package/dist/dist/migrations/20260810171550_add_settings_job_default_job_types.sql +9 -0
  162. package/dist/dist/migrations/20260810212430_backfill_rental_task_option_sort_order.sql +61 -0
  163. package/dist/dist/migrations/20260811224317_add_settings_user_dnd_hint_dismissed.sql +9 -0
  164. package/dist/dist/migrations/20260813174503_repair_user_role_email_drift.sql +59 -0
  165. package/dist/dist/migrations/20260813174504_sync_user_role_email_trigger.sql +30 -0
  166. package/dist/dist/migrations/20260813175210_add_event_list_sort_key.sql +5 -0
  167. package/dist/dist/migrations/20260814172222_add_client_auto_bill_on_completion.sql +6 -0
  168. package/dist/dist/migrations/20260816160252_create_automation_rule.sql +99 -0
  169. package/dist/dist/migrations/20260816160253_automation_rule_rls.sql +19 -0
  170. package/dist/dist/migrations/20260816160254_create_settings_automation.sql +36 -0
  171. package/dist/dist/migrations/20260816160255_settings_automation_rls.sql +18 -0
  172. package/dist/dist/migrations/20260816160256_create_automation_event.sql +71 -0
  173. package/dist/dist/migrations/20260816160257_automation_event_rls.sql +12 -0
  174. package/dist/dist/migrations/20260816160258_create_automation_run.sql +129 -0
  175. package/dist/dist/migrations/20260816160259_automation_run_rls.sql +19 -0
  176. package/dist/dist/migrations/20260816160300_add_client_created_via.sql +25 -0
  177. package/dist/dist/migrations/20260816160301_add_estimate_sent_at.sql +39 -0
  178. package/dist/dist/migrations/20260816160302_add_message_automation_ref.sql +10 -0
  179. package/dist/dist/migrations/20260816160303_automation_event_triggers.sql +236 -0
  180. package/dist/dist/migrations/20260816160304_automation_retention.sql +142 -0
  181. package/dist/dist/migrations/20260816202404_add_automation_center_addon_key.sql +26 -0
  182. package/dist/dist/migrations/20260816225501_widen_automation_rule_trigger_action_checks.sql +25 -0
  183. package/dist/dist/migrations/20260816225502_widen_automation_event_type_check.sql +18 -0
  184. package/dist/dist/migrations/20260816225503_add_invoice_id_to_automation_tables.sql +18 -0
  185. package/dist/dist/migrations/20260816225504_add_job_rescheduled_capture_trigger.sql +51 -0
  186. package/dist/dist/migrations/20260816225505_add_lead_converted_capture_trigger.sql +26 -0
  187. package/dist/dist/migrations/20260816225506_fix_booking_request_import_guard.sql +27 -0
  188. package/dist/dist/migrations/20260816225507_widen_outbound_event_for_automation.sql +38 -0
  189. package/dist/dist/migrations/20260817002626_add_user_last_login_platform_columns.sql +14 -0
  190. package/dist/dist/migrations/20260817221703_create_deletion.sql +34 -0
  191. package/dist/dist/migrations/20260817221707_deletion_rls.sql +21 -0
  192. package/dist/dist/migrations/20260817221708_add_soft_delete_columns.sql +82 -0
  193. package/dist/dist/migrations/20260817221709_trash_functions.sql +434 -0
  194. package/dist/dist/migrations/20260817221710_outbound_event_soft_delete.sql +55 -0
  195. package/dist/dist/migrations/20260817221711_automation_soft_delete_events.sql +77 -0
  196. package/dist/dist/migrations/20260817221712_fix_estimate_address_cascade.sql +14 -0
  197. package/dist/dist/migrations/20260817232630_trash_batch_function.sql +67 -0
  198. package/dist/dist/migrations/20260819170204_create_email_spam_complaint.sql +23 -0
  199. package/dist/dist/migrations/20260819170205_add_email_spam_complaint_rls.sql +5 -0
  200. package/dist/dist/migrations/20260819170206_email_unsubscribed_upsert_constraints.sql +14 -0
  201. package/dist/dist/migrations/20260819180151_get_suppressed_emails_function.sql +23 -0
  202. package/dist/dist/migrations/20260819191143_is_deleted_backfill_guard.sql +29 -0
  203. package/dist/dist/migrations/20260819191144_trash_functions_no_dual_write.sql +319 -0
  204. package/dist/dist/migrations/20260819191145_client_map_jobs_deleted_at.sql +33 -0
  205. package/dist/dist/migrations/20260819191147_booking_declined_deleted_at.sql +28 -0
  206. package/dist/dist/migrations/20260819191148_onboarding_preload_no_address_is_deleted.sql +1019 -0
  207. package/dist/dist/migrations/20260820222756_add_settings_job_hide_task_timer.sql +2 -0
  208. package/dist/dist/migrations/20260824234151_add_blast_chunk_recipients.sql +13 -0
  209. package/dist/dist/migrations/20260824234152_add_blast_pause_cancel_columns.sql +10 -0
  210. package/dist/dist/migrations/20260825014725_get_job_ids_in_range.sql +42 -0
  211. package/dist/dist/migrations/20260825194452_add_failed_job_status.sql +15 -0
  212. package/dist/dist/migrations/20260825194457_remove_take_to_rental_task_options.sql +24 -0
  213. package/dist/dist/migrations/20260825194458_remove_take_to_job_schedules.sql +12 -0
  214. package/dist/dist/migrations/20260825194459_rework_apply_rental_route_plan_no_take_to.sql +168 -0
  215. package/dist/dist/migrations/20260825194500_drop_job_schedule_target_location.sql +24 -0
  216. package/dist/dist/migrations/20260825194501_add_job_schedule_size.sql +17 -0
  217. package/dist/dist/migrations/20260825233001_add_job_schedule_id_company_id_key.sql +11 -0
  218. package/dist/dist/migrations/20260825233002_create_route_plan.sql +52 -0
  219. package/dist/dist/migrations/20260825233003_create_route_plan_stop.sql +159 -0
  220. package/dist/dist/migrations/20260825233004_route_plan_rls.sql +32 -0
  221. package/dist/dist/migrations/20260825233005_apply_rental_route_plan_v2.sql +351 -0
  222. package/dist/dist/migrations/20260826150934_facebook_ads_lead_ingestion.sql +1711 -0
  223. package/dist/dist/migrations/20260826151141_facebook_ads_lead_ingestion_rls_v2.sql +43 -0
  224. package/dist/dist/migrations/20260826234722_facebook_messenger_ingestion.sql +703 -0
  225. package/dist/dist/migrations/20260826234723_facebook_messenger_ingestion_rls.sql +80 -0
  226. package/dist/dist/migrations/20260826234724_widen_automations_messenger.sql +46 -0
  227. package/dist/dist/migrations/20260827100001_add_route_plan_minutes.sql +10 -0
  228. package/dist/dist/migrations/20260827100002_add_route_plan_stop_leg_minutes.sql +9 -0
  229. package/dist/dist/migrations/20260827100003_apply_rental_route_plan_v3.sql +341 -0
  230. package/dist/dist/migrations/20260827230346_apply_rental_route_plan_v4.sql +366 -0
  231. package/dist/dist/migrations/20260829090911_create_fleet_schema.sql +3698 -0
  232. package/dist/dist/migrations/20260829090912_fleet_rls.sql +1011 -0
  233. package/dist/dist/migrations/20260831102212_add_online_booking_address_display.sql +8 -0
  234. package/dist/dist/providers/AddressProvider.d.ts +9 -0
  235. package/dist/dist/providers/AddressProvider.d.ts.map +1 -0
  236. package/dist/dist/providers/AddressProvider.js +207 -0
  237. package/dist/dist/providers/AddressProvider.js.map +1 -0
  238. package/dist/dist/providers/AutomationsProvider.d.ts +11 -0
  239. package/dist/dist/providers/AutomationsProvider.d.ts.map +1 -0
  240. package/dist/dist/providers/AutomationsProvider.js +170 -0
  241. package/dist/dist/providers/AutomationsProvider.js.map +1 -0
  242. package/dist/dist/providers/BlockedNumbersProvider.d.ts +13 -0
  243. package/dist/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
  244. package/dist/dist/providers/BlockedNumbersProvider.js +71 -0
  245. package/dist/dist/providers/BlockedNumbersProvider.js.map +1 -0
  246. package/dist/dist/providers/CategoryProvider.d.ts +8 -0
  247. package/dist/dist/providers/CategoryProvider.d.ts.map +1 -0
  248. package/dist/dist/providers/CategoryProvider.js +95 -0
  249. package/dist/dist/providers/CategoryProvider.js.map +1 -0
  250. package/dist/dist/providers/ClientProvider.d.ts +39 -0
  251. package/dist/dist/providers/ClientProvider.d.ts.map +1 -0
  252. package/dist/dist/providers/ClientProvider.js +253 -0
  253. package/dist/dist/providers/ClientProvider.js.map +1 -0
  254. package/dist/dist/providers/CompanyProvider.d.ts +7 -0
  255. package/dist/dist/providers/CompanyProvider.d.ts.map +1 -0
  256. package/dist/dist/providers/CompanyProvider.js +114 -0
  257. package/dist/dist/providers/CompanyProvider.js.map +1 -0
  258. package/dist/dist/providers/DashboardProvider.d.ts +78 -0
  259. package/dist/dist/providers/DashboardProvider.d.ts.map +1 -0
  260. package/dist/dist/providers/DashboardProvider.js +568 -0
  261. package/dist/dist/providers/DashboardProvider.js.map +1 -0
  262. package/dist/dist/providers/DiscountProvider.d.ts +8 -0
  263. package/dist/dist/providers/DiscountProvider.d.ts.map +1 -0
  264. package/dist/dist/providers/DiscountProvider.js +92 -0
  265. package/dist/dist/providers/DiscountProvider.js.map +1 -0
  266. package/dist/dist/providers/EmployeesProvider.d.ts +6 -0
  267. package/dist/dist/providers/EmployeesProvider.d.ts.map +1 -0
  268. package/dist/dist/providers/EmployeesProvider.js +185 -0
  269. package/dist/dist/providers/EmployeesProvider.js.map +1 -0
  270. package/dist/dist/providers/EstimatesProvider.d.ts +16 -0
  271. package/dist/dist/providers/EstimatesProvider.d.ts.map +1 -0
  272. package/dist/dist/providers/EstimatesProvider.js +251 -0
  273. package/dist/dist/providers/EstimatesProvider.js.map +1 -0
  274. package/dist/dist/providers/EventsProvider.d.ts +4 -0
  275. package/dist/dist/providers/EventsProvider.d.ts.map +1 -0
  276. package/dist/dist/providers/EventsProvider.js +24 -0
  277. package/dist/dist/providers/EventsProvider.js.map +1 -0
  278. package/dist/dist/providers/FilesProvider.d.ts +17 -0
  279. package/dist/dist/providers/FilesProvider.d.ts.map +1 -0
  280. package/dist/dist/providers/FilesProvider.js +201 -0
  281. package/dist/dist/providers/FilesProvider.js.map +1 -0
  282. package/dist/dist/providers/InvoicesProvider.d.ts +13 -0
  283. package/dist/dist/providers/InvoicesProvider.d.ts.map +1 -0
  284. package/dist/dist/providers/InvoicesProvider.js +207 -0
  285. package/dist/dist/providers/InvoicesProvider.js.map +1 -0
  286. package/dist/dist/providers/ItemProvider.d.ts +9 -0
  287. package/dist/dist/providers/ItemProvider.d.ts.map +1 -0
  288. package/dist/dist/providers/ItemProvider.js +201 -0
  289. package/dist/dist/providers/ItemProvider.js.map +1 -0
  290. package/dist/dist/providers/JobSourceProvider.d.ts +8 -0
  291. package/dist/dist/providers/JobSourceProvider.d.ts.map +1 -0
  292. package/dist/dist/providers/JobSourceProvider.js +75 -0
  293. package/dist/dist/providers/JobSourceProvider.js.map +1 -0
  294. package/dist/dist/providers/JobTypeProvider.d.ts +8 -0
  295. package/dist/dist/providers/JobTypeProvider.d.ts.map +1 -0
  296. package/dist/dist/providers/JobTypeProvider.js +75 -0
  297. package/dist/dist/providers/JobTypeProvider.js.map +1 -0
  298. package/dist/dist/providers/JobsProvider.d.ts +35 -0
  299. package/dist/dist/providers/JobsProvider.d.ts.map +1 -0
  300. package/dist/dist/providers/JobsProvider.js +863 -0
  301. package/dist/dist/providers/JobsProvider.js.map +1 -0
  302. package/dist/dist/providers/MessagesProvider.d.ts +33 -0
  303. package/dist/dist/providers/MessagesProvider.d.ts.map +1 -0
  304. package/dist/dist/providers/MessagesProvider.js +415 -0
  305. package/dist/dist/providers/MessagesProvider.js.map +1 -0
  306. package/dist/dist/providers/PaymentProvider.d.ts +9 -0
  307. package/dist/dist/providers/PaymentProvider.d.ts.map +1 -0
  308. package/dist/dist/providers/PaymentProvider.js +48 -0
  309. package/dist/dist/providers/PaymentProvider.js.map +1 -0
  310. package/dist/dist/providers/PermissionRolesProvider.d.ts +5 -0
  311. package/dist/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
  312. package/dist/dist/providers/PermissionRolesProvider.js +30 -0
  313. package/dist/dist/providers/PermissionRolesProvider.js.map +1 -0
  314. package/dist/dist/providers/PhoneNumberProvider.d.ts +12 -0
  315. package/dist/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
  316. package/dist/dist/providers/PhoneNumberProvider.js +184 -0
  317. package/dist/dist/providers/PhoneNumberProvider.js.map +1 -0
  318. package/dist/dist/providers/ProfileProvider.d.ts +6 -0
  319. package/dist/dist/providers/ProfileProvider.d.ts.map +1 -0
  320. package/dist/dist/providers/ProfileProvider.js +71 -0
  321. package/dist/dist/providers/ProfileProvider.js.map +1 -0
  322. package/dist/dist/providers/RentalsProvider.d.ts +28 -0
  323. package/dist/dist/providers/RentalsProvider.d.ts.map +1 -0
  324. package/dist/dist/providers/RentalsProvider.js +438 -0
  325. package/dist/dist/providers/RentalsProvider.js.map +1 -0
  326. package/dist/dist/providers/SettingsBookingProvider.d.ts +9 -0
  327. package/dist/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
  328. package/dist/dist/providers/SettingsBookingProvider.js +163 -0
  329. package/dist/dist/providers/SettingsBookingProvider.js.map +1 -0
  330. package/dist/dist/providers/SettingsProvider.d.ts +8 -0
  331. package/dist/dist/providers/SettingsProvider.d.ts.map +1 -0
  332. package/dist/dist/providers/SettingsProvider.js +86 -0
  333. package/dist/dist/providers/SettingsProvider.js.map +1 -0
  334. package/dist/dist/providers/TagsProvider.d.ts +12 -0
  335. package/dist/dist/providers/TagsProvider.d.ts.map +1 -0
  336. package/dist/dist/providers/TagsProvider.js +210 -0
  337. package/dist/dist/providers/TagsProvider.js.map +1 -0
  338. package/dist/dist/providers/TimeCardProvider.d.ts +8 -0
  339. package/dist/dist/providers/TimeCardProvider.d.ts.map +1 -0
  340. package/dist/dist/providers/TimeCardProvider.js +93 -0
  341. package/dist/dist/providers/TimeCardProvider.js.map +1 -0
  342. package/dist/dist/providers/TrashProvider.d.ts +13 -0
  343. package/dist/dist/providers/TrashProvider.d.ts.map +1 -0
  344. package/dist/dist/providers/TrashProvider.js +98 -0
  345. package/dist/dist/providers/TrashProvider.js.map +1 -0
  346. package/dist/dist/providers/dashboardAnalytics.d.ts +9 -0
  347. package/dist/dist/providers/dashboardAnalytics.d.ts.map +1 -0
  348. package/dist/dist/providers/dashboardAnalytics.js +41 -0
  349. package/dist/dist/providers/dashboardAnalytics.js.map +1 -0
  350. package/dist/dist/providers/dashboardAnalytics.test.d.ts +2 -0
  351. package/dist/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
  352. package/dist/dist/providers/dashboardAnalytics.test.js +111 -0
  353. package/dist/dist/providers/dashboardAnalytics.test.js.map +1 -0
  354. package/dist/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
  355. package/dist/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
  356. package/dist/dist/server-safe/BlockedNumberFunctions.js +16 -0
  357. package/dist/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
  358. package/dist/dist/server-safe/EmployeeFunctions.d.ts +14 -0
  359. package/dist/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
  360. package/dist/dist/server-safe/EmployeeFunctions.js +70 -0
  361. package/dist/dist/server-safe/EmployeeFunctions.js.map +1 -0
  362. package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
  363. package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
  364. package/dist/dist/server-safe/EmployeeLocationFunctions.js +47 -0
  365. package/dist/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
  366. package/dist/dist/server-safe/EstimateFunctions.d.ts +15 -0
  367. package/dist/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
  368. package/dist/dist/server-safe/EstimateFunctions.js +34 -0
  369. package/dist/dist/server-safe/EstimateFunctions.js.map +1 -0
  370. package/dist/dist/server-safe/InvoiceFunctions.d.ts +21 -0
  371. package/dist/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
  372. package/dist/dist/server-safe/InvoiceFunctions.js +124 -0
  373. package/dist/dist/server-safe/InvoiceFunctions.js.map +1 -0
  374. package/dist/dist/server-safe/JobFunctions.d.ts +15 -0
  375. package/dist/dist/server-safe/JobFunctions.d.ts.map +1 -0
  376. package/dist/dist/server-safe/JobFunctions.js +56 -0
  377. package/dist/dist/server-safe/JobFunctions.js.map +1 -0
  378. package/dist/dist/server-safe/PaymentFunctions.d.ts +16 -0
  379. package/dist/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
  380. package/dist/dist/server-safe/PaymentFunctions.js +80 -0
  381. package/dist/dist/server-safe/PaymentFunctions.js.map +1 -0
  382. package/dist/dist/server-safe/PermissionFunctions.d.ts +7 -0
  383. package/dist/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
  384. package/dist/dist/server-safe/PermissionFunctions.js +39 -0
  385. package/dist/dist/server-safe/PermissionFunctions.js.map +1 -0
  386. package/dist/dist/server-safe/TagFunctions.d.ts +18 -0
  387. package/dist/dist/server-safe/TagFunctions.d.ts.map +1 -0
  388. package/dist/dist/server-safe/TagFunctions.js +52 -0
  389. package/dist/dist/server-safe/TagFunctions.js.map +1 -0
  390. package/dist/dist/server-safe/autoJobType.d.ts +16 -0
  391. package/dist/dist/server-safe/autoJobType.d.ts.map +1 -0
  392. package/dist/dist/server-safe/autoJobType.js +39 -0
  393. package/dist/dist/server-safe/autoJobType.js.map +1 -0
  394. package/dist/dist/server-safe/autoJobType.test.d.ts +2 -0
  395. package/dist/dist/server-safe/autoJobType.test.d.ts.map +1 -0
  396. package/dist/dist/server-safe/autoJobType.test.js +83 -0
  397. package/dist/dist/server-safe/autoJobType.test.js.map +1 -0
  398. package/dist/dist/server-safe/automations.d.ts +197 -0
  399. package/dist/dist/server-safe/automations.d.ts.map +1 -0
  400. package/dist/dist/server-safe/automations.js +757 -0
  401. package/dist/dist/server-safe/automations.js.map +1 -0
  402. package/dist/dist/server-safe/automations.test.d.ts +2 -0
  403. package/dist/dist/server-safe/automations.test.d.ts.map +1 -0
  404. package/dist/dist/server-safe/automations.test.js +441 -0
  405. package/dist/dist/server-safe/automations.test.js.map +1 -0
  406. package/dist/dist/server-safe/constants.d.ts +156 -0
  407. package/dist/dist/server-safe/constants.d.ts.map +1 -0
  408. package/dist/dist/server-safe/constants.js +186 -0
  409. package/dist/dist/server-safe/constants.js.map +1 -0
  410. package/dist/dist/server-safe/contracts.d.ts +3 -0
  411. package/dist/dist/server-safe/contracts.d.ts.map +1 -0
  412. package/dist/dist/server-safe/contracts.js +15 -0
  413. package/dist/dist/server-safe/contracts.js.map +1 -0
  414. package/dist/dist/server-safe/database.types.d.ts +9510 -0
  415. package/dist/dist/server-safe/database.types.d.ts.map +1 -0
  416. package/dist/dist/server-safe/database.types.js +40 -0
  417. package/dist/dist/server-safe/database.types.js.map +1 -0
  418. package/dist/dist/server-safe/entitlements.d.ts +99 -0
  419. package/dist/dist/server-safe/entitlements.d.ts.map +1 -0
  420. package/dist/dist/server-safe/entitlements.js +487 -0
  421. package/dist/dist/server-safe/entitlements.js.map +1 -0
  422. package/dist/dist/server-safe/facebookAdsLeads.d.ts +225 -0
  423. package/dist/dist/server-safe/facebookAdsLeads.d.ts.map +1 -0
  424. package/dist/dist/server-safe/facebookAdsLeads.js +376 -0
  425. package/dist/dist/server-safe/facebookAdsLeads.js.map +1 -0
  426. package/dist/dist/server-safe/facebookAdsLeads.test.d.ts +2 -0
  427. package/dist/dist/server-safe/facebookAdsLeads.test.d.ts.map +1 -0
  428. package/dist/dist/server-safe/facebookAdsLeads.test.js +189 -0
  429. package/dist/dist/server-safe/facebookAdsLeads.test.js.map +1 -0
  430. package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts +2 -0
  431. package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts.map +1 -0
  432. package/dist/dist/server-safe/facebookAdsLeadsSql.test.js +32 -0
  433. package/dist/dist/server-safe/facebookAdsLeadsSql.test.js.map +1 -0
  434. package/dist/dist/server-safe/facebookMessenger.d.ts +20 -0
  435. package/dist/dist/server-safe/facebookMessenger.d.ts.map +1 -0
  436. package/dist/dist/server-safe/facebookMessenger.js +63 -0
  437. package/dist/dist/server-safe/facebookMessenger.js.map +1 -0
  438. package/dist/dist/server-safe/facebookMessenger.test.d.ts +2 -0
  439. package/dist/dist/server-safe/facebookMessenger.test.d.ts.map +1 -0
  440. package/dist/dist/server-safe/facebookMessenger.test.js +51 -0
  441. package/dist/dist/server-safe/facebookMessenger.test.js.map +1 -0
  442. package/dist/dist/server-safe/helpers.d.ts +78 -0
  443. package/dist/dist/server-safe/helpers.d.ts.map +1 -0
  444. package/dist/dist/server-safe/helpers.js +569 -0
  445. package/dist/dist/server-safe/helpers.js.map +1 -0
  446. package/dist/dist/server-safe/index.d.ts +30 -0
  447. package/dist/dist/server-safe/index.d.ts.map +1 -0
  448. package/dist/dist/server-safe/index.js +46 -0
  449. package/dist/dist/server-safe/index.js.map +1 -0
  450. package/dist/dist/server-safe/permissions.d.ts +29 -0
  451. package/dist/dist/server-safe/permissions.d.ts.map +1 -0
  452. package/dist/dist/server-safe/permissions.js +180 -0
  453. package/dist/dist/server-safe/permissions.js.map +1 -0
  454. package/dist/dist/server-safe/proposals.d.ts +6 -0
  455. package/dist/dist/server-safe/proposals.d.ts.map +1 -0
  456. package/dist/dist/server-safe/proposals.js +58 -0
  457. package/dist/dist/server-safe/proposals.js.map +1 -0
  458. package/dist/dist/server-safe/rentalAvailability.d.ts +56 -0
  459. package/dist/dist/server-safe/rentalAvailability.d.ts.map +1 -0
  460. package/dist/dist/server-safe/rentalAvailability.js +124 -0
  461. package/dist/dist/server-safe/rentalAvailability.js.map +1 -0
  462. package/dist/dist/server-safe/rentalAvailability.test.d.ts +2 -0
  463. package/dist/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
  464. package/dist/dist/server-safe/rentalAvailability.test.js +290 -0
  465. package/dist/dist/server-safe/rentalAvailability.test.js.map +1 -0
  466. package/dist/dist/server-safe/rentals.d.ts +95 -0
  467. package/dist/dist/server-safe/rentals.d.ts.map +1 -0
  468. package/dist/dist/server-safe/rentals.js +432 -0
  469. package/dist/dist/server-safe/rentals.js.map +1 -0
  470. package/dist/dist/server-safe/rentals.test.d.ts +2 -0
  471. package/dist/dist/server-safe/rentals.test.d.ts.map +1 -0
  472. package/dist/dist/server-safe/rentals.test.js +1034 -0
  473. package/dist/dist/server-safe/rentals.test.js.map +1 -0
  474. package/dist/dist/server-safe/routeOptimization.d.ts +155 -0
  475. package/dist/dist/server-safe/routeOptimization.d.ts.map +1 -0
  476. package/dist/dist/server-safe/routeOptimization.js +120 -0
  477. package/dist/dist/server-safe/routeOptimization.js.map +1 -0
  478. package/dist/dist/server-safe/routeOptimization.test.d.ts +2 -0
  479. package/dist/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
  480. package/dist/dist/server-safe/routeOptimization.test.js +234 -0
  481. package/dist/dist/server-safe/routeOptimization.test.js.map +1 -0
  482. package/dist/dist/server-safe/routePlanFingerprint.d.ts +13 -0
  483. package/dist/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
  484. package/dist/dist/server-safe/routePlanFingerprint.js +49 -0
  485. package/dist/dist/server-safe/routePlanFingerprint.js.map +1 -0
  486. package/dist/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
  487. package/dist/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
  488. package/dist/dist/server-safe/routePlanFingerprint.test.js +68 -0
  489. package/dist/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
  490. package/dist/dist/server-safe/scheduleListOrder.d.ts +18 -0
  491. package/dist/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
  492. package/dist/dist/server-safe/scheduleListOrder.js +92 -0
  493. package/dist/dist/server-safe/scheduleListOrder.js.map +1 -0
  494. package/dist/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
  495. package/dist/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
  496. package/dist/dist/server-safe/scheduleListOrder.test.js +260 -0
  497. package/dist/dist/server-safe/scheduleListOrder.test.js.map +1 -0
  498. package/dist/dist/server-safe/serviceMinutes.d.ts +13 -0
  499. package/dist/dist/server-safe/serviceMinutes.d.ts.map +1 -0
  500. package/dist/dist/server-safe/serviceMinutes.js +38 -0
  501. package/dist/dist/server-safe/serviceMinutes.js.map +1 -0
  502. package/dist/dist/server-safe/serviceMinutes.test.d.ts +2 -0
  503. package/dist/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
  504. package/dist/dist/server-safe/serviceMinutes.test.js +86 -0
  505. package/dist/dist/server-safe/serviceMinutes.test.js.map +1 -0
  506. package/dist/dist/server-safe/settingsSearch.d.ts +24 -0
  507. package/dist/dist/server-safe/settingsSearch.d.ts.map +1 -0
  508. package/dist/dist/server-safe/settingsSearch.js +8 -0
  509. package/dist/dist/server-safe/settingsSearch.js.map +1 -0
  510. package/dist/dist/server-safe/supportChat.d.ts +59 -0
  511. package/dist/dist/server-safe/supportChat.d.ts.map +1 -0
  512. package/dist/dist/server-safe/supportChat.js +56 -0
  513. package/dist/dist/server-safe/supportChat.js.map +1 -0
  514. package/dist/dist/server-safe/templates.d.ts +15 -0
  515. package/dist/dist/server-safe/templates.d.ts.map +1 -0
  516. package/dist/dist/server-safe/templates.js +91 -0
  517. package/dist/dist/server-safe/templates.js.map +1 -0
  518. package/dist/dist/server-safe/templates.test.d.ts +2 -0
  519. package/dist/dist/server-safe/templates.test.d.ts.map +1 -0
  520. package/dist/dist/server-safe/templates.test.js +62 -0
  521. package/dist/dist/server-safe/templates.test.js.map +1 -0
  522. package/dist/dist/server-safe/trash.d.ts +50 -0
  523. package/dist/dist/server-safe/trash.d.ts.map +1 -0
  524. package/dist/dist/server-safe/trash.js +100 -0
  525. package/dist/dist/server-safe/trash.js.map +1 -0
  526. package/dist/dist/utils/LogHandler.d.ts +3 -0
  527. package/dist/dist/utils/LogHandler.d.ts.map +1 -0
  528. package/dist/dist/utils/LogHandler.js +16 -0
  529. package/dist/dist/utils/LogHandler.js.map +1 -0
  530. package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
  531. package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
  532. package/dist/dist/utils/convertSupabaseImagesToAssets.js +14 -0
  533. package/dist/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
  534. package/dist/index.d.ts +45 -0
  535. package/dist/index.d.ts.map +1 -0
  536. package/dist/index.js +61 -0
  537. package/dist/index.js.map +1 -0
  538. package/dist/interfaces/index.d.ts +1238 -0
  539. package/dist/interfaces/index.d.ts.map +1 -0
  540. package/dist/interfaces/index.js +3 -0
  541. package/dist/interfaces/index.js.map +1 -0
  542. package/dist/providers/AddressProvider.d.ts +9 -0
  543. package/dist/providers/AddressProvider.d.ts.map +1 -0
  544. package/dist/providers/AddressProvider.js +207 -0
  545. package/dist/providers/AddressProvider.js.map +1 -0
  546. package/dist/providers/AutomationsProvider.d.ts +11 -0
  547. package/dist/providers/AutomationsProvider.d.ts.map +1 -0
  548. package/dist/providers/AutomationsProvider.js +170 -0
  549. package/dist/providers/AutomationsProvider.js.map +1 -0
  550. package/dist/providers/BlockedNumbersProvider.d.ts +7 -0
  551. package/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
  552. package/dist/providers/BlockedNumbersProvider.js +71 -0
  553. package/dist/providers/BlockedNumbersProvider.js.map +1 -0
  554. package/dist/providers/CategoryProvider.d.ts +8 -0
  555. package/dist/providers/CategoryProvider.d.ts.map +1 -0
  556. package/dist/providers/CategoryProvider.js +95 -0
  557. package/dist/providers/CategoryProvider.js.map +1 -0
  558. package/dist/providers/ClientProvider.d.ts +39 -0
  559. package/dist/providers/ClientProvider.d.ts.map +1 -0
  560. package/dist/providers/ClientProvider.js +253 -0
  561. package/dist/providers/ClientProvider.js.map +1 -0
  562. package/dist/providers/CompanyProvider.d.ts +7 -0
  563. package/dist/providers/CompanyProvider.d.ts.map +1 -0
  564. package/dist/providers/CompanyProvider.js +114 -0
  565. package/dist/providers/CompanyProvider.js.map +1 -0
  566. package/dist/providers/DashboardProvider.d.ts +78 -0
  567. package/dist/providers/DashboardProvider.d.ts.map +1 -0
  568. package/dist/providers/DashboardProvider.js +568 -0
  569. package/dist/providers/DashboardProvider.js.map +1 -0
  570. package/dist/providers/DiscountProvider.d.ts +8 -0
  571. package/dist/providers/DiscountProvider.d.ts.map +1 -0
  572. package/dist/providers/DiscountProvider.js +92 -0
  573. package/dist/providers/DiscountProvider.js.map +1 -0
  574. package/dist/providers/EmployeesProvider.d.ts +6 -0
  575. package/dist/providers/EmployeesProvider.d.ts.map +1 -0
  576. package/dist/providers/EmployeesProvider.js +185 -0
  577. package/dist/providers/EmployeesProvider.js.map +1 -0
  578. package/dist/providers/EstimatesProvider.d.ts +16 -0
  579. package/dist/providers/EstimatesProvider.d.ts.map +1 -0
  580. package/dist/providers/EstimatesProvider.js +251 -0
  581. package/dist/providers/EstimatesProvider.js.map +1 -0
  582. package/dist/providers/EventsProvider.d.ts +4 -0
  583. package/dist/providers/EventsProvider.d.ts.map +1 -0
  584. package/dist/providers/EventsProvider.js +24 -0
  585. package/dist/providers/EventsProvider.js.map +1 -0
  586. package/dist/providers/FilesProvider.d.ts +17 -0
  587. package/dist/providers/FilesProvider.d.ts.map +1 -0
  588. package/dist/providers/FilesProvider.js +201 -0
  589. package/dist/providers/FilesProvider.js.map +1 -0
  590. package/dist/providers/InvoicesProvider.d.ts +13 -0
  591. package/dist/providers/InvoicesProvider.d.ts.map +1 -0
  592. package/dist/providers/InvoicesProvider.js +207 -0
  593. package/dist/providers/InvoicesProvider.js.map +1 -0
  594. package/dist/providers/ItemProvider.d.ts +9 -0
  595. package/dist/providers/ItemProvider.d.ts.map +1 -0
  596. package/dist/providers/ItemProvider.js +201 -0
  597. package/dist/providers/ItemProvider.js.map +1 -0
  598. package/dist/providers/JobSourceProvider.d.ts +8 -0
  599. package/dist/providers/JobSourceProvider.d.ts.map +1 -0
  600. package/dist/providers/JobSourceProvider.js +75 -0
  601. package/dist/providers/JobSourceProvider.js.map +1 -0
  602. package/dist/providers/JobTypeProvider.d.ts +8 -0
  603. package/dist/providers/JobTypeProvider.d.ts.map +1 -0
  604. package/dist/providers/JobTypeProvider.js +75 -0
  605. package/dist/providers/JobTypeProvider.js.map +1 -0
  606. package/dist/providers/JobsProvider.d.ts +20 -0
  607. package/dist/providers/JobsProvider.d.ts.map +1 -0
  608. package/dist/providers/JobsProvider.js +863 -0
  609. package/dist/providers/JobsProvider.js.map +1 -0
  610. package/dist/providers/MessagesProvider.d.ts +14 -0
  611. package/dist/providers/MessagesProvider.d.ts.map +1 -0
  612. package/dist/providers/MessagesProvider.js +415 -0
  613. package/dist/providers/MessagesProvider.js.map +1 -0
  614. package/dist/providers/PaymentProvider.d.ts +9 -0
  615. package/dist/providers/PaymentProvider.d.ts.map +1 -0
  616. package/dist/providers/PaymentProvider.js +48 -0
  617. package/dist/providers/PaymentProvider.js.map +1 -0
  618. package/dist/providers/PermissionRolesProvider.d.ts +5 -0
  619. package/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
  620. package/dist/providers/PermissionRolesProvider.js +30 -0
  621. package/dist/providers/PermissionRolesProvider.js.map +1 -0
  622. package/dist/providers/PhoneNumberProvider.d.ts +12 -0
  623. package/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
  624. package/dist/providers/PhoneNumberProvider.js +184 -0
  625. package/dist/providers/PhoneNumberProvider.js.map +1 -0
  626. package/dist/providers/ProfileProvider.d.ts +6 -0
  627. package/dist/providers/ProfileProvider.d.ts.map +1 -0
  628. package/dist/providers/ProfileProvider.js +71 -0
  629. package/dist/providers/ProfileProvider.js.map +1 -0
  630. package/dist/providers/RentalsProvider.d.ts +28 -0
  631. package/dist/providers/RentalsProvider.d.ts.map +1 -0
  632. package/dist/providers/RentalsProvider.js +438 -0
  633. package/dist/providers/RentalsProvider.js.map +1 -0
  634. package/dist/providers/SettingsBookingProvider.d.ts +9 -0
  635. package/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
  636. package/dist/providers/SettingsBookingProvider.js +163 -0
  637. package/dist/providers/SettingsBookingProvider.js.map +1 -0
  638. package/dist/providers/SettingsProvider.d.ts +8 -0
  639. package/dist/providers/SettingsProvider.d.ts.map +1 -0
  640. package/dist/providers/SettingsProvider.js +86 -0
  641. package/dist/providers/SettingsProvider.js.map +1 -0
  642. package/dist/providers/TagsProvider.d.ts +12 -0
  643. package/dist/providers/TagsProvider.d.ts.map +1 -0
  644. package/dist/providers/TagsProvider.js +210 -0
  645. package/dist/providers/TagsProvider.js.map +1 -0
  646. package/dist/providers/TimeCardProvider.d.ts +8 -0
  647. package/dist/providers/TimeCardProvider.d.ts.map +1 -0
  648. package/dist/providers/TimeCardProvider.js +93 -0
  649. package/dist/providers/TimeCardProvider.js.map +1 -0
  650. package/dist/providers/TrashProvider.d.ts +13 -0
  651. package/dist/providers/TrashProvider.d.ts.map +1 -0
  652. package/dist/providers/TrashProvider.js +98 -0
  653. package/dist/providers/TrashProvider.js.map +1 -0
  654. package/dist/providers/dashboardAnalytics.d.ts +9 -0
  655. package/dist/providers/dashboardAnalytics.d.ts.map +1 -0
  656. package/dist/providers/dashboardAnalytics.js +41 -0
  657. package/dist/providers/dashboardAnalytics.js.map +1 -0
  658. package/dist/providers/dashboardAnalytics.test.d.ts +2 -0
  659. package/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
  660. package/dist/providers/dashboardAnalytics.test.js +111 -0
  661. package/dist/providers/dashboardAnalytics.test.js.map +1 -0
  662. package/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
  663. package/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
  664. package/dist/server-safe/BlockedNumberFunctions.js +16 -0
  665. package/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
  666. package/dist/server-safe/EmployeeFunctions.d.ts +14 -0
  667. package/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
  668. package/dist/server-safe/EmployeeFunctions.js +70 -0
  669. package/dist/server-safe/EmployeeFunctions.js.map +1 -0
  670. package/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
  671. package/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
  672. package/dist/server-safe/EmployeeLocationFunctions.js +47 -0
  673. package/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
  674. package/dist/server-safe/EstimateFunctions.d.ts +15 -0
  675. package/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
  676. package/dist/server-safe/EstimateFunctions.js +34 -0
  677. package/dist/server-safe/EstimateFunctions.js.map +1 -0
  678. package/dist/server-safe/InvoiceFunctions.d.ts +21 -0
  679. package/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
  680. package/dist/server-safe/InvoiceFunctions.js +124 -0
  681. package/dist/server-safe/InvoiceFunctions.js.map +1 -0
  682. package/dist/server-safe/JobFunctions.d.ts +15 -0
  683. package/dist/server-safe/JobFunctions.d.ts.map +1 -0
  684. package/dist/server-safe/JobFunctions.js +56 -0
  685. package/dist/server-safe/JobFunctions.js.map +1 -0
  686. package/dist/server-safe/PaymentFunctions.d.ts +16 -0
  687. package/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
  688. package/dist/server-safe/PaymentFunctions.js +80 -0
  689. package/dist/server-safe/PaymentFunctions.js.map +1 -0
  690. package/dist/server-safe/PermissionFunctions.d.ts +7 -0
  691. package/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
  692. package/dist/server-safe/PermissionFunctions.js +39 -0
  693. package/dist/server-safe/PermissionFunctions.js.map +1 -0
  694. package/dist/server-safe/TagFunctions.d.ts +18 -0
  695. package/dist/server-safe/TagFunctions.d.ts.map +1 -0
  696. package/dist/server-safe/TagFunctions.js +52 -0
  697. package/dist/server-safe/TagFunctions.js.map +1 -0
  698. package/dist/server-safe/autoJobType.d.ts +16 -0
  699. package/dist/server-safe/autoJobType.d.ts.map +1 -0
  700. package/dist/server-safe/autoJobType.js +39 -0
  701. package/dist/server-safe/autoJobType.js.map +1 -0
  702. package/dist/server-safe/autoJobType.test.d.ts +2 -0
  703. package/dist/server-safe/autoJobType.test.d.ts.map +1 -0
  704. package/dist/server-safe/autoJobType.test.js +83 -0
  705. package/dist/server-safe/autoJobType.test.js.map +1 -0
  706. package/dist/server-safe/automations.d.ts +197 -0
  707. package/dist/server-safe/automations.d.ts.map +1 -0
  708. package/dist/server-safe/automations.js +757 -0
  709. package/dist/server-safe/automations.js.map +1 -0
  710. package/dist/server-safe/automations.test.d.ts +2 -0
  711. package/dist/server-safe/automations.test.d.ts.map +1 -0
  712. package/dist/server-safe/automations.test.js +441 -0
  713. package/dist/server-safe/automations.test.js.map +1 -0
  714. package/dist/server-safe/constants.d.ts +156 -0
  715. package/dist/server-safe/constants.d.ts.map +1 -0
  716. package/dist/server-safe/constants.js +186 -0
  717. package/dist/server-safe/constants.js.map +1 -0
  718. package/dist/server-safe/contracts.d.ts +3 -0
  719. package/dist/server-safe/contracts.d.ts.map +1 -0
  720. package/dist/server-safe/contracts.js +15 -0
  721. package/dist/server-safe/contracts.js.map +1 -0
  722. package/dist/server-safe/database.types.d.ts +9510 -0
  723. package/dist/server-safe/database.types.d.ts.map +1 -0
  724. package/dist/server-safe/database.types.js +40 -0
  725. package/dist/server-safe/database.types.js.map +1 -0
  726. package/dist/server-safe/entitlements.d.ts +99 -0
  727. package/dist/server-safe/entitlements.d.ts.map +1 -0
  728. package/dist/server-safe/entitlements.js +487 -0
  729. package/dist/server-safe/entitlements.js.map +1 -0
  730. package/dist/server-safe/helpers.d.ts +78 -0
  731. package/dist/server-safe/helpers.d.ts.map +1 -0
  732. package/dist/server-safe/helpers.js +569 -0
  733. package/dist/server-safe/helpers.js.map +1 -0
  734. package/dist/server-safe/index.d.ts +30 -0
  735. package/dist/server-safe/index.d.ts.map +1 -0
  736. package/dist/server-safe/index.js +46 -0
  737. package/dist/server-safe/index.js.map +1 -0
  738. package/dist/server-safe/permissions.d.ts +29 -0
  739. package/dist/server-safe/permissions.d.ts.map +1 -0
  740. package/dist/server-safe/permissions.js +180 -0
  741. package/dist/server-safe/permissions.js.map +1 -0
  742. package/dist/server-safe/proposals.d.ts +6 -0
  743. package/dist/server-safe/proposals.d.ts.map +1 -0
  744. package/dist/server-safe/proposals.js +58 -0
  745. package/dist/server-safe/proposals.js.map +1 -0
  746. package/dist/server-safe/rentalAvailability.d.ts +56 -0
  747. package/dist/server-safe/rentalAvailability.d.ts.map +1 -0
  748. package/dist/server-safe/rentalAvailability.js +124 -0
  749. package/dist/server-safe/rentalAvailability.js.map +1 -0
  750. package/dist/server-safe/rentalAvailability.test.d.ts +2 -0
  751. package/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
  752. package/dist/server-safe/rentalAvailability.test.js +290 -0
  753. package/dist/server-safe/rentalAvailability.test.js.map +1 -0
  754. package/dist/server-safe/rentals.d.ts +95 -0
  755. package/dist/server-safe/rentals.d.ts.map +1 -0
  756. package/dist/server-safe/rentals.js +432 -0
  757. package/dist/server-safe/rentals.js.map +1 -0
  758. package/dist/server-safe/rentals.test.d.ts +2 -0
  759. package/dist/server-safe/rentals.test.d.ts.map +1 -0
  760. package/dist/server-safe/rentals.test.js +1034 -0
  761. package/dist/server-safe/rentals.test.js.map +1 -0
  762. package/dist/server-safe/routeOptimization.d.ts +155 -0
  763. package/dist/server-safe/routeOptimization.d.ts.map +1 -0
  764. package/dist/server-safe/routeOptimization.js +120 -0
  765. package/dist/server-safe/routeOptimization.js.map +1 -0
  766. package/dist/server-safe/routeOptimization.test.d.ts +2 -0
  767. package/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
  768. package/dist/server-safe/routeOptimization.test.js +234 -0
  769. package/dist/server-safe/routeOptimization.test.js.map +1 -0
  770. package/dist/server-safe/routePlanFingerprint.d.ts +13 -0
  771. package/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
  772. package/dist/server-safe/routePlanFingerprint.js +49 -0
  773. package/dist/server-safe/routePlanFingerprint.js.map +1 -0
  774. package/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
  775. package/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
  776. package/dist/server-safe/routePlanFingerprint.test.js +68 -0
  777. package/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
  778. package/dist/server-safe/scheduleListOrder.d.ts +18 -0
  779. package/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
  780. package/dist/server-safe/scheduleListOrder.js +92 -0
  781. package/dist/server-safe/scheduleListOrder.js.map +1 -0
  782. package/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
  783. package/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
  784. package/dist/server-safe/scheduleListOrder.test.js +260 -0
  785. package/dist/server-safe/scheduleListOrder.test.js.map +1 -0
  786. package/dist/server-safe/serviceMinutes.d.ts +13 -0
  787. package/dist/server-safe/serviceMinutes.d.ts.map +1 -0
  788. package/dist/server-safe/serviceMinutes.js +38 -0
  789. package/dist/server-safe/serviceMinutes.js.map +1 -0
  790. package/dist/server-safe/serviceMinutes.test.d.ts +2 -0
  791. package/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
  792. package/dist/server-safe/serviceMinutes.test.js +86 -0
  793. package/dist/server-safe/serviceMinutes.test.js.map +1 -0
  794. package/dist/server-safe/settingsSearch.d.ts +24 -0
  795. package/dist/server-safe/settingsSearch.d.ts.map +1 -0
  796. package/dist/server-safe/settingsSearch.js +8 -0
  797. package/dist/server-safe/settingsSearch.js.map +1 -0
  798. package/dist/server-safe/supportChat.d.ts +59 -0
  799. package/dist/server-safe/supportChat.d.ts.map +1 -0
  800. package/dist/server-safe/supportChat.js +56 -0
  801. package/dist/server-safe/supportChat.js.map +1 -0
  802. package/dist/server-safe/templates.d.ts +15 -0
  803. package/dist/server-safe/templates.d.ts.map +1 -0
  804. package/dist/server-safe/templates.js +91 -0
  805. package/dist/server-safe/templates.js.map +1 -0
  806. package/dist/server-safe/templates.test.d.ts +2 -0
  807. package/dist/server-safe/templates.test.d.ts.map +1 -0
  808. package/dist/server-safe/templates.test.js +62 -0
  809. package/dist/server-safe/templates.test.js.map +1 -0
  810. package/dist/server-safe/trash.d.ts +50 -0
  811. package/dist/server-safe/trash.d.ts.map +1 -0
  812. package/dist/server-safe/trash.js +100 -0
  813. package/dist/server-safe/trash.js.map +1 -0
  814. package/dist/utils/LogHandler.d.ts +3 -0
  815. package/dist/utils/LogHandler.d.ts.map +1 -0
  816. package/dist/utils/LogHandler.js +16 -0
  817. package/dist/utils/LogHandler.js.map +1 -0
  818. package/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
  819. package/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
  820. package/dist/utils/convertSupabaseImagesToAssets.js +14 -0
  821. package/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
  822. package/package.json +37 -0
@@ -0,0 +1,12 @@
1
+ -- Size in yards on pricebook/booking items, mirroring asset.size: the soft
2
+ -- asset-size mismatch warning on the schedule cards compares a selected
3
+ -- asset's size against the sizes of the job's rental (duration) items,
4
+ -- resolved by item_name. Null = no size configured — the item never
5
+ -- contributes to the warning. The CHECK forbids 0/negatives
6
+ -- (item_duration_check's sibling): zero or negative yardage is always a
7
+ -- data error, and both UIs coerce empty/invalid input to null.
8
+ -- No RLS change needed: item's "If is_booking, public can read" policy
9
+ -- already covers new columns.
10
+ alter table item
11
+ add column "size" numeric null
12
+ constraint item_size_check check ("size" > 0);
@@ -0,0 +1,11 @@
1
+ -- Labels for the rentals-vs-services chooser on the public booking page.
2
+ -- When a company's booking catalog offers both rentals (duration items) and
3
+ -- services, the Items step opens with two buttons; these columns are their
4
+ -- text. NOT NULL with defaults (enforce_rental_availability's sibling):
5
+ -- every row reads ready-to-render strings and no consumer branches on null.
6
+ -- Both settings UIs normalize cleared fields back to these defaults at save.
7
+ -- No RLS change needed: settings_booking's public-read policy and grants are
8
+ -- table-level, so new columns are automatically anon-readable.
9
+ alter table settings_booking
10
+ add column rental_button_label text not null default 'Dumpster Rental',
11
+ add column service_button_label text not null default 'Junk Removal';
@@ -0,0 +1,37 @@
1
+ -- Global driving-distance cache for rental route optimization.
2
+ --
3
+ -- One row per DIRECTED coordinate pair, fetched from the Google Routes API
4
+ -- (computeRouteMatrix) by the web server's distance layer. Keyed by lat/lng
5
+ -- rounded to 4 decimal places (~11 m) — rounding happens in the application
6
+ -- layer at both write and lookup time, so re-geocoding jitter still hits the
7
+ -- cache. Coordinate pairs, not address strings: address formatting drifts,
8
+ -- coordinates don't.
9
+ --
10
+ -- Deliberately global (no company_id): the driving distance between two
11
+ -- points has no tenant dimension, and sharing rows across companies
12
+ -- multiplies the hit rate. Lot/landfill pairs are static, so they are
13
+ -- fetched once ever. Directed because road networks are asymmetric; the
14
+ -- read layer may use the reversed pair as an estimate but never stores a
15
+ -- reversed row.
16
+ --
17
+ -- No TTL logic yet; fetched_at supports a future refresh policy.
18
+
19
+ create table "public"."route_distance_cache" (
20
+ "id" uuid not null default gen_random_uuid(),
21
+ "created_at" timestamp with time zone not null default now(),
22
+ "origin_lat" numeric(8, 4) not null,
23
+ "origin_lng" numeric(9, 4) not null,
24
+ "dest_lat" numeric(8, 4) not null,
25
+ "dest_lng" numeric(9, 4) not null,
26
+ "distance_meters" integer not null,
27
+ "duration_seconds" integer not null,
28
+ "provider" text not null default 'google_routes',
29
+ "fetched_at" timestamp with time zone not null default now()
30
+ );
31
+
32
+ alter table "public"."route_distance_cache"
33
+ add constraint "route_distance_cache_pkey" primary key ("id");
34
+
35
+ create unique index "route_distance_cache_pair_idx"
36
+ on "public"."route_distance_cache"
37
+ ("origin_lat", "origin_lng", "dest_lat", "dest_lng");
@@ -0,0 +1,15 @@
1
+ -- RLS + grants for route_distance_cache.
2
+ --
3
+ -- Affected table: route_distance_cache (created in the preceding
4
+ -- add_route_distance_cache migration).
5
+ --
6
+ -- The cache is server infrastructure: only the web server's distance layer
7
+ -- (service role) reads or writes it. Clients never touch it, so RLS is
8
+ -- enabled with NO policies and table grants are revoked from anon and
9
+ -- authenticated — service_role bypasses RLS and keeps its grant.
10
+
11
+ alter table "public"."route_distance_cache" enable row level security;
12
+
13
+ revoke all on table "public"."route_distance_cache" from "anon";
14
+ revoke all on table "public"."route_distance_cache" from "authenticated";
15
+ grant all on table "public"."route_distance_cache" to "service_role";
@@ -0,0 +1,275 @@
1
+ -- Transactional write-back for an approved rental route plan.
2
+ --
3
+ -- Approving a plan must atomically (1) verify every planned schedule row is
4
+ -- still in the state it had when the plan was computed, (2) apply the new
5
+ -- list_sort_key / asset_id values, (3) replace each planned row's job_user
6
+ -- assignments, and (4) insert the optimizer-created take_to_dump /
7
+ -- take_to_lot rows with their assignments. Done as separate PostgREST
8
+ -- calls, a failure mid-way could leave a half-applied plan (reassigned
9
+ -- drivers with stale ordering, or landfill legs without their haul), so it
10
+ -- is one function, one transaction.
11
+ --
12
+ -- The row locks plus the status precondition resolve the approve-vs-edit
13
+ -- race: any concurrent status change either commits first (this call then
14
+ -- fails the precondition, errcode P0010, surfaced to the dispatcher as
15
+ -- "plan is stale — re-run") or blocks on the lock until the plan is fully
16
+ -- applied.
17
+ --
18
+ -- The function is a dumb applier: every column value (including the
19
+ -- target_* location shape) is computed in TypeScript by the web server via
20
+ -- the canonical single-writer helpers, preserving the single-writer rule.
21
+ -- It enforces only tenancy, staleness, and the invariants of
22
+ -- optimizer-created rows (take_to_dump/take_to_lot only, asset required,
23
+ -- status Open, any_time true).
24
+ --
25
+ -- security definer + service_role-only: the sole caller is
26
+ -- /api/rental-routes/apply, which authenticates the dispatcher and checks
27
+ -- the create_jobs permission before calling.
28
+ --
29
+ -- Payload shapes:
30
+ -- p_expected: [{"schedule_id": uuid, "status": text,
31
+ -- "asset_id": uuid | null,
32
+ -- "secondary_asset_id": uuid | null,
33
+ -- "list_sort_key": numeric | null,
34
+ -- "user_ids": [uuid] (current assignees, sorted)}]
35
+ -- p_task_updates: [{"schedule_id": uuid, "list_sort_key": numeric,
36
+ -- "asset_id": uuid (key optional; absent = leave as-is)}]
37
+ -- p_assignments: [{"schedule_id": uuid, "user_ids": [uuid]}]
38
+ -- p_new_tasks: [{"id": uuid, "job_id": uuid, "task_type": text,
39
+ -- "start_time": timestamptz, "end_time": timestamptz,
40
+ -- "list_sort_key": numeric, "asset_id": uuid,
41
+ -- "target_saved_location_id": uuid | null,
42
+ -- "target_address": text | null,
43
+ -- "target_latitude": numeric | null,
44
+ -- "target_longitude": numeric | null,
45
+ -- "user_ids": [uuid]}]
46
+
47
+ create or replace function "public"."apply_rental_route_plan"(
48
+ "p_company_id" uuid,
49
+ "p_expected" jsonb,
50
+ "p_task_updates" jsonb,
51
+ "p_assignments" jsonb,
52
+ "p_new_tasks" jsonb
53
+ ) returns void
54
+ language plpgsql
55
+ security definer
56
+ set search_path = public
57
+ as $$
58
+ declare
59
+ v_item jsonb;
60
+ v_sched "public"."job_schedule"%rowtype;
61
+ v_expected_ids uuid[] := '{}';
62
+ v_schedule_id uuid;
63
+ v_new_id uuid;
64
+ v_job_id uuid;
65
+ v_current_users uuid[];
66
+ v_expected_users uuid[];
67
+ begin
68
+ if p_company_id is null then
69
+ raise exception 'company id is required'
70
+ using errcode = 'P0011';
71
+ end if;
72
+
73
+ -- 1. Lock every planned row; verify tenancy and that its optimized
74
+ -- state — status, assets, ordering, assignees — is unchanged since
75
+ -- the plan was computed. Status alone is not enough: a dispatcher
76
+ -- can re-assign an asset or a driver without touching status, and a
77
+ -- stale plan must not overwrite that edit.
78
+ for v_item in
79
+ select * from jsonb_array_elements(coalesce(p_expected, '[]'::jsonb))
80
+ loop
81
+ v_schedule_id := (v_item->>'schedule_id')::uuid;
82
+
83
+ select * into v_sched
84
+ from "public"."job_schedule"
85
+ where "id" = v_schedule_id
86
+ for update;
87
+
88
+ if not found or v_sched."company_id" is distinct from p_company_id then
89
+ raise exception 'route plan references an unknown schedule row'
90
+ using errcode = 'P0011';
91
+ end if;
92
+
93
+ select coalesce(array_agg("user_id" order by "user_id"), '{}')
94
+ into v_current_users
95
+ from "public"."job_user"
96
+ where "job_schedule_id" = v_schedule_id;
97
+
98
+ select coalesce(array_agg(u.value::uuid order by u.value::uuid), '{}')
99
+ into v_expected_users
100
+ from jsonb_array_elements_text(
101
+ coalesce(v_item->'user_ids', '[]'::jsonb)) u;
102
+
103
+ if v_sched."status"::text is distinct from (v_item->>'status')
104
+ or v_sched."asset_id" is distinct from
105
+ (v_item->>'asset_id')::uuid
106
+ or v_sched."secondary_asset_id" is distinct from
107
+ (v_item->>'secondary_asset_id')::uuid
108
+ or v_sched."list_sort_key" is distinct from
109
+ (v_item->>'list_sort_key')::numeric
110
+ or v_current_users is distinct from v_expected_users
111
+ then
112
+ raise exception 'route plan is stale'
113
+ using errcode = 'P0010';
114
+ end if;
115
+
116
+ v_expected_ids := v_expected_ids || v_schedule_id;
117
+ end loop;
118
+
119
+ -- 2. Ordering / asset assignment updates. Every touched row must have
120
+ -- been locked and company-checked above.
121
+ for v_item in
122
+ select * from jsonb_array_elements(coalesce(p_task_updates, '[]'::jsonb))
123
+ loop
124
+ v_schedule_id := (v_item->>'schedule_id')::uuid;
125
+
126
+ if not (v_schedule_id = any (v_expected_ids)) then
127
+ raise exception 'task update outside the locked plan rows'
128
+ using errcode = 'P0011';
129
+ end if;
130
+
131
+ update "public"."job_schedule"
132
+ set "list_sort_key" = (v_item->>'list_sort_key')::numeric,
133
+ "asset_id" = case
134
+ when v_item ? 'asset_id' then (v_item->>'asset_id')::uuid
135
+ else "asset_id"
136
+ end
137
+ where "id" = v_schedule_id;
138
+ end loop;
139
+
140
+ -- 3. Full replacement of each planned row's assignments. job_id is read
141
+ -- from the schedule row itself, never from the payload, and every
142
+ -- assignee must belong to the company — user and company foreign
143
+ -- keys on job_user are enforced independently, so without this
144
+ -- check a crafted payload could create a cross-tenant assignment.
145
+ for v_item in
146
+ select * from jsonb_array_elements(coalesce(p_assignments, '[]'::jsonb))
147
+ loop
148
+ v_schedule_id := (v_item->>'schedule_id')::uuid;
149
+
150
+ if not (v_schedule_id = any (v_expected_ids)) then
151
+ raise exception 'assignment outside the locked plan rows'
152
+ using errcode = 'P0011';
153
+ end if;
154
+
155
+ perform 1
156
+ from jsonb_array_elements_text(
157
+ coalesce(v_item->'user_ids', '[]'::jsonb)) u
158
+ where not exists (
159
+ select 1 from "public"."user_role" ur
160
+ where ur."user_id" = u.value::uuid
161
+ and ur."company_id" = p_company_id
162
+ );
163
+ if found then
164
+ raise exception 'assignee outside the company'
165
+ using errcode = 'P0011';
166
+ end if;
167
+
168
+ delete from "public"."job_user"
169
+ where "job_schedule_id" = v_schedule_id;
170
+
171
+ insert into "public"."job_user"
172
+ ("company_id", "job_id", "job_schedule_id", "user_id")
173
+ select p_company_id, js."job_id", v_schedule_id, u.value::uuid
174
+ from "public"."job_schedule" js
175
+ cross join jsonb_array_elements_text(
176
+ coalesce(v_item->'user_ids', '[]'::jsonb)) u
177
+ where js."id" = v_schedule_id;
178
+ end loop;
179
+
180
+ -- 4. Optimizer-created landfill / lot legs.
181
+ for v_item in
182
+ select * from jsonb_array_elements(coalesce(p_new_tasks, '[]'::jsonb))
183
+ loop
184
+ if (v_item->>'task_type') not in ('take_to_dump', 'take_to_lot') then
185
+ raise exception
186
+ 'optimizer may only create take_to_dump or take_to_lot tasks'
187
+ using errcode = 'P0012';
188
+ end if;
189
+
190
+ if (v_item->>'asset_id') is null then
191
+ raise exception 'optimizer-created tasks require an asset'
192
+ using errcode = 'P0012';
193
+ end if;
194
+
195
+ v_job_id := (v_item->>'job_id')::uuid;
196
+
197
+ perform 1 from "public"."job"
198
+ where "id" = v_job_id and "company_id" = p_company_id;
199
+
200
+ if not found then
201
+ raise exception 'new task references a job outside the company'
202
+ using errcode = 'P0011';
203
+ end if;
204
+
205
+ perform 1
206
+ from jsonb_array_elements_text(
207
+ coalesce(v_item->'user_ids', '[]'::jsonb)) u
208
+ where not exists (
209
+ select 1 from "public"."user_role" ur
210
+ where ur."user_id" = u.value::uuid
211
+ and ur."company_id" = p_company_id
212
+ );
213
+ if found then
214
+ raise exception 'assignee outside the company'
215
+ using errcode = 'P0011';
216
+ end if;
217
+
218
+ v_new_id := coalesce((v_item->>'id')::uuid, gen_random_uuid());
219
+
220
+ -- on conflict do nothing keeps a retried approval (committed but
221
+ -- the response was lost) from raising a primary-key violation on
222
+ -- the client-generated id; the job_user insert is skipped for the
223
+ -- already-existing row so assignees never duplicate.
224
+ insert into "public"."job_schedule" (
225
+ "id", "company_id", "job_id", "task_type", "status", "any_time",
226
+ "start_time", "end_time", "list_sort_key", "asset_id",
227
+ "target_saved_location_id", "target_address",
228
+ "target_latitude", "target_longitude"
229
+ ) values (
230
+ v_new_id,
231
+ p_company_id,
232
+ v_job_id,
233
+ v_item->>'task_type',
234
+ 'Open'::"public"."job_status_enum",
235
+ true,
236
+ (v_item->>'start_time')::timestamptz,
237
+ (v_item->>'end_time')::timestamptz,
238
+ (v_item->>'list_sort_key')::numeric,
239
+ (v_item->>'asset_id')::uuid,
240
+ (v_item->>'target_saved_location_id')::uuid,
241
+ v_item->>'target_address',
242
+ (v_item->>'target_latitude')::numeric,
243
+ (v_item->>'target_longitude')::numeric
244
+ )
245
+ on conflict ("id") do nothing;
246
+
247
+ if found then
248
+ insert into "public"."job_user"
249
+ ("company_id", "job_id", "job_schedule_id", "user_id")
250
+ select p_company_id, v_job_id, v_new_id, u.value::uuid
251
+ from jsonb_array_elements_text(
252
+ coalesce(v_item->'user_ids', '[]'::jsonb)) u;
253
+ end if;
254
+ end loop;
255
+ end;
256
+ $$;
257
+
258
+ alter function "public"."apply_rental_route_plan"(
259
+ uuid, jsonb, jsonb, jsonb, jsonb
260
+ ) owner to "postgres";
261
+
262
+ -- security definer + service_role-only: /api/rental-routes/apply is the
263
+ -- sole caller; no authenticated/anon path exists.
264
+ revoke all on function "public"."apply_rental_route_plan"(
265
+ uuid, jsonb, jsonb, jsonb, jsonb
266
+ ) from public;
267
+ revoke all on function "public"."apply_rental_route_plan"(
268
+ uuid, jsonb, jsonb, jsonb, jsonb
269
+ ) from "anon";
270
+ revoke all on function "public"."apply_rental_route_plan"(
271
+ uuid, jsonb, jsonb, jsonb, jsonb
272
+ ) from "authenticated";
273
+ grant execute on function "public"."apply_rental_route_plan"(
274
+ uuid, jsonb, jsonb, jsonb, jsonb
275
+ ) to "service_role";
@@ -0,0 +1,9 @@
1
+ -- Default job type applied automatically from a job's task composition
2
+ -- (job_schedule.task_type: null = normal task, non-null = rental task).
3
+ -- normal = all tasks normal, rental = all tasks rental, mixed = both.
4
+ -- Null means "no default configured" — the automation leaves job.type alone.
5
+ -- ON DELETE SET NULL so deleting a job_type self-heals the setting.
6
+ alter table public.settings_job
7
+ add column default_job_type_normal_id uuid references public.job_type(id) on delete set null,
8
+ add column default_job_type_rental_id uuid references public.job_type(id) on delete set null,
9
+ add column default_job_type_mixed_id uuid references public.job_type(id) on delete set null;
@@ -0,0 +1,61 @@
1
+ -- Display order for the Jobs Type dropdown and the settings preset list
2
+ -- now lives in rental_task_option.sort_order (fetchTaskOptions orders by
3
+ -- sort_order, then created_at). The app writes it going forward
4
+ -- (RentalsProvider: presets get their index in the company's industry
5
+ -- order, customs get 100); this backfills rows created before those
6
+ -- writes existed, mirroring presetSortOrder in server-safe/rentals.ts:
7
+ -- - custom tasks (label is not null) -> 100
8
+ -- - presets -> index in the company's settings_rental.industry_preset
9
+ -- offered list; 'other'/no settings row -> canonical PRESET_TASK_KEYS
10
+ -- order; a preset not in the applicable list -> 99 (stranded)
11
+ -- Idempotent: recomputes the same values on rerun. Non-destructive.
12
+ update "public"."rental_task_option" as "o"
13
+ set "sort_order" = case
14
+ when "o"."label" is not null then 100
15
+ else case coalesce(
16
+ (select "s"."industry_preset"
17
+ from "public"."settings_rental" as "s"
18
+ where "s"."company_id" = "o"."company_id"),
19
+ 'other')
20
+ when 'dumpster' then case "o"."preset_key"
21
+ when 'drop_off' then 0
22
+ when 'pick_up' then 1
23
+ when 'swap' then 2
24
+ when 'live_load' then 3
25
+ when 'relocate' then 4
26
+ when 'dump_and_return' then 5
27
+ when 'take_to_dump' then 6
28
+ when 'take_to_lot' then 7
29
+ when 'take_to_other' then 8
30
+ else 99 end
31
+ when 'equipment' then case "o"."preset_key"
32
+ when 'drop_off' then 0
33
+ when 'pick_up' then 1
34
+ when 'repair' then 2
35
+ when 'swap' then 3
36
+ when 'take_to_lot' then 4
37
+ when 'take_to_other' then 5
38
+ else 99 end
39
+ when 'portable_toilet' then case "o"."preset_key"
40
+ when 'drop_off' then 0
41
+ when 'pick_up' then 1
42
+ when 'service' then 2
43
+ when 'relocate' then 3
44
+ when 'take_to_lot' then 4
45
+ when 'take_to_other' then 5
46
+ else 99 end
47
+ else case "o"."preset_key"
48
+ when 'drop_off' then 0
49
+ when 'pick_up' then 1
50
+ when 'swap' then 2
51
+ when 'live_load' then 3
52
+ when 'relocate' then 4
53
+ when 'dump_and_return' then 5
54
+ when 'take_to_dump' then 6
55
+ when 'repair' then 7
56
+ when 'service' then 8
57
+ when 'take_to_lot' then 9
58
+ when 'take_to_other' then 10
59
+ else 99 end
60
+ end
61
+ end;
@@ -0,0 +1,9 @@
1
+ alter table "public"."settings_user"
2
+ add column "map_dnd_hint_dismissed" boolean not null default false,
3
+ add column "schedule_dnd_hint_dismissed" boolean not null default false;
4
+
5
+ comment on column "public"."settings_user"."map_dnd_hint_dismissed"
6
+ is 'Tracks whether this user has dismissed the one-time drag-and-drop hint on the web map sidebar.';
7
+
8
+ comment on column "public"."settings_user"."schedule_dnd_hint_dismissed"
9
+ is 'Tracks whether this user has dismissed the one-time drag-and-drop hint on the mobile schedule List View.';
@@ -0,0 +1,59 @@
1
+ -- One-time data repair: email drift between user_role / staging_new_employee
2
+ -- and "user". Root cause: the change-user-auth-email route updated user.email
3
+ -- with the caller's session client, but user_role writes are owner-only under
4
+ -- RLS, so the user_role.email sync silently no-oped for non-owners; a later
5
+ -- reinvite then staged lower(user.email), which no user_role row matched by
6
+ -- email and fetchEmployees threw for the whole company.
7
+ --
8
+ -- Data backfill only — no schema or policy changes. Safe to apply
9
+ -- independently of any web/mobile deploy.
10
+
11
+ -- 1) Where user_role is linked to a user, the user row's email is
12
+ -- authoritative.
13
+ UPDATE public.user_role ur
14
+ SET email = lower(trim(u.email))
15
+ FROM public."user" u
16
+ WHERE ur.user_id = u.id
17
+ AND ur.email IS DISTINCT FROM lower(trim(u.email));
18
+
19
+ -- 2) Backfill user_role.user_id where the signup-time backfill was lost
20
+ -- (create-employee swallows that error), but only when the
21
+ -- (company, normalized email) match is unambiguous on BOTH sides: exactly
22
+ -- one user carries the email, and this is the only user_role row carrying
23
+ -- it. Without the role-side check, several unlinked user_role rows sharing
24
+ -- one email would all be linked to the same user, and readers that join
25
+ -- roles by user_id resolve the duplicates arbitrarily. (A row already
26
+ -- linked to the user also trips the role-side check — step 1 has just set
27
+ -- its email to lower(trim(user.email)) — so this can't add a second row
28
+ -- to an already-linked user either.)
29
+ UPDATE public.user_role ur
30
+ SET user_id = u.id
31
+ FROM public."user" u
32
+ WHERE ur.user_id IS NULL
33
+ AND ur.company_id = u.company_id
34
+ AND lower(trim(ur.email)) = lower(trim(u.email))
35
+ AND NOT EXISTS (
36
+ SELECT 1
37
+ FROM public."user" u2
38
+ WHERE u2.company_id = ur.company_id
39
+ AND lower(trim(u2.email)) = lower(trim(ur.email))
40
+ AND u2.id <> u.id
41
+ )
42
+ AND NOT EXISTS (
43
+ SELECT 1
44
+ FROM public.user_role ur2
45
+ WHERE ur2.company_id = ur.company_id
46
+ AND lower(trim(ur2.email)) = lower(trim(ur.email))
47
+ AND ur2.id <> ur.id
48
+ );
49
+
50
+ -- 3) Normalize remaining casing/whitespace. New staging rows are already
51
+ -- lowercased on insert; this catches legacy rows. "user".email is left
52
+ -- untouched (user-visible casing; readers are case-insensitive).
53
+ UPDATE public.user_role
54
+ SET email = lower(trim(email))
55
+ WHERE email <> lower(trim(email));
56
+
57
+ UPDATE public.staging_new_employee
58
+ SET email = lower(trim(email))
59
+ WHERE email <> lower(trim(email));
@@ -0,0 +1,30 @@
1
+ -- Keep user_role.email in sync whenever user.email changes, so email drift
2
+ -- between the two tables can't be recreated by any write path (app routes,
3
+ -- core updateProfile, manual edits).
4
+ --
5
+ -- SECURITY DEFINER is required: "user" writes are owner-or-self under RLS but
6
+ -- user_role writes are owner-only, so a non-owner updating their own
7
+ -- user.email would otherwise have this trigger's user_role write blocked.
8
+ -- Rows with user_id IS NULL are unreachable here by design — they are
9
+ -- backfilled by the repair migration and by the change-user-auth-email route.
10
+
11
+ CREATE OR REPLACE FUNCTION public.sync_user_role_email()
12
+ RETURNS trigger
13
+ LANGUAGE plpgsql
14
+ SECURITY DEFINER
15
+ SET search_path = public
16
+ AS $$
17
+ BEGIN
18
+ IF NEW.email IS DISTINCT FROM OLD.email THEN
19
+ UPDATE public.user_role
20
+ SET email = lower(trim(NEW.email))
21
+ WHERE user_id = NEW.id;
22
+ END IF;
23
+ RETURN NEW;
24
+ END;
25
+ $$;
26
+
27
+ CREATE TRIGGER trg_sync_user_role_email
28
+ AFTER UPDATE OF email ON public."user"
29
+ FOR EACH ROW
30
+ EXECUTE FUNCTION public.sync_user_role_email();
@@ -0,0 +1,5 @@
1
+ alter table "public"."event"
2
+ add column "list_sort_key" numeric null;
3
+
4
+ comment on column "public"."event"."list_sort_key"
5
+ is 'Manual position of an all-day (no-time) event in the schedule list ordering, sharing the day axis with job_schedule.list_sort_key. NULL = never manually placed (all-day events default to their 00:01 sentinel position). Timed events ignore it and anchor at their start time.';
@@ -0,0 +1,6 @@
1
+ -- Additive and backward-compatible: existing rows default to false (no auto-billing).
2
+ alter table public.client
3
+ add column if not exists auto_bill_on_completion boolean not null default false;
4
+
5
+ comment on column public.client.auto_bill_on_completion is
6
+ 'Bill this client automatically when their job is marked Completed (the transition that makes every schedule day Completed). Charges the client''s default Stripe card (invoice_settings.default_payment_method on the connected account) after an in-app confirmation of the job items and total. Only effective when cards are on file; card truth lives in Stripe, not here.';
@@ -0,0 +1,99 @@
1
+ -- Automation rules: user-authored "trigger + timing + action + conditions"
2
+ -- records (Automations settings page, web + mobile). The engine lives in
3
+ -- autopilot-web (/api/automations-cron): Phase A fans automation_event rows
4
+ -- out against enabled rules, Phase B scans date-anchored triggers live, and
5
+ -- Phase C executes claimed automation_run rows.
6
+ --
7
+ -- Column vs jsonb split: trigger_type / action_type / is_enabled are real
8
+ -- columns because the engine filters and indexes on them and the CHECKs give
9
+ -- DB-level integrity. Per-type parameters (trigger_config, action_config)
10
+ -- and the flat AND condition list are jsonb: heterogeneous across types,
11
+ -- interpreted only in TS, and evolvable without migrations. The TS
12
+ -- validators in autopilot-core src/server-safe/automations.ts are the schema
13
+ -- authority for the jsonb shapes.
14
+
15
+ create table if not exists "public"."automation_rule" (
16
+ "id" uuid default gen_random_uuid() not null,
17
+ "created_at" timestamp with time zone default now() not null,
18
+ "company_id" uuid not null,
19
+ "created_by" uuid,
20
+ "name" text not null,
21
+ "is_enabled" boolean default true not null,
22
+ -- keep in sync with AUTOMATION_TRIGGER_TYPES in
23
+ -- autopilot-core src/server-safe/automations.ts
24
+ "trigger_type" text not null,
25
+ -- shape depends on trigger_type; see TriggerConfig in automations.ts.
26
+ -- Timing lives here too (direction / offset_value / offset_unit /
27
+ -- send_at) because valid timing modes depend on the trigger.
28
+ "trigger_config" jsonb default '{}'::jsonb not null,
29
+ -- flat AND list: [{"field":"job_type"|"client_tag"|"job_source",
30
+ -- "op":"is"|"is_not","value":"<name string>"}]
31
+ "conditions" jsonb default '[]'::jsonb not null,
32
+ -- keep in sync with AUTOMATION_ACTION_TYPES in automations.ts
33
+ "action_type" text not null,
34
+ -- shape depends on action_type; see ActionConfig in automations.ts
35
+ "action_config" jsonb default '{}'::jsonb not null,
36
+ "message_template" text default '' not null,
37
+ -- messages actually sent (not attempts); incremented by the engine via
38
+ -- increment_automation_rule_counters
39
+ "times_triggered" integer default 0 not null,
40
+ -- informational: which preset prefilled this rule, for adoption analytics
41
+ "preset_key" text
42
+ );
43
+
44
+ alter table only "public"."automation_rule"
45
+ add constraint "automation_rule_pkey" primary key ("id");
46
+
47
+ alter table only "public"."automation_rule"
48
+ add constraint "automation_rule_company_id_fkey"
49
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;
50
+
51
+ alter table only "public"."automation_rule"
52
+ add constraint "automation_rule_created_by_fkey"
53
+ foreign key ("created_by") references "public"."user"("id") on delete set null;
54
+
55
+ alter table only "public"."automation_rule"
56
+ add constraint "automation_rule_trigger_type_check"
57
+ check ("trigger_type" in (
58
+ 'job_created', 'job_status_changed', 'schedule_time_relative',
59
+ 'rental_date_relative', 'rental_task_completed',
60
+ 'estimate_sent', 'estimate_approved', 'estimate_declined',
61
+ 'estimate_pending',
62
+ 'lead_created',
63
+ 'booking_request_received', 'booking_confirmed', 'booking_declined'));
64
+
65
+ alter table only "public"."automation_rule"
66
+ add constraint "automation_rule_action_type_check"
67
+ check ("action_type" in ('sms_client', 'email_client', 'notify_team'));
68
+
69
+ create index if not exists "automation_rule_company_idx"
70
+ on "public"."automation_rule" ("company_id");
71
+
72
+ -- Phase B scans enabled anchor-type rules across all companies each tick
73
+ create index if not exists "automation_rule_enabled_type_idx"
74
+ on "public"."automation_rule" ("trigger_type")
75
+ where "is_enabled";
76
+
77
+ -- Batched counter bump for sent runs. An RPC because supabase-js cannot
78
+ -- express `set x = x + n`. Duplicate ids in the array count multiple times
79
+ -- (one increment per sent run).
80
+ create or replace function "public"."increment_automation_rule_counters"("rule_ids" uuid[])
81
+ returns void
82
+ language "sql"
83
+ security definer
84
+ set search_path = 'public'
85
+ as $$
86
+ update automation_rule r
87
+ set times_triggered = times_triggered + counts.n
88
+ from (
89
+ select id, count(*)::integer as n
90
+ from unnest(rule_ids) as id
91
+ group by id
92
+ ) as counts
93
+ where r.id = counts.id;
94
+ $$;
95
+
96
+ revoke all on function "public"."increment_automation_rule_counters"(uuid[]) from public;
97
+ revoke all on function "public"."increment_automation_rule_counters"(uuid[]) from "anon";
98
+ revoke all on function "public"."increment_automation_rule_counters"(uuid[]) from "authenticated";
99
+ grant execute on function "public"."increment_automation_rule_counters"(uuid[]) to "service_role";
@@ -0,0 +1,19 @@
1
+ -- RLS for automation_rule.
2
+ --
3
+ -- Affected tables: automation_rule.
4
+ --
5
+ -- Standard house policy: any authenticated staff member of the owning
6
+ -- company can CRUD (rules are managed from the Automations settings page on
7
+ -- web and mobile; the page itself is gated by manage_company_settings). End
8
+ -- customers never touch this table — no anon policies or grants.
9
+
10
+ alter table "public"."automation_rule" enable row level security;
11
+
12
+ grant all on table "public"."automation_rule" to "authenticated";
13
+ grant all on table "public"."automation_rule" to "service_role";
14
+
15
+ create policy "Anyone with matching company_id can CRUD"
16
+ on "public"."automation_rule"
17
+ to "authenticated"
18
+ using (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"))
19
+ with check (((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"));