PointBot chat surface + Notifier port + finish Firecrawl/LLM infra wiring - #2
Merged
Merged
Conversation
… wiring Continues incorporating the pointup roadmap's unfinished 🔜 work into point_bot. The full pointup PR #1 code was already imported; these are the next items. Notifier port (core): - New `Notifier` port + `SlackWebhookNotifier` / `DiscordWebhookNotifier` / `ConsoleNotifier` / `CompositeNotifier` (fetch-based, injectable for tests). - Worker digest job now also posts a compact digest to Slack/Discord when webhooks are configured, alongside email (renderDigestChat). PointBot chat surface (new apps/bot workspace): - Slack slash-command HTTP server consuming @pointup/core use cases: `portfolio`, `expiring`, `value`, `ask <question>`, `help`. - Pure command router + formatters + Slack signature/parse (HMAC v0, 5-min replay window), all unit-tested; transport is a thin shell that defers slow LLM replies via response_url. Reuses the web assistant selection (Bedrock/ OpenAI/heuristic). Self-hosted (BOT_DEFAULT_USER_ID) or multi-user mapping. - Dockerfile.bot, docker-compose `bot` profile, docs/bot.md. Infra wiring (finishes the handoff's not-done item): - Web task: optional Firecrawl + OpenAI-compatible LLM API-key Secrets (gated by `-c enableFirecrawl` / `-c enableOpenAiLlm`), plus LLM_MODEL/LLM_BASE_URL/ FIRECRAWL_BASE_URL from context; secret ARNs surfaced as outputs. - Digest task: optional SLACK_WEBHOOK_URL / DISCORD_WEBHOOK_URL from context. - CI builds the bot bundle. Verification: 86 unit tests pass (74 core + 12 bot); all workspaces + infra typecheck; eslint clean; bot bundle builds; cdk synth clean (default + opt-in, opt-in resources verified in template). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Bugbot is not enabled for this team, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
This was referenced Jul 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continues incorporating the pointup roadmap's unfinished work into
point_bot. (The full pointup PR #1 code was already imported in #1 — verified: 188/188 files present. These are the roadmap 🔜 items that were never built.)Two on-brand additions plus the infra finish:
1.
Notifierport (core) + chat digestsNotifierport alongsideMailer, withSlackWebhookNotifier,DiscordWebhookNotifier,ConsoleNotifier, and a failure-isolatingCompositeNotifier(fetch-based, injectable for tests).digestjob now also posts a compact digest to Slack/Discord when webhooks are configured — email path unchanged.2. PointBot chat surface (
apps/bot)The repo is literally
point_bot; this brings the bot back on the modern core.@pointup/coreuse cases:portfolio,expiring,value,ask <question>,help(unrecognized text → assistant).v0, 5-min replay window) + body parse. Transport is a thin shell that acks within Slack's 3s window and defers slow LLM replies viaresponse_url.BOT_DEFAULT_USER_ID) or multi-user identity mapping.Dockerfile.bot,docker-composebotprofile, anddocs/bot.md.3. Finish the infra wiring (handoff's remaining not-done item)
-c enableFirecrawl/-c enableOpenAiLlm;LLM_MODEL/LLM_BASE_URL/FIRECRAWL_BASE_URLfrom context; secret ARNs surfaced as stack outputs.SLACK_WEBHOOK_URL/DISCORD_WEBHOOK_URLfrom context.Verification
infra/.cdk synthclean (env-agnostic, matching CI) for both the default and full opt-in flag set; opt-in resources (Bedrock IAM, Firecrawl/OpenAI secrets, Slack env) confirmed present in the synthesized template.Not included (natural follow-ups)
infra/(needs ALB + ACM cert so Slack can reach it) — the app, image, and local compose service are ready.TravelProviderGateway(Phase 3), and Phase 1/2 feature slices (multi-currency valuations, bulk membership edits) remain on the roadmap.🤖 Generated with Claude Code