Skip to content

Bring the internal build into OSS: Workflow Agents, Chat Analyzer, CAPI + CLO, Social - #3

Merged
sathyaprakash000 merged 1 commit into
mainfrom
claude/port-private-20261018
Oct 18, 2026
Merged

sathyaprakash000 merged 1 commit into
mainfrom
claude/port-private-20261018

Conversation

@sathyaprakash000

Copy link
Copy Markdown
Contributor

Ports two months of the internal ForgeGrowth build into the public repo. The two repositories share no history, so this is a file-by-file port: a 3-way merge against the last common state (internal f1167d8, 2026-08-12) with every OSS-only change kept.

This is a major release. It removes three features and their data. See Upgrade notes in CHANGELOG.md.

Added

  • Workflow Agents: scheduled or triggered agents across leads, chats and sales, with an approvals queue and worklists
  • Chat Analyzer: summaries, intent, suggested stage and follow-ups, covering voice notes, images and documents
  • Follow-ups, a payments dashboard, refunds, payment status on leads
  • Conversions API + Lead Optimisation (CLO), previously shipped as Coming Soon. Off by default.
  • Social: Instagram, Facebook, Threads, YouTube and LinkedIn. Off until SOCIAL_ENCRYPTION_KEY is set.
  • Automation and agent templates, dedicated MCP reporting tools, a reorganised MCP Tools screen

Removed (with data)

  • Lead Forms, Projects and custom domains (migrations 131, 134), plus install.sh --proxy-routes and Caddy's on-demand TLS

Left out on purpose (specific to one operator)

  • Claude Code provider and console; Links and Campaign ROI
  • Landing-page integration and Communities: kept dormant (no UI, no timers) because the automation engine and Chat Analyzer call into them
  • Internal scripts and docs
  • Real phone numbers, Meta IDs, hostnames and seeded group IDs, all replaced with placeholders

Fixed along the way

  • Images build from the lock files. A lockless npm install fails on main today (reading 'edgesOut'), so source installs and image builds are currently broken.
  • The webhook now uses the tested services/metaPayload.js parser instead of a drifted inline copy
  • The Social database pool reads the same POSTGRES_* settings as the app
  • Lead Optimisation → Stages no longer crashes the page

Verified

  • All 132 migrations apply twice on a fresh Postgres
  • Backend: 583/584 pass with REQUIRE_DB=1 (one ffmpeg skip); lint has zero problems
  • Frontend: lint clean, 176 unit tests pass, build succeeds
  • A from-source install.sh run boots, admin login works, and every feature endpoint returns 200

🤖 Generated with Claude Code

…PI + CLO, Social

Ports two months of the private ForgeGrowth tree (base f1167d8 -> a4d327d) into the
public repo, file by file — the two repositories share no history.

Added: Workflow Agents, Chat Analyzer, follow-ups, payments dashboard and refunds,
Conversions API + Lead Optimisation (previously Coming Soon), the Social section,
automation and agent templates, dedicated MCP reporting tools.

Removed, with their data: Lead Forms, Projects and custom domains (migrations 131 and
134), and with them install.sh --proxy-routes and caddy's on-demand TLS.

Left out as specific to one operator: the Claude Code provider and console, the
landing-page integrations (kept dormant behind LANDING_SOURCES), Links, Campaign ROI,
Communities (dormant; needs Evolution API) and every internal script and document.
Real phone numbers, Meta ids, hostnames and seeded group ids are replaced with
placeholders.

Also fixed on the way: images now build from the lock files (a lockless npm install
had stopped resolving), the webhook parses through the tested metaPayload.js, the
Social pool reads the same POSTGRES_* settings as the app, and Lead Optimisation's
Stages tab no longer crashes.

Verified: 132 migrations apply twice on a fresh database; backend 583/584 with
REQUIRE_DB=1 (ffmpeg skip); frontend lint, 176 unit tests and build; a from-source
install.sh run boots with every feature endpoint answering 200.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
);
const out = [];
for (const a of accounts) {
let datasetId = null, status = 'missing', lastError = null;
// (own comments); decode is a no-op on already-plain text. Decode &amp; LAST to
// avoid double-decoding sequences like &amp;#39;.
function decodeHtml(s) {
if (!s) return s || null;

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@sathyaprakash000
sathyaprakash000 merged commit e0d9b31 into main Oct 18, 2026
8 of 9 checks passed
@sathyaprakash000
sathyaprakash000 deleted the claude/port-private-20261018 branch October 18, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants