feat(tools,ink): email + teams + postgres-cdc integrations + ink visual regression#765
Merged
Conversation
…al regression - @agentskit/tools: provider-agnostic email (SMTP/IMAP), Microsoft Teams (incoming webhook + bot framework + Adaptive Card builder), and Postgres CDC primitives (slot status/create/drop/advance/peek + AsyncIterable stream helper). All use the injection pattern — heavy drivers (nodemailer, imapflow, botbuilder, pg-logical-replication) are not bundled. Closes #726, #727, #728. - @agentskit/ink: visual regression suite via ANSI frame snapshots from ink-testing-library — 21 snapshots across every public component in stable role/status combinations. Deterministic (frozen dates, first-render-only sampling). Closes #253 (P0.42) ink side. - apps/visual-react: new Vite + Playwright harness for the React components — 14 deterministic case routes, pinned viewport/locale/tz, animations stripped at test time. Not in default pnpm test (requires chromium binary); see apps/visual-react/README.md for setup.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Both pg_replication_slot_advance and pg_logical_slot_peek_changes accept an LSN string that gets cast to pg_lsn server-side. Parameters are bound safely so SQL injection is not the risk — but a malformed LSN from the LLM (e.g. quote-ridden garbage) would hit the database, fail the cast, and surface the raw Postgres error back to the model. Add an assertLsn() guard mirroring assertIdent() and bail out with AK_TOOL_INVALID_INPUT before the query runs. Add tests covering both rejection paths.
This was referenced May 3, 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
Batch of four issues delivered against
origin/main:@agentskit/tools/integrationscreateCdcStreamhelper)@agentskit/ink, plus aapps/visual-react/Playwright harness scaffold for the React sideAll three new tool integrations follow the existing injection pattern (
postgres,browser-agent): heavy drivers (nodemailer,imapflow,botbuilder,pg-logical-replication) are not bundled — consumers wrap the driver of their choice. Auth modes (OAuth, app secrets, certificates, managed identity) live inside the adapter.Long-running streams (IMAP IDLE, Teams activity routing, CDC AsyncIterable) are exposed as helpers, not tools — they belong to
@agentskit/triggersin AgentsKitOS, not the one-shotexecutesemantics of the tools package.What's in the diff
packages/tools/src/integrations/email.tsemail,emailSend,emailFetchfactoriespackages/tools/src/integrations/teams.tsteams,teamsSendWebhook,teamsSendBot,adaptiveCard,messageCardpackages/tools/src/integrations/postgres-cdc.tscreateCdcStreamhelper, strict identifier validationpackages/tools/src/integrations/index.tspackages/tools/tests/{email,teams,postgres-cdc}.test.tspackages/ink/tests/visual.snap.test.tsxapps/visual-react/?case=<id>routing).changeset/*.mdTest plan
pnpm --filter @agentskit/tools test→ 227/227 passingpnpm --filter @agentskit/tools lint→ cleanpnpm --filter @agentskit/tools build→ ESM 84 KB, DTS 35 KB (integrations bundle)pnpm --filter @agentskit/ink test→ 69/69 passing (21 new snapshots, two consecutive runs identical → deterministic)pnpm --filter @agentskit/ink lint→ cleanpnpm --filter @agentskit/visual-react lint→ cleanplaywright installon a stable machine; seeapps/visual-react/README.mdOut of scope
message,mentioned,installation) — belongs in@agentskit/triggers(AgentsKitOS T-6)