Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
9b0097a
feat(fibrazo): fork setup, external-request fixes, and channel-based …
FdR-23 Aug 21, 2026
6715e67
Merge pull request #1 from FdR-23/feat/fibrazo-fork-setup
FdR-23 Aug 21, 2026
92980da
Merge remote-tracking branch 'upstream/main'
FdR-23 Aug 21, 2026
5550e3f
fix(fibrazo): sourceId identifier support, enterprise license bypass,…
FdR-23 Aug 24, 2026
0722c7b
Merge pull request #2 from FdR-23/fix/fibrazo-sourceid-license
FdR-23 Aug 24, 2026
d82e723
feat(workspace-members): allow deleting owners and editing member rol…
FdR-23 Aug 24, 2026
277e931
Merge pull request #3 from FdR-23/feat/workspace-members-role
FdR-23 Aug 24, 2026
92683be
fix(workspace): restrict workspace creation to platform admins
FdR-23 Aug 24, 2026
d999cae
fix(workspace-members): import member service and type member role
FdR-23 Aug 24, 2026
c971c37
style(lint): add role keys to all locales and fix lint errors
FdR-23 Aug 24, 2026
23a7b07
test(license): align startup and entitlements tests with degraded for…
FdR-23 Aug 24, 2026
b763c03
Merge pull request #4 from FdR-23/fix/workspace-create-gate
FdR-23 Aug 24, 2026
54c395c
Merge branch 'ChatbotXIO:main' into main
FdR-23 Aug 24, 2026
0b86044
docs(versiones): add per-PR plan and summary records
FdR-23 Aug 25, 2026
3e284f1
Merge pull request #5 from FdR-23/docs/versiones
FdR-23 Aug 25, 2026
debeafa
fix(workspace): hide add workspace in switcher for non-platform admins
FdR-23 Aug 25, 2026
d75741d
docs(versiones): add PR5 workspace switcher gate record
FdR-23 Aug 25, 2026
c0fc300
docs(versiones): rename PR5 to PR6 for workspace switcher gate
FdR-23 Aug 25, 2026
907df00
Merge pull request #6 from FdR-23/fix/workspace-switcher-gate
FdR-23 Aug 25, 2026
445dc9f
docs(fork): add setup and demo runbooks for fibrazo fork
FdR-23 Aug 27, 2026
d2314c3
fix(entitlements): unlock enterprise features on self-hosted fork wit…
FdR-23 Aug 27, 2026
39b88ab
Merge remote-tracking branch 'fibrazo/main' into feat/fibrazo-merge
FdR-23 Aug 27, 2026
ed65f8a
test(builder): align channel and workspace-member tests with fork beh…
FdR-23 Aug 27, 2026
52f3f31
style(builder): format hoisted mock block in handoff test
FdR-23 Aug 27, 2026
eaea9c0
test(worker): mock stripEmptyAndUnresolvedJsonValues in external-requ…
FdR-23 Aug 27, 2026
71f4261
Merge pull request #1 from Fibrazo-SAS/feat/fibrazo-merge
FedeR-42mate Aug 27, 2026
7f20da8
chore(docker): split compose into base + apps + dev/prod overrides
FdR-23 Sep 1, 2026
73324ff
docs(infra): add dev/prod server requirements for AWS
FdR-23 Sep 1, 2026
d69c6d8
fix(builder): cap build heap and dev cache to avoid OOM on low-RAM ma…
FdR-23 Sep 1, 2026
e4b7532
chore: ignore .cursor/mcp.json (machine-specific codegraph path)
FdR-23 Sep 1, 2026
6680b58
style(builder): fix ultracite formatting in build scripts
FdR-23 Sep 1, 2026
a842484
deploy-devel
FdR-23 Sep 2, 2026
2973489
Merge pull request #2 from Fibrazo-SAS/chore/infra-compose-dev-prod
FedeR-42mate Sep 2, 2026
49a5fcf
Initial commit
FedeR-42mate Sep 2, 2026
ea14ee4
chore: merge initial commit from private repo (keep project README)
FdR-23 Sep 2, 2026
96b7f4e
merge: sync with upstream/main (resolve builder package.json conflict)
FdR-23 Sep 2, 2026
6f7d16b
Merge pull request #4 from Fibrazo-SAS/chore/sync-upstream-main
FedeR-42mate Sep 2, 2026
3409297
add-raul - se agrega el flujo sdd y el agente raul
matiasmanuelparra Sep 2, 2026
5fb01b0
Merge pull request #4 from Fibrazo-SAS/feat/sdd-raul
matiasmanuelparra Sep 3, 2026
5e3ada4
ci(deploy): add devel deploy workflow and script
FdR-23 Sep 3, 2026
0f249e4
Merge pull request #5 from Fibrazo-SAS/chore/deploy-devel-workflow
FedeR-42mate Sep 3, 2026
c16b798
fix deploy
FdR-23 Sep 3, 2026
870c5dd
ci(deploy): recreate sysbrazo-style deploy workflows and scripts
FdR-23 Sep 3, 2026
2f38917
fixes
FdR-23 Sep 3, 2026
e6b7294
Fix
FdR-23 Sep 3, 2026
b3e83d9
fix
FdR-23 Sep 3, 2026
337db8c
Merge pull request #6 from Fibrazo-SAS/chore/deploy-workflows-sysbrazo
FedeR-42mate Sep 3, 2026
97e54fd
ci: fix runner label to chatbotx and disable unused release workflow
FdR-23 Sep 3, 2026
0a461d5
ci: cancel stale runs in deploy concurrency group
FdR-23 Sep 3, 2026
633a4f4
ci: use new concurrency group to bypass stale queued runs
FdR-23 Sep 3, 2026
cecc7f5
ci: revert concurrency group to original names
FdR-23 Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ NEXT_PUBLIC_BUILDER_URL=http://localhost:3123
SCHEDULER_BUCKET_RANGE=0-255

