@s52/my-ai-stack
v0.3.0
Published
Official SDK for My AI Stack — drop-in heartbeat + value event reporting for tools deployed into client environments
Maintainers
Readme
@s52/my-ai-stack
Official SDK for My AI Stack. Drop into any deployed tool to report heartbeats and value events to the observability platform.
npm install @s52/my-ai-stackQuick start
import { createMyAIStack } from "@s52/my-ai-stack"
const sdk = createMyAIStack({
toolSlug: "your-tool",
apiUrl: "https://your-host",
})
await sdk.emit("chat_event", {})That's it. Heartbeats fire automatically every 60s (server-side only — the heartbeat loop no-ops in the browser). emit() queues fire-and-forget; the SDK retries with exponential backoff on transient failures and keeps un-sent events in the queue.
Configuration
| Option | Default | Notes |
|-------------------|-------------|----------------------------------------------------------|
| toolSlug | required | The slug registered in the admin UI |
| apiUrl | required | Base URL of the My AI Stack API |
| apiKey | none | Reserved for v1.1 per-tool auth; currently ignored |
| intervalSeconds | 60 | Heartbeat ping interval (server-only) |
| maxRetries | 3 | Per-request retry budget on 5xx / 408 / 429 |
| timeoutMs | 10000 | Per-attempt fetch timeout |
| environment | NODE_ENV | Reported with heartbeat |
| onError | console.warn| Called for every failed send / dropped event (queue overflow) |
Limits
- Event queue is in-memory only — a process crash drops queued events. Un-sent events survive transient failures and retry on the next
flush(); when the queue is full the oldest event is dropped. - Heartbeats fire on Node only; browser sessions are emit-only.
- The tool must be registered in the admin UI before the first ping;
createMyAIStack()does not auto-register.
Node ≥20.
