chore(brand): rename the product to ReplyPier

The upstream project name is gone from code, assets, docs and build
output: brand strings, domains (replypier.site and its app/api/docs/help
subdomains), env prefixes, image and network names, the widget's public
JS API (window.ReplyPier, replypierId/BaseUrl/Config/Token), CSS tokens
(--rp-*), file and directory names, and the WordPress plugin package.

- widget loader is now webclient/replypier.min.js; both bundles rebuilt
  from source (backend/assets/widget.{js,css}, frontend/public/webclient)
- NOTICE, llms.txt, CONTRIBUTING, HELP_CENTER_INFRA and config.dev.js
  rewritten rather than string-swapped; the demo config no longer ships
  the previous vendor's Firebase/Razorpay/Google keys
- new migration replypier_ai_model_001 adds REPLYPIER to the managed
  AIModelType and rewrites pre-rename rows
- local compose project, database, role and volume renamed; LOCAL_DEPLOY
  documents carrying the old local data over
This commit is contained in:
WangShen007 committed 2026-10-26 00:51:03 +08:00
1 parent ff0a09f0e5
commit 54b949b392
1156 files changed
+7292 -7147

No files matched your search

+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -454,7 +454,7 @@ def _store_customer_message(db: Session, inbound: InboundMessage, session_record
async def _within_message_limit(db: Session, org_id: str, ai_config) -> bool:
"""Enterprise subscription limit; permissive on any failure so the
community edition and enterprise errors never block conversations."""
if not (HAS_ENTERPRISE and ai_config.model_type == AIModelType.CHATTERMATE):
if not (HAS_ENTERPRISE and ai_config.model_type == AIModelType.REPLYPIER):
return True
try:
return await check_message_limit(db, org_id, None, None)
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -68,7 +68,7 @@ async def process_status_event(account_id: UUID, event: StatusEvent) -> None:
if account is None:
return
# Announced before matching: extensions count every receipt, including
# ones for messages ChatterMate never stored.
# ones for messages ReplyPier never stored.
await emit_channel_event(ChannelEvent(
kind=EventKind.STATUS,
event_id=status_event_id(account.id, event.external_message_id, event.status.value),
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+4 -4
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@ limitations under the License.
Custom-domain verification for the public help center.
The customer proves control of the domain with a TXT record
(_chattermate.<domain> = cm-verify=<token>) and routes traffic with a CNAME
(_replypier.<domain> = rp-verify=<token>) and routes traffic with a CNAME
to HELP_CENTER_CNAME_TARGET (A/AAAA records matching HELP_CENTER_TARGET_IPS
are accepted for providers that flatten CNAMEs). Both must pass before the
host dispatcher will ever serve the domain. SSL turns active once an HTTPS
@@ -38,7 +38,7 @@ logger = get_logger(__name__)
DNS_LIFETIME_SECONDS = 5.0
SSL_PROBE_TIMEOUT_SECONDS = 10.0
TXT_RECORD_PREFIX = "_chattermate"
TXT_RECORD_PREFIX = "_replypier"
# Public resolvers for verification lookups. The container's own resolver is
# Docker's embedded DNS (127.0.0.11) for service discovery — it negatively
# caches names that didn't exist when first queried (so a TXT added *after* the
@@ -60,7 +60,7 @@ def txt_record_host(domain: str) -> str:
def expected_txt_value(row: HelpCenterSettings) -> str:
return f"cm-verify={row.domain_verification_token}"
return f"rp-verify={row.domain_verification_token}"
def _resolver():
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -93,7 +93,7 @@ _GENERIC_SECTIONS = frozenset({
# Internal scheme marking images collected during conversion, replaced with the
# re-hosted URL afterwards (conversion is sync; storage is async). The trailing
# ".img" delimits the index so "…//1.img" is never a prefix of "…//10.img".
_IMG_PLACEHOLDER = "cm-pending-image://{index}.img"
_IMG_PLACEHOLDER = "rp-pending-image://{index}.img"
@dataclass
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -55,7 +55,7 @@ _BLOCK_TAGS = (
)
_BOILERPLATE_TAGS = ("script", "style", "noscript", "nav", "footer", "header", "form")
_FETCH_HEADERS = {"User-Agent": "ChatterMate-FAQ-Import/1.0 (+https://chattermate.chat)"}
_FETCH_HEADERS = {"User-Agent": "ReplyPier-FAQ-Import/1.0 (+https://replypier.site)"}
def _soup_to_text(soup: BeautifulSoup) -> str:
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+3 -3
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
WhatsApp numbers and Messenger Pages that live in the customer's own Meta
app (connected with manual credentials) rather than in ChatterMate's.
app (connected with manual credentials) rather than in ReplyPier's.
Meta signs their webhooks with the customer's app secret, which the shared
/webhooks/meta endpoint can't check. So each such account gets its own
@@ -95,7 +95,7 @@ async def resolve_own_app(access_token: str, entered_secret: Optional[str],
"""The customer's own app behind this token, proven with its secret —
the one entered, or else the one kept from the last connect (checked
again: the new token may be from another app). None without a secret, or
for ChatterMate's own app, whose webhooks the shared address already gets.
for ReplyPier's own app, whose webhooks the shared address already gets.
Raises AppSecretMismatch or AppCheckUnavailable."""
secret = entered_secret or (own_app_secret(previous) if previous is not None else None)
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+8 -8
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -1144,7 +1144,7 @@ class ShopifyService:
async def inject_widget_script(self, shop: ShopifyShop, script_tag: str) -> None:
"""
Creates a Shopify Script Tag to inject the ChatterMate widget using the scriptTagCreate GraphQL mutation.
Creates a Shopify Script Tag to inject the ReplyPier widget using the scriptTagCreate GraphQL mutation.
Args:
shop: The ShopifyShop object.
@@ -1158,12 +1158,12 @@ class ShopifyService:
# 1. Extract the script URL from the script_tag string
# The script_tag is in format:
# <script>/* ChatterMate Start */window.chattermateId='widget_id';</script><script src="script_url" async defer></script>
# <script>/* ReplyPier Start */window.replypierId='widget_id';</script><script src="script_url" async defer></script>
# We need to extract the script_url
import re
script_url_match = re.search(r'<script src=["\']([^"\']+)["\']', script_tag)
widget_id_match = re.search(r"window\.chattermateId=\'([^\']+)\'", script_tag)
widget_id_match = re.search(r"window\.replypierId=\'([^\']+)\'", script_tag)
if not script_url_match:
raise Exception("Could not extract script URL from the provided script tag.")
@@ -1193,7 +1193,7 @@ class ShopifyService:
script_edges = script_response["data"]["scriptTags"]["edges"]
for edge in script_edges:
if edge["node"]["src"] == script_url:
logger.info(f"ChatterMate script already installed at {script_url}. Skipping injection.")
logger.info(f"ReplyPier script already installed at {script_url}. Skipping injection.")
return
# 3. Create the script tag using scriptTagCreate mutation
@@ -1243,7 +1243,7 @@ class ShopifyService:
async def remove_widget_script(self, shop: ShopifyShop, widget_id: str) -> None:
"""
Removes the ChatterMate widget script tag using scriptTagDelete GraphQL mutation.
Removes the ReplyPier widget script tag using scriptTagDelete GraphQL mutation.
Args:
shop: The ShopifyShop object.
@@ -1280,11 +1280,11 @@ class ShopifyService:
src = edge["node"]["src"]
# Match any scripts from your domain and potentially containing the widget ID
# Adjust this condition based on your script URL structure
if "chattermate" in src.lower():
if "replypier" in src.lower():
widget_scripts.append(edge["node"]["id"])
if not widget_scripts:
logger.info(f"No ChatterMate script tags found for shop {shop.shop_domain}. Nothing to remove.")
logger.info(f"No ReplyPier script tags found for shop {shop.shop_domain}. Nothing to remove.")
return
# 3. Delete each matching script tag
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -151,7 +151,7 @@ def _dashboard_url() -> str:
async def publish_agent_home(account_id: UUID, user_id: str) -> None:
"""Publish the Home tab: what ChatterMate does, the agent connected to this
"""Publish the Home tab: what ReplyPier does, the agent connected to this
workspace, how to use it, and a link to the dashboard."""
if not user_id:
return
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Registering ChatterMate's webhook with a Telegram bot, with the updates it
Registering ReplyPier's webhook with a Telegram bot, with the updates it
must receive. Done on connect, and again for an agent's bots when its reply
buttons are turned on: a bot connected before buttons existed was registered
without button taps, and Telegram keeps a bot's last registration.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -52,7 +52,7 @@ _TICKET_MSGID_RE = re.compile(r"ticket-([0-9a-f]{32})(?:\.[^@\s>]+)?@", re.I)
_ROOT_SUFFIX = "root"
_SUBJECT_TOKEN_RE = re.compile(rf"\[{TICKET_NUMBER_PREFIX}-(\d+)\]", re.I)
DEFAULT_MSGID_DOMAIN = "chattermate.chat"
DEFAULT_MSGID_DOMAIN = "replypier.site"
def _msgid_domain(from_email: Optional[str] = None) -> str:
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+3 -3
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@ limitations under the License.
One-way Jira escalation for native tickets: when enabled, tickets at or
above the configured priority get a mirrored Jira issue (external_ref_*).
Native ChatterMate stays the source of truth — nothing syncs back.
Native ReplyPier stays the source of truth — nothing syncs back.
"""
from typing import Optional
@@ -94,7 +94,7 @@ async def maybe_escalate_to_jira(db, service, ticket: Ticket, settings_row) -> b
from app.services.jira import JiraService
description_parts = [
f"Escalated from ChatterMate ticket {ticket.display_number} "
f"Escalated from ReplyPier ticket {ticket.display_number} "
f"(priority: {ticket.priority}, severity: {ticket.severity or 'n/a'}).",
]
if ticket.ai_summary:
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+2 -2
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -34,7 +34,7 @@ logger = get_logger(__name__)
# Model type whose provider costs land on the platform, hence metered. Own-key
# orgs pay their provider directly and are never metered or blocked.
HOSTED_MODEL_TYPE = "CHATTERMATE"
HOSTED_MODEL_TYPE = "REPLYPIER"
def is_hosted_model(db: Session, organization_id: UUID) -> bool:
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+1 -1
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.