# Increase Node.js heap for large workloads. Set per-process, not globally.
# NODE_OPTIONS="--max_old_space_size=4096"
# Increase Node.js heap for large workloads. Set per-process, not globally.
# NODE_OPTIONS="--max-old-space-size=8192"

# ─────────────────────────────────────────────
# Logging
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ jobs:
name: Types
runs-on: ubuntu-latest
timeout-minutes: 20
env:
NODE_OPTIONS: --max-old-space-size=4096
steps:
- name: Checkout repository
uses: actions/checkout@v7
Expand All @@ -55,12 +57,14 @@ jobs:
# Sets TURBO_API/TURBO_TOKEN/TURBO_TEAM for the steps below.
- name: Set up Turbo cache
uses: rharkor/caching-for-turbo@v2.5.1
with:
server-port: 0

# 56 independent `tsc --noEmit` runs (no `composite`/`references` in this
# repo, so turbo.json declares no `dependsOn` — see the comment there).
# Each is single-threaded, so concurrency can fill all 4 vCPUs.
- name: Type-check
run: pnpm turbo run check-types --concurrency=4
run: pnpm turbo run check-types --concurrency=1

lint:
name: Lint
Expand All @@ -84,6 +88,8 @@ jobs:

- name: Set up Turbo cache
uses: rharkor/caching-for-turbo@v2.5.1
with:
server-port: 0

# Root `pnpm lint` runs cheapest-first: check:agent-instructions, then
# `turbo run lint` (apps/builder's i18n key-parity check plus 57
Expand Down Expand Up @@ -115,6 +121,8 @@ jobs:

- name: Set up Turbo cache
uses: rharkor/caching-for-turbo@v2.5.1
with:
server-port: 0

# Turbo does not parallelize *within* a suite, so wall clock is bounded
# by the slowest single suite — builder (248 files), which is ~40% of
Expand Down
152 changes: 152 additions & 0 deletions .github/workflows/deploy-devel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
# Deploy devel — ChatbotX (patrón sysbrazo)
#
# Corre en push a main (después de merge de PR).
# Enforce PR-only merges via branch protection on main (no direct pushes).
#
# workflow_dispatch (manual):
# maintenance_on — maintenance sin deploy
# maintenance_off — restaura tráfico si deploy/smoke falló
#
# Los scripts viven en el repo (scripts/deployment/*.sh) y corren desde el
# runner, igual que sysbrazo (deploy-v3.sh). Las credenciales de AWS las
# tiene la instancia EC2 (IAM role). El runner se autentica con SSH_PRIVATE_KEY.

name: Deploy Devel

permissions:
contents: read

on:
push:
branches:
- main
workflow_dispatch:
inputs:
job:
description: Manual maintenance action
type: choice
required: true
options:
- maintenance_on
- maintenance_off

concurrency:
group: chatbotx-devel
cancel-in-progress: true

env:
ENV: devel
WORKSPACE: /var/www/chatbotx-dev
SERVER: ip-10-6-3-11.us-west-2.compute.internal
SSH_USER: sysbrazo
SECRET_NAME: dev/chatbotx/all-secret
COMPOSE_FILES: "-f docker-compose.yml -f docker-compose.apps.yml -f docker-compose.dev.yml"
HUSKY: "0"

jobs:
maintenance_on:
name: Maintenance on
if: |
always() &&
(
(github.event_name == 'push') ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'maintenance_on')
)
runs-on: [self-hosted, chatbotx]
timeout-minutes: 15
environment:
name: devel
url: https://dev-chatbotx.fibrazo.com.co/
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Init SSH
shell: bash
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

- name: Load SSH key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Enable maintenance
run: |
chmod +x ./scripts/deployment/maintenance-on.sh
./scripts/deployment/maintenance-on.sh

deploy:
name: Deploy + smoke
needs: [maintenance_on]
if: |
always() &&
github.event_name == 'push' &&
needs.maintenance_on.result == 'success'
runs-on: [self-hosted, chatbotx]
timeout-minutes: 60
environment:
name: devel
url: https://dev-chatbotx.fibrazo.com.co/
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Init SSH
shell: bash
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

