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:
1 parent
ff0a09f0e5
commit
54b949b392
1156 files changed
+7292
-7147
No files matched your search
@@ -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.
|
||||
@@ -23,7 +23,7 @@ limitations under the License.
|
||||
# or backend/.env). agno reads these variables before each run report, so
|
||||
# setting them once per process covers every agent, wherever it is built. With
|
||||
# both off, AGNO_API_ENABLED=false also stops agno's other calls to its API
|
||||
# (session logging, playground, evals), which ChatterMate never uses.
|
||||
# (session logging, playground, evals), which ReplyPier never uses.
|
||||
#
|
||||
# Environment variables rather than Agent(telemetry=False) because agents are
|
||||
# built in many places (chat, transfer, tickets, FAQs, summaries, help center)
|
||||
|
||||
@@ -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.
|
||||
@@ -22,7 +22,7 @@ logger = get_logger(__name__)
|
||||
|
||||
# Create FastAPI app instance
|
||||
app = FastAPI(
|
||||
title="ChatterMate API",
|
||||
title="ReplyPier API",
|
||||
description="AI-Powered Customer Support Platform",
|
||||
version="1.0.0"
|
||||
)
|
||||
|
||||
@@ -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.
|
||||
|
||||
+10
-10
@@ -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.
|
||||
@@ -32,16 +32,16 @@ BACKEND_DIR = Path(__file__).resolve().parent.parent.parent
|
||||
ENV_FILE = Path(os.getenv("ENV_FILE") or BACKEND_DIR / ".env")
|
||||
load_dotenv(ENV_FILE)
|
||||
|
||||
DEFAULT_CORS = ["https://chattermate.chat", "http://localhost:5173", "http://localhost:8000"]
|
||||
DEFAULT_CORS = ["https://replypier.site", "http://localhost:5173", "http://localhost:8000"]
|
||||
|
||||
class Settings(BaseSettings):
|
||||
PROJECT_NAME: str = "ChatterMate"
|
||||
PROJECT_NAME: str = "ReplyPier"
|
||||
VERSION: str = "0.1.0"
|
||||
API_V1_STR: str = "/api/v1"
|
||||
|
||||
# Database
|
||||
DATABASE_URL: str = os.getenv(
|
||||
"DATABASE_URL", "postgresql+psycopg://test:test@localhost:5432/chattermate")
|
||||
"DATABASE_URL", "postgresql+psycopg://test:test@localhost:5432/replypier")
|
||||
# Redis
|
||||
REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379/0")
|
||||
REDIS_ENABLED: bool = os.getenv("REDIS_ENABLED", "false").lower() == "true"
|
||||
@@ -85,8 +85,8 @@ class Settings(BaseSettings):
|
||||
SMTP_PORT: int = int(os.getenv("SMTP_PORT", "587"))
|
||||
SMTP_USERNAME: str = os.getenv("SMTP_USERNAME", "your-email@gmail.com")
|
||||
SMTP_PASSWORD: str = os.getenv("SMTP_PASSWORD", "your-password")
|
||||
FROM_EMAIL: str = os.getenv("FROM_EMAIL", "noreply@chattermate.chat")
|
||||
FROM_NAME: str = os.getenv("FROM_NAME", "ChatterMate")
|
||||
FROM_EMAIL: str = os.getenv("FROM_EMAIL", "noreply@replypier.site")
|
||||
FROM_NAME: str = os.getenv("FROM_NAME", "ReplyPier")
|
||||
|
||||
# Shopify
|
||||
SHOPIFY_API_KEY: str = os.getenv("SHOPIFY_API_KEY", "")
|
||||
@@ -152,7 +152,7 @@ class Settings(BaseSettings):
|
||||
|
||||
# S3 Configuration
|
||||
S3_FILE_STORAGE: bool = os.getenv("S3_FILE_STORAGE", "false").lower() == "true"
|
||||
S3_BUCKET: str = os.getenv("S3_BUCKET", "chattermate-uploads")
|
||||
S3_BUCKET: str = os.getenv("S3_BUCKET", "replypier-uploads")
|
||||
S3_REGION: str = os.getenv("S3_REGION", "us-east-1")
|
||||
# None, not "", when unset: boto3 only falls back to its default credential
|
||||
# chain (env → shared config → IAM instance/container role) if these are
|
||||
@@ -256,9 +256,9 @@ class Settings(BaseSettings):
|
||||
# to "path" mode.
|
||||
HELP_CENTER_PUBLIC_MODE: str = os.getenv("HELP_CENTER_PUBLIC_MODE", "path")
|
||||
# Base domain serving {slug}.<base> help centers.
|
||||
HELP_CENTER_BASE_DOMAIN: str = os.getenv("HELP_CENTER_BASE_DOMAIN", "chattermate.help")
|
||||
HELP_CENTER_BASE_DOMAIN: str = os.getenv("HELP_CENTER_BASE_DOMAIN", "help.replypier.site")
|
||||
# CNAME target customers point their custom help-center domain at.
|
||||
HELP_CENTER_CNAME_TARGET: str = os.getenv("HELP_CENTER_CNAME_TARGET", "cname.chattermate.chat")
|
||||
HELP_CENTER_CNAME_TARGET: str = os.getenv("HELP_CENTER_CNAME_TARGET", "cname.replypier.site")
|
||||
# IPs the CNAME target resolves to — accepted when a provider flattens the
|
||||
# CNAME into A/AAAA records (comma-separated).
|
||||
HELP_CENTER_TARGET_IPS: frozenset = frozenset(
|
||||
@@ -273,7 +273,7 @@ class Settings(BaseSettings):
|
||||
# Force a context-window size (tokens) for exotic/self-hosted models; 0 = auto.
|
||||
FAQ_CONTEXT_TOKENS_OVERRIDE: int = int(os.getenv("FAQ_CONTEXT_TOKENS_OVERRIDE", "0"))
|
||||
# Meter FAQ generation credits even for orgs on their own API key
|
||||
# (default: hosted CHATTERMATE model only).
|
||||
# (default: hosted REPLYPIER model only).
|
||||
FAQ_METER_OWN_KEY: bool = os.getenv("FAQ_METER_OWN_KEY", "false").lower() == "true"
|
||||
FAQ_IMPORT_MAX_PAGE_CHARS: int = int(os.getenv("FAQ_IMPORT_MAX_PAGE_CHARS", "100000"))
|
||||
FAQ_IMPORT_FETCH_TIMEOUT: int = int(os.getenv("FAQ_IMPORT_FETCH_TIMEOUT", "30"))
|
||||
|
||||
@@ -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,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,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,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,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,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 @@ LOCAL_FILE_ROUTE = f"{settings.API_V1_STR}/files/local"
|
||||
|
||||
# SECRET_KEY also signs JWTs; the purpose prefix keeps the two from ever
|
||||
# validating each other.
|
||||
_PURPOSE = b"chattermate:local-file-url:v1\n"
|
||||
_PURPOSE = b"replypier:local-file-url:v1\n"
|
||||
|
||||
|
||||
def _signature(key: str, expires: int) -> str:
|
||||
|
||||
@@ -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.
|
||||
@@ -56,7 +56,7 @@ def _m(value: str, label: str) -> CatalogModel:
|
||||
return {"value": value, "label": label}
|
||||
|
||||
|
||||
# Keyed by AIModelType value. CHATTERMATE (managed) is intentionally excluded — it
|
||||
# Keyed by AIModelType value. REPLYPIER (managed) is intentionally excluded — it
|
||||
# is handled as a special case in the setup flow and is not user-selectable here.
|
||||
MODEL_CATALOG: Dict[str, CatalogProvider] = {
|
||||
"OPENAI": {
|
||||
|
||||
@@ -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,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,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,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,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.
|
||||
@@ -100,7 +100,7 @@ def configure_socketio(cors_origins=None):
|
||||
manager = socketio.AsyncRedisManager(
|
||||
redis_url,
|
||||
write_only=False,
|
||||
channel='chattermate',
|
||||
channel='replypier',
|
||||
redis_options=redis_options(redis_url),
|
||||
)
|
||||
manager.set_server(sio)
|
||||
|
||||
Reference in new issue
Block a user