@soulbatical/tetra-core 0.5.4 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/core/createApp.d.ts.map +1 -1
  2. package/dist/core/createApp.js +1 -0
  3. package/dist/core/createApp.js.map +1 -1
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/shared/telegram/index.d.ts +4 -0
  9. package/dist/shared/telegram/index.d.ts.map +1 -0
  10. package/dist/shared/telegram/index.js +3 -0
  11. package/dist/shared/telegram/index.js.map +1 -0
  12. package/dist/shared/telegram/routes.d.ts +43 -0
  13. package/dist/shared/telegram/routes.d.ts.map +1 -0
  14. package/dist/shared/telegram/routes.js +868 -0
  15. package/dist/shared/telegram/routes.js.map +1 -0
  16. package/dist/shared/telegram/types.d.ts +168 -0
  17. package/dist/shared/telegram/types.d.ts.map +1 -0
  18. package/dist/shared/telegram/types.js +7 -0
  19. package/dist/shared/telegram/types.js.map +1 -0
  20. package/dist/shared/telegram/utils.d.ts +44 -0
  21. package/dist/shared/telegram/utils.d.ts.map +1 -0
  22. package/dist/shared/telegram/utils.js +121 -0
  23. package/dist/shared/telegram/utils.js.map +1 -0
  24. package/dist/shared/telemetry/heartbeat.d.ts +2 -2
  25. package/dist/shared/telemetry/heartbeat.d.ts.map +1 -1
  26. package/dist/shared/telemetry/heartbeat.js +18 -3
  27. package/dist/shared/telemetry/heartbeat.js.map +1 -1
  28. package/dist/shared/telemetry/index.d.ts +1 -1
  29. package/dist/shared/telemetry/index.d.ts.map +1 -1
  30. package/dist/shared/telemetry/types.d.ts +28 -1
  31. package/dist/shared/telemetry/types.d.ts.map +1 -1
  32. package/dist/telemetry.d.ts +2 -2
  33. package/dist/telemetry.d.ts.map +1 -1
  34. package/dist/telemetry.js +1 -1
  35. package/dist/telemetry.js.map +1 -1
  36. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/shared/telegram/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Telegram Integration Types