- name: Load SSH key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Deploy
run: |
chmod +x ./scripts/deployment/deploy.sh
./scripts/deployment/deploy.sh

- name: Smoke tests
run: |
chmod +x ./scripts/deployment/run-smoke-tests.sh
./scripts/deployment/run-smoke-tests.sh

maintenance_off:
name: Maintenance off
needs: [deploy]
if: |
always() &&
(
(github.event_name == 'push' && needs.deploy.result == 'success') ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'maintenance_off')
)
runs-on: [self-hosted, chatbotx]
timeout-minutes: 15
environment:
name: devel
url: https://dev-chatbotx.fibrazo.com.co/
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Init SSH
shell: bash
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

- name: Load SSH key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Disable maintenance
run: |
chmod +x ./scripts/deployment/maintenance-off.sh
./scripts/deployment/maintenance-off.sh
158 changes: 158 additions & 0 deletions .github/workflows/deploy-production.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# Deploy production — ChatbotX (patrón sysbrazo)
#
# Corre en push de tags (igual que sysbrazo: crear tags desde main, ej.:
# git tag 4.1.19 && git push origin 4.1.19
#
# workflow_dispatch (manual):
# maintenance_on — maintenance sin deploy
# maintenance_off — restaura tráfico si deploy/smoke falló
#
# Los scripts viven en el repo (scripts/deployment/*.sh) y corren desde el
# runner, igual que sysbrazo (deploy-v3.sh). Las credenciales de AWS las
# tiene la instancia EC2 (IAM role). El runner se autentica con SSH_PRIVATE_KEY.
# Requiere GitHub environment `production` con SSH_PRIVATE_KEY secret.

name: Deploy Production

permissions:
contents: read

on:
push:
tags:
- "*"
workflow_dispatch:
inputs:
job:
description: Manual maintenance action
type: choice
required: true
options:
- maintenance_on
- maintenance_off

concurrency:
group: chatbotx-production
cancel-in-progress: true

env:
ENV: production
WORKSPACE: /var/www/chatbotx-prod
SERVER: <SERVER-PROD-PENDIENTE>
SSH_USER: sysbrazo
SECRET_NAME: prod/chatbotx/all-secret
COMPOSE_FILES: "-f docker-compose.yml -f docker-compose.apps.yml -f docker-compose.prod.yml"
HUSKY: "0"

jobs:
maintenance_on:
name: Maintenance on
if: |
always() &&
(
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'maintenance_on')
)
runs-on: [self-hosted, chatbotx]
timeout-minutes: 15
environment:
name: production
url: https://chatbotx.fibrazo.com.co/
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && 'main' || github.ref }}

- name: Init SSH
shell: bash
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

- name: Load SSH key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Enable maintenance
run: |
chmod +x ./scripts/deployment/maintenance-on.sh
./scripts/deployment/maintenance-on.sh

deploy:
name: Deploy + smoke
needs: [maintenance_on]
if: |
always() &&
github.event_name == 'push' &&
startsWith(github.ref, 'refs/tags/') &&
needs.maintenance_on.result == 'success'
runs-on: [self-hosted, chatbotx]
timeout-minutes: 60
environment:
name: production
url: https://chatbotx.fibrazo.com.co/
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Init SSH
shell: bash
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

- name: Load SSH key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Deploy
run: |
chmod +x ./scripts/deployment/deploy.sh
./scripts/deployment/deploy.sh

- name: Smoke tests
run: |
chmod +x ./scripts/deployment/run-smoke-tests.sh
./scripts/deployment/run-smoke-tests.sh

maintenance_off:
name: Maintenance off
needs: [deploy]
if: |
always() &&
(
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && needs.deploy.result == 'success') ||
(github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'maintenance_off')
)
runs-on: [self-hosted, chatbotx]
timeout-minutes: 15
environment:
name: production
url: https://chatbotx.fibrazo.com.co/
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && 'main' || github.ref }}

- name: Init SSH
shell: bash
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

- name: Load SSH key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Disable maintenance
run: |
chmod +x ./scripts/deployment/maintenance-off.sh
./scripts/deployment/maintenance-off.sh
8 changes: 5 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name: Build and Push Docker Images

on:
push:
branches: [main]
tags: ["v*"]
# Disabled: this workflow is not used for ChatbotX deploys (we build on the
# server via docker compose, not via ghcr.io images). Kept for reference;
# can be re-enabled by restoring the push triggers.
workflow_dispatch:
inputs:
environment:
Expand Down Expand Up @@ -58,6 +58,8 @@ jobs:

- name: Set up Turbo cache
uses: rharkor/caching-for-turbo@v2.5.1
with:
server-port: 0

# `pnpm lint` covers everything, cheapest-first: check:agent-instructions,
# `turbo run lint` for apps/builder's i18n check, then repo-wide Biome
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,6 @@ CLAUDE.md

.pnpm-store/
.plans/

# Local editor config with machine-specific paths (codegraph --path)
.cursor/mcp.json
Loading