Technology · Language

TypeScript

TypeScript builds the meeting-stage app, the relay between Teams and my agent, the public site runtime, and the in-house social integrations.

Helix · FAFOHive · Auth and access planeMCP tool serverChat plugins and event intake
One MCP server, sized for the client that calls itDesktop assistants · stdio
Copilot Studio · Streamable HTTP
one cell per tool
  • 16,200lines in the weather-intelligence MCP server
  • 9public data-service clients behind both surfaces
  • 12,400lines of TypeScript plugins on an unmodified chat server
  • 6,500lines in the vendor event intake, tests and migrations included

One MCP server, sized for two kinds of client

Auth and access plane includes a product I built to learn what an enterprise agent platform needs from an MCP server: a weather-intelligence server on Express 5 and the official MCP TypeScript SDK. I gave it two surfaces. Desktop assistants get the full set over the local stdio transport; Microsoft Copilot Studio gets a trimmed set over Streamable HTTP, with the session header its connector expects, because that platform copes poorly with large catalogs.

Each service sits behind its own caching and retry.

I later ported it to C# on the official .NET MCP SDK.

Building the same server on two official SDKs showed me which decisions were mine and which were the SDK's.

Living inside the tools people already use

Helix needed to live inside the tools people already use. I wrote a Teams admin tab in React and Fluent UI so an administrator manages the digital employee from inside Teams. The multi-model workspace runs on an unmodified open-source team chat server; its behaviour, including the council view where models deliberate and ratify, lives in plugins, TypeScript alongside 11,000 lines of JavaScript, so I never had to fork the server and upstream upgrades stay open. A Node relay with twenty tests serves the meeting-stage app the digital employee presents through.

Workspace plugins
Council view
Admin tab
Meeting-stage relay
Open-source team chat server, unmodified

Vendor events, stored before they are acknowledged

FAFOHive receives vendor events for governed agent teams, and I wanted that intake on the platform the vendors' own examples use. It is a TypeScript service on Node and PostgreSQL. It checks each vendor's signature over the raw bytes before any parsing, stores the event before acknowledging it, works out which governed assignment caused it, and freezes events into delivery batches with stable keys, so a retried delivery is recognised as the same batch and a team's mailbox receives each batch once. Thin per-vendor edge workers sit in front. See Agents with real tools and no keys.

1
2
3
4
5
6
1 signature over raw bytes2 stored3 acknowledged4 attributed to an assignment5 frozen into a keyed batch6 mailbox, once
A retried delivery
1
2
✕
1 same batch key2 recognised✕ not delivered twice

I pick TypeScript where the surrounding platform lives in it, Node services, web plugins and Microsoft's client surfaces, and keep system cores in Rust. The weather data comes from public services and the chat server is open source; the tool design, plugins, event handling and packaging are mine.