3
+ *
4
+ * Used by addTelegramRoutes() factory and consumers.
5
+ */
6
+ import type { Router } from 'express';
7
+ export interface TelegramRoutesConfig {
8
+ /** Telegram Bot API token (from @BotFather) */
9
+ botToken: string;
10
+ /** Bot username without @ (e.g. 'agentrook_bot') */
11
+ botUsername: string;
12
+ /**
13
+ * Called when a free-text message arrives from a connected user.
14
+ * Return a string to send back, or null/undefined for no reply.
15
+ */
16
+ onMessage?: TelegramMessageHandler;
17
+ /**
18
+ * Called when a callback query (inline keyboard button press) arrives.
19
+ * Return a string to edit the original message, or null for no edit.
20
+ */
21
+ onCallbackQuery?: TelegramCallbackHandler;
22
+ /** Project-specific notification rule presets */
23
+ presets?: RulePreset[];
24
+ /** Custom welcome message for /start (no token). Supports Markdown. */
25
+ welcomeMessage?: string;
26
+ /** Custom help message for /help. Supports Markdown. */
27
+ helpMessage?: string;
28
+ /** App name shown in bot messages (e.g. 'Agentrook', 'VinciFox') */
29
+ appName?: string;
30
+ /** Dashboard URL for /start without token (e.g. 'https://www.agentrook.com/settings/telegram') */
31
+ dashboardUrl?: string;
32
+ /** Known notification events for validation. If not set, any string is accepted. */
33
+ knownEvents?: readonly string[];
34
+ /**
35
+ * Filter function called before sending any notification.
36
+ * Return false to skip the send. Useful for project-specific suppression rules.
37
+ */
38
+ notificationFilter?: (ctx: TelegramNotificationFilterContext) => boolean;
39
+ /**
40
+ * Called after a message is successfully sent (fire-and-forget).
41
+ * Useful for logging, analytics, or audit trails.
42
+ */
43
+ onMessageSent?: (ctx: TelegramMessageSentContext) => void;
44
+ /**
45
+ * Block messages containing detected secrets/credentials.
46
+ * Default: true. Set to false to disable (not recommended).
47
+ */
48
+ blockSecrets?: boolean;
49
+ }
50
+ export type TelegramMessageHandler = (ctx: TelegramMessageContext) => Promise<string | null | undefined>;
51
+ export type TelegramCallbackHandler = (ctx: TelegramCallbackContext) => Promise<string | null | undefined>;
52
+ export interface TelegramMessageContext {
53
+ chatId: number;
54
+ text: string;
55
+ firstName: string;
56
+ userId: string;
57
+ organizationId: string;
58
+ /** The user_telegram_settings row */
59
+ settings: TelegramUserSettings;
60
+ }
61
+ export interface TelegramCallbackContext {
62
+ chatId: number;
63
+ messageId: number;
64
+ callbackData: string;
65
+ firstName: string;
66
+ userId: string;
67
+ organizationId: string;
68
+ settings: TelegramUserSettings;
69
+ }
70
+ export interface TelegramUserSettings {
71
+ id: string;
72
+ user_id: string;
73
+ organization_id: string;
74
+ telegram_chat_id: string | null;
75
+ enabled: boolean;
76
+ project_ids: string[] | null;
77
+ notification_events: string[] | null;
78
+ permissions: string[] | null;
79
+ link_token: string | null;
80
+ link_token_expires_at: string | null;
81
+ connected?: boolean;
82
+ created_at: string;
83
+ updated_at: string;
84
+ }
85
+ export interface TelegramRule {
86
+ id: string;
87
+ organization_id: string;
88
+ user_id: string | null;
89
+ name: string;
90
+ enabled: boolean;
91
+ priority: number;
92
+ conditions: RuleConditions;
93
+ action: RuleAction;
94
+ preset_key: string | null;
95
+ created_at: string;
96
+ updated_at: string;
97
+ }
98
+ export interface RuleConditions {
99
+ event_types?: string[];
100
+ project_ids?: string[];
101
+ /** Project-specific type filter (e.g. feedback_types, campaign_types) */
102
+ custom_types?: string[];
103
+ keywords?: string[];
104
+ }
105
+ export type RuleAction = 'notify' | 'silent';
106
+ export interface RulePreset {
107
+ key: string;
108
+ name_en: string;
109
+ name_nl: string;
110
+ description_en: string;
111
+ description_nl: string;
112
+ conditions: RuleConditions;
113
+ action: RuleAction;
114
+ priority: number;
115
+ }
116
+ export interface TelegramNotificationFilterContext {
117
+ /** Notification priority (project-defined) */
118
+ priority?: string;
119
+ /** Source system (e.g. 'backend', 'mcp', 'agent') */
120
+ source?: string;
121
+ /** Notification type (e.g. 'campaign_published', 'error') */
122
+ type?: string;
123
+ }
124
+ export interface TelegramMessageSentContext {
125
+ chatId: string | number;
126
+ type: 'message' | 'photo' | 'document';
127
+ text: string;
128
+ messageId?: number;
129
+ source?: string;
130
+ }
131
+ export interface TelegramSendPhotoOptions {
132
+ caption?: string;
133
+ fileName?: string;
134
+ }
135
+ export interface TelegramSendDocumentOptions {
136
+ caption?: string;
137
+ fileName?: string;
138
+ }
139
+ export interface InlineKeyboard {
140
+ inline_keyboard: Array<Array<{
141
+ text: string;
142
+ callback_data: string;
143
+ }>>;
144
+ }
145
+ export interface NotifyEventOptions {
146
+ keyboard?: InlineKeyboard;
147
+ requiredPermission?: string;
148
+ customType?: string;
149
+ }
150
+ export interface TelegramService {
151
+ /** Send notification to all matching users in an org */
152
+ notifyEvent: (organizationId: string, projectId: string | null, eventType: string, message: string, options?: NotifyEventOptions) => Promise<number>;
153
+ /** Edit a previously sent message */
154
+ editMessage: (chatId: string, messageId: number, newText: string, keyboard?: InlineKeyboard | null) => Promise<boolean>;
155
+ /** Send a direct message to a specific chat (with markdown fallback, splitting, idempotency, secret blocking) */
156
+ sendMessage: (chatId: string | number, text: string, keyboard?: InlineKeyboard) => Promise<boolean>;
157
+ /** Send a photo to a specific chat (URL or Buffer) */
158
+ sendPhoto: (chatId: string | number, photo: string | Buffer, options?: TelegramSendPhotoOptions) => Promise<boolean>;
159
+ /** Send a document to a specific chat (URL or Buffer) */
160
+ sendDocument: (chatId: string | number, document: string | Buffer, options?: TelegramSendDocumentOptions) => Promise<boolean>;
161
+ /** The admin router (settings, connect, disconnect, test, rules) */
162
+ adminRouter: Router;
163
+ /** The public webhook router */
164
+ webhookRouter: Router;
165
+ /** Register webhook URL with Telegram API (call on server start) */
166
+ registerWebhook: (baseUrl: string) => Promise<boolean>;
167
+ }
168
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/telegram/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Telegram Integration Types
3
+ *
4
+ * Used by addTelegramRoutes() factory and consumers.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/telegram/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Telegram Utilities
3
+ *
4
+ * Shared utility functions for Telegram integrations:
5
+ * - Message splitting (smart breakpoints on newlines/spaces)
6
+ * - Secret detection and scrubbing (prevents credential leaks)
7
+ * - Idempotency (in-memory dedup within configurable window)
8
+ */
9
+ /** Regex patterns for detecting common secret/credential formats */
10
+ export declare const SECRET_PATTERNS: RegExp[];
11
+ /**
12
+ * Check if text contains secrets/credentials.
13
+ * Returns array of redacted previews (first 8 chars + ***) for each match.
14
+ * Empty array = no secrets found.
15
+ */
16
+ export declare function containsSecrets(text: string): string[];
17
+ /**
18
+ * Replace all detected secrets in text with redacted versions.
19
+ * Each secret is replaced with its first 4 chars + '***[REDACTED]'.
20
+ */
21
+ export declare function scrubSecrets(text: string): string;
22
+ /**
23
+ * Split a long message into chunks that fit within Telegram's limits.
24
+ * Prefers breaking at newlines, then spaces, then hard-cuts at maxLength.
25
+ */
26
+ export declare function splitMessage(text: string, maxLength?: number): string[];
27
+ /**
28
+ * Generate a hash for deduplication based on chatId + text prefix.
29
+ * Uses MD5 for speed (not security - just dedup).
30
+ */
31
+ export declare function generateIdempotencyHash(chatId: string | number, text: string): string;
32
+ /**
33
+ * Check if a message with this hash was recently sent.
34
+ * Returns true if duplicate (should be skipped).
35
+ */
36
+ export declare function isDuplicate(hash: string, windowMs?: number): boolean;
37
+ /**
38
+ * Mark a message hash as sent (for future dedup checks).
39
+ * Automatically prunes expired entries when map exceeds MAX_ENTRIES.
40
+ */
41
+ export declare function markSent(hash: string, windowMs?: number): void;
42
+ /** Clear all idempotency state (useful for testing) */
43
+ export declare function clearIdempotencyCache(): void;
44
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/shared/telegram/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,oEAAoE;AACpE,eAAO,MAAM,eAAe,EAAE,MAAM,EAWnC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAqB,GAAG,MAAM,EAAE,CAsBnF;AASD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAoB,GAAG,OAAO,CAQ/E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAoB,GAAG,IAAI,CASzE;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Telegram Utilities
3
+ *
4
+ * Shared utility functions for Telegram integrations:
5
+ * - Message splitting (smart breakpoints on newlines/spaces)
6
+ * - Secret detection and scrubbing (prevents credential leaks)
7
+ * - Idempotency (in-memory dedup within configurable window)
8
+ */
9
+ import crypto from 'crypto';
10
+ // ── Secret Detection ───────────────────────────────────────────
11
+ /** Regex patterns for detecting common secret/credential formats */
12
+ export const SECRET_PATTERNS = [
13
+ /\b(sk_live_|sk_test_|pk_live_|pk_test_)[A-Za-z0-9]{10,}/g, // Stripe keys
14
+ /\b(whsec_)[A-Za-z0-9]{10,}/g, // Stripe webhook secrets
15
+ /\b(ghp_|gho_|ghs_|ghr_|github_pat_)[A-Za-z0-9_]{10,}/g, // GitHub tokens
16
+ /\bxoxb-[0-9]+-[A-Za-z0-9]+/g, // Slack bot tokens
17
+ /\bBearer\s+[A-Za-z0-9\-._~+/]+=*/g, // Bearer tokens
18
+ /\b(npm_)[A-Za-z0-9]{10,}/g, // npm tokens
19
+ /\b(AKIA|ASIA)[A-Z0-9]{16}/g, // AWS access keys
20
+ /\b(eyJ)[A-Za-z0-9\-_]{20,}\.[A-Za-z0-9\-_]{20,}\.[A-Za-z0-9\-_]{20,}/g, // JWTs
21
+ /\b[0-9a-f]{64}\b/g, // 256-bit hex keys
22
+ /\bAIza[A-Za-z0-9\-_]{35}/g, // Google API keys
23
+ ];
24
+ /**
25
+ * Check if text contains secrets/credentials.
26
+ * Returns array of redacted previews (first 8 chars + ***) for each match.
27
+ * Empty array = no secrets found.
28
+ */
29
+ export function containsSecrets(text) {
30
+ const found = [];
31
+ for (const pattern of SECRET_PATTERNS) {
32
+ pattern.lastIndex = 0;
33
+ const match = pattern.exec(text);
34
+ if (match) {
35
+ found.push(match[0].slice(0, 8) + '***');
36
+ }
37
+ }
38
+ return found;
39
+ }
40
+ /**
41
+ * Replace all detected secrets in text with redacted versions.
42
+ * Each secret is replaced with its first 4 chars + '***[REDACTED]'.
43
+ */
44
+ export function scrubSecrets(text) {
45
+ let result = text;
46
+ for (const pattern of SECRET_PATTERNS) {
47
+ result = result.replace(pattern, (match) => match.slice(0, 4) + '***[REDACTED]');
48
+ }
49
+ return result;
50
+ }
51
+ // ── Message Splitting ──────────────────────────────────────────
52
+ const DEFAULT_MAX_LENGTH = 4000;
53
+ /**
54
+ * Split a long message into chunks that fit within Telegram's limits.
55
+ * Prefers breaking at newlines, then spaces, then hard-cuts at maxLength.
56
+ */
57
+ export function splitMessage(text, maxLength = DEFAULT_MAX_LENGTH) {
58
+ if (text.length <= maxLength)
59
+ return [text];
60
+ const chunks = [];
61
+ let remaining = text;
62
+ while (remaining.length > 0) {
63
+ if (remaining.length <= maxLength) {
64
+ chunks.push(remaining);
65
+ break;
66
+ }
67
+ // Find best breakpoint: prefer newline, then space, then hard cut
68
+ let bp = remaining.lastIndexOf('\n', maxLength);
69
+ if (bp < maxLength / 2)
70
+ bp = remaining.lastIndexOf(' ', maxLength);
71
+ if (bp < maxLength / 2)
72
+ bp = maxLength;
73
+ chunks.push(remaining.slice(0, bp));
74
+ remaining = remaining.slice(bp).trim();
75
+ }
76
+ return chunks;
77
+ }
78
+ // ── Idempotency ────────────────────────────────────────────────
79
+ const DEFAULT_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
80
+ const MAX_ENTRIES = 200;
81
+ const recentMessages = new Map();
82
+ /**
83
+ * Generate a hash for deduplication based on chatId + text prefix.
84
+ * Uses MD5 for speed (not security - just dedup).
85
+ */
86
+ export function generateIdempotencyHash(chatId, text) {
87
+ return crypto.createHash('md5').update(`${chatId}:${text.slice(0, 100)}`).digest('hex');
88
+ }
89
+ /**
90
+ * Check if a message with this hash was recently sent.
91
+ * Returns true if duplicate (should be skipped).
92
+ */
93
+ export function isDuplicate(hash, windowMs = DEFAULT_WINDOW_MS) {
94
+ const lastSent = recentMessages.get(hash);
95
+ if (!lastSent)
96
+ return false;
97
+ if (Date.now() - lastSent > windowMs) {
98
+ recentMessages.delete(hash);
99
+ return false;
100
+ }
101
+ return true;
102
+ }
103
+ /**
104
+ * Mark a message hash as sent (for future dedup checks).
105
+ * Automatically prunes expired entries when map exceeds MAX_ENTRIES.
106
+ */
107
+ export function markSent(hash, windowMs = DEFAULT_WINDOW_MS) {
108
+ recentMessages.set(hash, Date.now());
109
+ if (recentMessages.size > MAX_ENTRIES) {
110
+ const cutoff = Date.now() - windowMs;
111
+ for (const [key, timestamp] of recentMessages) {
112
+ if (timestamp < cutoff)
113
+ recentMessages.delete(key);
114
+ }
115
+ }
116
+ }
117
+ /** Clear all idempotency state (useful for testing) */
118
+ export function clearIdempotencyCache() {
119
+ recentMessages.clear();
120
+ }
121
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/shared/telegram/utils.ts"],"names":[],"mappings":"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"}
@@ -21,10 +21,10 @@ export declare function isTelemetryEnabled(config?: {
21
21
  disabled?: boolean;
22
22
  }): boolean;
