Repository navigation
feat(helpscout): knowledge base connector, auto-registered triggers, 12 more tools, and validation fixes - #9253
Conversation
There was a problem hiding this comment.
All reported issues were addressed across 1 file
Reply with feedback, questions, or to request a fix.
Turn on auto-fix | Re-trigger cubic
[High impact] The PR appears safe to merge; no new actionable issue was confirmed. SummaryAdds a Help Scout knowledge connector, automatic webhook setup, and 12 more tools.
|
|
@greptile |
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
All reported issues were addressed across 63 files
You've manually re-run cubic several times on this PR. Each manual re-review checks the full PR again and counts toward your usage quota. To preserve your usage limits, we recommend letting cubic automatically review new commits.
Turn on auto-fix | Re-trigger cubic
6e44dcf to
b0f4919
Compare
|
@greptile |
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
No issues found across 63 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
You've manually re-run cubic several times on this PR. Each manual re-review checks the full PR again and counts toward your usage quota. To preserve your usage limits, we recommend letting cubic automatically review new commits.
Turn on auto-fix | Re-trigger cubic
…or triggers, connector, and errors
…r reconciliation, safe inbox IDs
b0f4919 to
cd2d92e
Compare
|
@greptile |
|
@cubic-dev-ai review this PR |
There was a problem hiding this comment.
No issues found across 64 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
You've manually re-run cubic several times on this PR. Each manual re-review checks the full PR again and counts toward your usage quota. To preserve your usage limits, we recommend letting cubic automatically review new commits.
Turn on auto-fix | Re-trigger cubic

Summary
helpscout): syncs Help Scout conversations and their threads into a knowledge base. Optional inbox (selector + manual ID), status, tag filter, include/exclude internal notes, and a max-conversations cap (default 500, max 5000). Listing returns deferred stubs whose hash comes from listing fields (thread count, status, timestamps, preview, tags), so only changed conversations are re-fetched; a cap that hides conversations marks the listing capped so deletions never reconcile against a partial set. Content is plain text (HTML stripped, line items skipped) ordered by time; tags map to status, tags, customer email, assignee, created date, and thread count. Works with both the OAuth and the app-credential connectionexternalId/webhookSecretstay system-managed); undeploy deletes it. The catch-all trigger subscribes to all 12 supported events. Replaces the manual paste-the-URL-and-secret setuphelpscout.assigneesreplaceshelpscout.users; teams share the user ID space)payloadVersion: 'V2', "All Events" catch-all, no inbox filter on customer triggers, traceable webhook labels,Locationfallback for the webhook ID; connector marks reconciliation unsafe when the result total shifts mid-scan, bounds the scan, adds Last Updated, skips spam/drafts/merged conversations,contentConcurrency: 3; tool output constants moved totypes.tsso generated docs list each tool's own outputs; removal migration for the retiredwebhookSecrettrigger fieldhelpscout-errorsexplains Help Scout's empty-body 404s and is nowexplicitOnly, so the fallback chain never applies it to other servicesType of Change
Testing
Live against a real Help Scout account, through a local Sim on this branch:
POST /api/v2/credentials(connect-time/users/meverification, display name from the verified user; wrong secret rejected withinvalid_credentials); browser OAuth connect, token resolution through the credential service, forced refresh with refresh-token rotation persisted/api/v2/selectors/list|getwith both credentials; missing credential rejected<block.id>and<block.user.firstName>references with the status dropdown mapped, get with threads, deleteconvo.created, inbox filter, V2 payload); real Help Scout delivery through the tunnel hit/api/webhooks/trigger/<path>, passed signature verification with the generated secret, queued, and ran the workflow, whose downstream block posted a note back with resolved trigger outputs; undeploy deleted the webhook (404). Catch-all trigger subscribes to all 12 events; an app credential is refused at deploy with no partial registration/api/v2/knowledge/{id}/connectors(OAuth and app credential); initial sync stored the conversation with correct text and tag slots; a new customer reply re-synced exactly that document; deleting the conversation in Help Scout removed it on the next sync. Embedding failed locally only because the local OpenAI key is invalidlib/webhooks/providers/helpscout.test.ts,blocks/blocks.test.ts, connector suite tests, selector manifest;check-block-registry, canvas sentences, docs, integration catalog, deployment config, fork-dependent coverage, client boundary, source conventions, utils, comment hygiene, CLI docs, icon precision, biomeChecklist
test-auditauthoring gate)