# @smithers-orchestrator/integrations — src

External-service event sources and workflow components for Smithers. Four
public entry points, mapped in package.json `exports`, each a re-export barrel
over its subdirectory:

- `index.js` → `core/` — the service-agnostic pipeline (event sources,
  delivery, runtime, signal names, signature/cursor utilities).
- `github.js` → `github/` — GitHub webhook source, REST client, components.
- `linear.js` → `linear/` — Linear webhook source, GraphQL client, components.
- `telegram.js` → `telegram/` — Telegram Bot API client, long-poll source,
  components, approvals, Mini App initData verification.

How events flow: service sources (webhook or polling) emit ExternalEvents →
core `deliverEvents` dedupes and signals runs parked on `WaitForEvent`;
components render `WaitForEvent` listeners (inbound) and compute-Task API
calls (outbound).

Conventions: implementation is `.js` with JSDoc types; type-only `.ts`
sidecars (e.g. `GitHubConfig.ts`) hold the shapes. The
`// @smithers-type-exports-begin/end` blocks are tool-managed — never
hand-edit them. The `*.d.ts` files here are generated by `pnpm build`
(tsup `--dts-only`); do not edit them either.

Gotcha: the `./*` wildcard export makes every src module importable by npm
consumers, so treat exported names in "internal" modules as public surface.