23
23
  /**
24
- * Build the heartbeat payload from current license and config.
24
+ * Build the heartbeat payload from current license, config, and runtime usage.
25
25
  * Returns null if no valid license is present.
26
26
  */
27
- export declare function buildHeartbeatPayload(config: TelemetryConfig): HeartbeatPayload | null;
27
+ export declare function buildHeartbeatPayload(config: TelemetryConfig): Promise<HeartbeatPayload | null>;
28
28
  /**
29
29
  * Send a single heartbeat. Non-blocking: never throws.
30
30
  * Returns the server-suggested next interval in ms, or null on failure.
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../../src/shared/telemetry/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAWpE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAK3E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,CA+BtF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCnF;AAoBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,CAwBlE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../../src/shared/telemetry/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAa,MAAM,YAAY,CAAC;AAW/E;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAK3E;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA+CrG;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCnF;AAoBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,CAwBlE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
@@ -34,10 +34,10 @@ export function isTelemetryEnabled(config) {
34
34
  return true;
35
35
  }
36
36
  /**
37
- * Build the heartbeat payload from current license and config.
37
+ * Build the heartbeat payload from current license, config, and runtime usage.
38
38
  * Returns null if no valid license is present.
39
39
  */
40
- export function buildHeartbeatPayload(config) {
40
+ export async function buildHeartbeatPayload(config) {
41
41
  const licenseResult = validateLicense({ silent: true });
42
42
  if (!licenseResult.valid || !licenseResult.payload)
43
43
  return null;
@@ -52,6 +52,20 @@ export function buildHeartbeatPayload(config) {
52
52
  catch {
53
53
  // Not available in all environments
54
54
  }
55
+ // Collect runtime usage data (non-blocking)
56
+ let usage = null;
57
+ if (config.usageProvider) {
58
+ try {
59
+ usage = await config.usageProvider();
60
+ }
61
+ catch {
62
+ // Usage collection failed — send heartbeat without usage data
63
+ }
64
+ }
65
+ // Auto-detect memory usage
66
+ if (usage) {
67
+ usage.memoryMb = usage.memoryMb ?? Math.round(process.memoryUsage().heapUsed / 1024 / 1024);
68
+ }
55
69
  return {
56
70
  licenseKeyHash: keyHash,
57
71
  customer: licenseResult.payload.customer,
@@ -66,6 +80,7 @@ export function buildHeartbeatPayload(config) {
66
80
  licenseExpiry: licenseResult.payload.expiry,
67
81
  maxOrganizations: licenseResult.payload.maxOrganizations ?? null,
68
82
  maxUsersPerOrg: licenseResult.payload.maxUsersPerOrg ?? null,
83
+ usage,
69
84
  };
70
85
  }
71
86
  /**
@@ -76,7 +91,7 @@ export async function sendHeartbeat(config) {
76
91
  try {
77
92
  if (!isTelemetryEnabled(config))
78
93
  return null;
79
- const payload = buildHeartbeatPayload(config);
94
+ const payload = await buildHeartbeatPayload(config);
80
95
  if (!payload)
81
96
  return null;
82
97
  const url = config.heartbeatUrl || DEFAULT_HEARTBEAT_URL;
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/shared/telemetry/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/shared/telemetry/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,6 @@
7
7
  *
8
8
  * @module @soulbatical/tetra-core/telemetry
9
9
  */
10
- export type { HeartbeatPayload, TelemetryConfig } from './types.js';
10
+ export type { HeartbeatPayload, TelemetryConfig, UsageData } from './types.js';
11
11
  export { isTelemetryEnabled, buildHeartbeatPayload, sendHeartbeat, startHeartbeat, stopHeartbeat, getCurrentInterval, } from './heartbeat.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
@@ -3,6 +3,25 @@
3
3
  *
4
4
  * @module @soulbatical/tetra-core/telemetry
5
5
  */
6
+ /** Runtime usage data collected by the usageProvider callback */
7
+ export interface UsageData {
8
+ /** Number of active organizations */
9
+ organizationCount: number;
10
+ /** Total number of users across all organizations */
11
+ totalUsers: number;
12
+ /** Number of active users (logged in within last 30 days) */
13
+ activeUsers: number;
14
+ /** Public URL where this installation is reachable (e.g., https://api.agentrook.com) */
15
+ publicUrl: string | null;
16
+ /** Frontend URL if separate (e.g., https://app.agentrook.com) */
17
+ frontendUrl: string | null;
18
+ /** Number of API requests processed since last heartbeat */
19
+ requestCount?: number;
20
+ /** Memory usage in MB (heap used) */
21
+ memoryMb?: number;
22
+ /** Additional custom metrics (project-specific) */
23
+ custom?: Record<string, string | number | boolean>;
24
+ }
6
25
  /** Heartbeat payload sent to ralph-manager */
7
26
  export interface HeartbeatPayload {
8
27
  /** SHA-256 hash of the license key (never the key itself) */
@@ -31,6 +50,8 @@ export interface HeartbeatPayload {
31
50
  maxOrganizations: number | null;
32
51
  /** Max users per org from license (null = unlimited) */
33
52
  maxUsersPerOrg: number | null;
53
+ /** Runtime usage data (null if usageProvider not configured or failed) */
54
+ usage: UsageData | null;
34
55
  }
35
56
  /** Telemetry configuration */
36
57
  export interface TelemetryConfig {
@@ -38,11 +59,17 @@ export interface TelemetryConfig {
38
59
  projectName: string;
39
60
  /** Server port */
40
61
  port: number;
41
- /** Heartbeat interval in ms (default: 24 hours) */
62
+ /** Heartbeat interval in ms (default: 1 hour) */
42
63
  intervalMs?: number;
43
64
  /** Ralph-manager heartbeat URL (default: auto-detected) */
44
65
  heartbeatUrl?: string;
45
66
  /** Disable telemetry (default: false, also controlled by TETRA_TELEMETRY env var) */
46
67
  disabled?: boolean;
68
+ /**
69
+ * Async callback that provides runtime usage data for each heartbeat.
70
+ * Called before every heartbeat. If it throws or returns null, usage is omitted.
71
+ * Implement this to report org/user counts, public URLs, and custom metrics.
72
+ */
73
+ usageProvider?: () => Promise<UsageData | null>;
47
74
  }
48
75
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/telemetry/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wDAAwD;IACxD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/telemetry/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACpD;AAED,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wDAAwD;IACxD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;CACjD"}
@@ -4,6 +4,6 @@
4
4
  * Non-blocking installation tracking for Tetra.
5
5
  * Sends heartbeats to ralph-manager. Opt-out via TETRA_TELEMETRY=false.
6
6
  */
7
- export { isTelemetryEnabled, buildHeartbeatPayload, sendHeartbeat, startHeartbeat, stopHeartbeat, } from './shared/telemetry/index.js';
8
- export type { HeartbeatPayload, TelemetryConfig, } from './shared/telemetry/index.js';
7
+ export { isTelemetryEnabled, buildHeartbeatPayload, sendHeartbeat, startHeartbeat, stopHeartbeat, getCurrentInterval, } from './shared/telemetry/index.js';
8
+ export type { HeartbeatPayload, TelemetryConfig, UsageData, } from './shared/telemetry/index.js';
9
9
  //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,GACV,MAAM,6BAA6B,CAAC"}
package/dist/telemetry.js CHANGED
@@ -4,5 +4,5 @@
4
4
  * Non-blocking installation tracking for Tetra.
5
5
  * Sends heartbeats to ralph-manager. Opt-out via TETRA_TELEMETRY=false.
6
6
  */
7
- export { isTelemetryEnabled, buildHeartbeatPayload, sendHeartbeat, startHeartbeat, stopHeartbeat, } from './shared/telemetry/index.js';
7
+ export { isTelemetryEnabled, buildHeartbeatPayload, sendHeartbeat, startHeartbeat, stopHeartbeat, getCurrentInterval, } from './shared/telemetry/index.js';
8
8
  //# sourceMappingURL=telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,6BAA6B,CAAC"}