@recombine-ai/platform 0.2.6-test.1 → 0.2.6-test.10

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.
@@ -1,39 +1,42 @@
1
1
  import { z } from 'zod';
2
- export type AnalyticsValueType = 'boolean' | 'number' | 'string' | 'json';
3
- export type AnalyticsJsonValue = boolean | number | string | null | AnalyticsJsonValue[] | {
4
- [key: string]: AnalyticsJsonValue;
5
- };
6
- export interface AnalyticsKey<T> {
7
- readonly key: string;
8
- readonly valueType: AnalyticsValueType;
2
+ export type AnalyticsScalar = boolean | number | string;
3
+ export type AnalyticsFieldType = 'boolean' | 'number' | 'string';
4
+ declare const analyticsFieldDefinitionBrand: unique symbol;
5
+ export interface AnalyticsFieldDefinition<T> {
6
+ readonly type: AnalyticsFieldType;
9
7
  readonly schema: z.ZodType<T>;
8
+ readonly [analyticsFieldDefinitionBrand]: true;
10
9
  }
11
- export type AnalyticsValue<TKey extends AnalyticsKey<unknown>> = TKey extends AnalyticsKey<infer TValue> ? TValue : never;
10
+ export type AnalyticsFieldDefinitions = Readonly<Record<string, AnalyticsFieldDefinition<unknown>>>;
11
+ export type AnalyticsValue<TField extends AnalyticsFieldDefinition<unknown>> = TField extends AnalyticsFieldDefinition<infer TValue> ? TValue : never;
12
+ type AnalyticsFieldName<TFields extends AnalyticsFieldDefinitions> = Extract<keyof TFields, string>;
12
13
  export interface ConversationAnalyticsSummary {
13
14
  conversationId: string;
14
- agentId?: string;
15
+ agentId: string;
15
16
  channel: string;
16
- region?: string;
17
17
  startedAt: Date;
18
- endedAt?: Date;
19
- durationSeconds?: number;
20
18
  }
21
- export interface ConversationAnalytics {
22
- set<TKey extends AnalyticsKey<unknown>>(key: TKey, value: AnalyticsValue<TKey>): Promise<void>;
23
- clear(key: AnalyticsKey<unknown>): Promise<void>;
24
- get<TKey extends AnalyticsKey<unknown>>(key: TKey): Promise<AnalyticsValue<TKey> | undefined>;
25
- getSummary(): Promise<ConversationAnalyticsSummary | undefined>;
19
+ export interface AnalyticsStore {
20
+ set(conversationId: string, agentId: string, fieldName: string, value: AnalyticsScalar): Promise<void>;
21
+ clear(conversationId: string, agentId: string, fieldName: string): Promise<void>;
22
+ get(conversationId: string, agentId: string, fieldName: string): Promise<unknown | undefined>;
23
+ getSummary(conversationId: string, agentId: string): Promise<ConversationAnalyticsSummary | undefined>;
26
24
  }
27
- export interface Analytics {
28
- getConversationAnalytics(conversationId: string): ConversationAnalytics;
25
+ export interface AgentAnalytics<TFields extends AnalyticsFieldDefinitions> {
26
+ set<TName extends AnalyticsFieldName<TFields>>(conversationId: string, fieldName: TName, value: AnalyticsValue<TFields[TName]>): Promise<void>;
27
+ clear<TName extends AnalyticsFieldName<TFields>>(conversationId: string, fieldName: TName): Promise<void>;
28
+ get<TName extends AnalyticsFieldName<TFields>>(conversationId: string, fieldName: TName): Promise<AnalyticsValue<TFields[TName]> | undefined>;
29
+ getSummary(conversationId: string): Promise<ConversationAnalyticsSummary | undefined>;
29
30
  }
30
- export declare const analyticsKey: {
31
- boolean(key: string): AnalyticsKey<boolean>;
32
- number(key: string): AnalyticsKey<number>;
33
- string(key: string): AnalyticsKey<string>;
34
- enum<const TValues extends readonly [string, ...string[]]>(key: string, values: TValues): AnalyticsKey<TValues[number]>;
35
- json<T extends AnalyticsJsonValue>(key: string, schema: z.ZodType<T>): AnalyticsKey<T>;
31
+ export declare const analyticsField: {
32
+ boolean(): AnalyticsFieldDefinition<boolean>;
33
+ number(): AnalyticsFieldDefinition<number>;
34
+ string(): AnalyticsFieldDefinition<string>;
35
+ enum<const TValues extends readonly [string, ...string[]]>(values: TValues): AnalyticsFieldDefinition<TValues[number]>;
36
36
  };
37
- export declare function createInMemoryAnalytics(summaries?: ConversationAnalyticsSummary[]): Analytics;
38
- export declare function assertAnalyticsJsonValue(value: unknown): asserts value is AnalyticsJsonValue;
37
+ export declare function validateAgentAnalytics(agentId: string, fields: AnalyticsFieldDefinitions): void;
38
+ export declare function createAgentAnalytics<TFields extends AnalyticsFieldDefinitions>(store: AnalyticsStore, agentId: string, fields: TFields): AgentAnalytics<TFields>;
39
+ export declare function createInMemoryAnalytics(summaries?: ConversationAnalyticsSummary[]): AnalyticsStore;
40
+ export declare function assertAnalyticsScalar(value: unknown): asserts value is AnalyticsScalar;
41
+ export {};
39
42
  //# sourceMappingURL=analytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AACzE,MAAM,MAAM,kBAAkB,GACxB,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,kBAAkB,EAAE,GACpB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;CAAE,CAAA;AAE3C,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,YAAY,CAAC,OAAO,CAAC,IACzD,IAAI,SAAS,YAAY,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAA;AAE5D,MAAM,WAAW,4BAA4B;IACzC,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,IAAI,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,qBAAqB;IAClC,GAAG,CAAC,IAAI,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9F,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,GAAG,CAAC,IAAI,SAAS,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;IAC7F,UAAU,IAAI,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,SAAS;IACtB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,qBAAqB,CAAA;CAC1E;AAcD,eAAO,MAAM,YAAY;iBACR,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;gBAG/B,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gBAG7B,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;eAG9B,OAAO,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,OAChD,MAAM,UACH,OAAO,GAChB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAG3B,CAAC,SAAS,kBAAkB,OAAO,MAAM,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;CAGzF,CAAA;AAED,wBAAgB,uBAAuB,CAAC,SAAS,GAAE,4BAA4B,EAAO,GAAG,SAAS,CAsCjG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAkB5F"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
@@ -1,77 +1,129 @@
1
- import { z } from 'zod';
2
- function defineKey(key, valueType, schema) {
3
- if (!/^[A-Za-z0-9_.:-]{1,128}$/.test(key)) {
4
- throw new Error('Analytics key contains unsupported characters');
5
- }
6
- return Object.freeze({ key, valueType, schema });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyticsField = void 0;
4
+ exports.validateAgentAnalytics = validateAgentAnalytics;
5
+ exports.createAgentAnalytics = createAgentAnalytics;
6
+ exports.createInMemoryAnalytics = createInMemoryAnalytics;
7
+ exports.assertAnalyticsScalar = assertAnalyticsScalar;
8
+ const zod_1 = require("zod");
9
+ const analyticsFieldDefinitionBrand = Symbol('AnalyticsFieldDefinition');
10
+ const analyticsFieldDefinitions = new WeakSet();
11
+ function defineField(type, schema) {
12
+ const definition = {
13
+ type,
14
+ schema,
15
+ [analyticsFieldDefinitionBrand]: true,
16
+ };
17
+ analyticsFieldDefinitions.add(definition);
18
+ return Object.freeze(definition);
7
19
  }
8
- export const analyticsKey = {
9
- boolean(key) {
10
- return defineKey(key, 'boolean', z.boolean());
11
- },
12
- number(key) {
13
- return defineKey(key, 'number', z.number().finite());
20
+ exports.analyticsField = {
21
+ boolean() {
22
+ return defineField('boolean', zod_1.z.boolean());
14
23
  },
15
- string(key) {
16
- return defineKey(key, 'string', z.string());
24
+ number() {
25
+ return defineField('number', zod_1.z.number().finite());
17
26
  },
18
- enum(key, values) {
19
- return defineKey(key, 'string', z.enum(values));
27
+ string() {
28
+ return defineField('string', zod_1.z.string());
20
29
  },
21
- json(key, schema) {
22
- return defineKey(key, 'json', schema);
30
+ enum(values) {
31
+ return defineField('string', zod_1.z.enum(values));
23
32
  },
24
33
  };
25
- export function createInMemoryAnalytics(summaries = []) {
34
+ function validateAgentAnalytics(agentId, fields) {
35
+ if (agentId.trim() === '') {
36
+ throw new Error('Analytics agent ID must not be empty');
37
+ }
38
+ for (const [fieldName, value] of Object.entries(fields)) {
39
+ if (!/^[A-Za-z0-9_.:-]{1,128}$/.test(fieldName)) {
40
+ throw new Error('Analytics field name contains unsupported characters');
41
+ }
42
+ if (!isAnalyticsFieldDefinition(value)) {
43
+ throw new Error(`Analytics field '${fieldName}' must be declared with analyticsField`);
44
+ }
45
+ const definition = value;
46
+ if (!['boolean', 'number', 'string'].includes(definition.type)) {
47
+ throw new Error(`Analytics field '${fieldName}' has an unsupported type`);
48
+ }
49
+ }
50
+ }
51
+ function isAnalyticsFieldDefinition(value) {
52
+ return typeof value === 'object' && value !== null && analyticsFieldDefinitions.has(value);
53
+ }
54
+ function createAgentAnalytics(store, agentId, fields) {
55
+ validateAgentAnalytics(agentId, fields);
56
+ const getDefinition = (fieldName) => {
57
+ const definition = fields[fieldName];
58
+ if (!definition) {
59
+ throw new Error(`Analytics field '${fieldName}' is not declared for agent '${agentId}'`);
60
+ }
61
+ return definition;
62
+ };
63
+ const parseValue = (fieldName, value) => getDefinition(fieldName).schema.parse(value);
64
+ return {
65
+ async set(conversationId, fieldName, value) {
66
+ const parsed = parseValue(fieldName, value);
67
+ assertAnalyticsScalar(parsed);
68
+ await store.set(conversationId, agentId, fieldName, parsed);
69
+ },
70
+ async clear(conversationId, fieldName) {
71
+ getDefinition(fieldName);
72
+ await store.clear(conversationId, agentId, fieldName);
73
+ },
74
+ async get(conversationId, fieldName) {
75
+ getDefinition(fieldName);
76
+ const value = await store.get(conversationId, agentId, fieldName);
77
+ return value === undefined ? undefined : parseValue(fieldName, value);
78
+ },
79
+ getSummary(conversationId) {
80
+ return store.getSummary(conversationId, agentId);
81
+ },
82
+ };
83
+ }
84
+ function createInMemoryAnalytics(summaries = []) {
26
85
  const conversations = new Map();
86
+ const conversationAgents = new Map(summaries.map((summary) => [summary.conversationId, summary.agentId]));
27
87
  const summariesById = new Map(summaries.map((summary) => [summary.conversationId, structuredClone(summary)]));
28
88
  return {
29
- getConversationAnalytics(conversationId) {
30
- return {
31
- async set(key, value) {
32
- const parsed = key.schema.parse(value);
33
- assertAnalyticsJsonValue(parsed);
34
- const values = conversations.get(conversationId) ?? new Map();
35
- values.set(key.key, structuredClone(parsed));
36
- conversations.set(conversationId, values);
37
- },
38
- async clear(key) {
39
- const values = conversations.get(conversationId);
40
- values?.delete(key.key);
41
- if (values?.size === 0) {
42
- conversations.delete(conversationId);
43
- }
44
- },
45
- async get(key) {
46
- const values = conversations.get(conversationId);
47
- if (!values?.has(key.key)) {
48
- return undefined;
49
- }
50
- const value = values.get(key.key);
51
- return key.schema.parse(structuredClone(value));
52
- },
53
- async getSummary() {
54
- const summary = summariesById.get(conversationId);
55
- return summary ? structuredClone(summary) : undefined;
56
- },
57
- };
89
+ async set(conversationId, agentId, fieldName, value) {
90
+ const existingAgentId = conversationAgents.get(conversationId);
91
+ if (existingAgentId !== undefined && existingAgentId !== agentId) {
92
+ throw new Error(`Conversation '${conversationId}' belongs to another agent`);
93
+ }
94
+ assertAnalyticsScalar(value);
95
+ const values = conversations.get(conversationId) ?? new Map();
96
+ values.set(fieldName, value);
97
+ conversations.set(conversationId, values);
98
+ conversationAgents.set(conversationId, agentId);
99
+ },
100
+ async clear(conversationId, agentId, fieldName) {
101
+ if (conversationAgents.get(conversationId) !== agentId) {
102
+ return;
103
+ }
104
+ const values = conversations.get(conversationId);
105
+ values?.delete(fieldName);
106
+ if (values?.size === 0) {
107
+ conversations.delete(conversationId);
108
+ }
109
+ },
110
+ async get(conversationId, agentId, fieldName) {
111
+ if (conversationAgents.get(conversationId) !== agentId) {
112
+ return undefined;
113
+ }
114
+ return conversations.get(conversationId)?.get(fieldName);
115
+ },
116
+ async getSummary(conversationId, agentId) {
117
+ const summary = summariesById.get(conversationId);
118
+ return summary?.agentId === agentId ? structuredClone(summary) : undefined;
58
119
  },
59
120
  };
60
121
  }
61
- export function assertAnalyticsJsonValue(value) {
62
- if (value === null ||
63
- typeof value === 'boolean' ||
122
+ function assertAnalyticsScalar(value) {
123
+ if (typeof value === 'boolean' ||
64
124
  typeof value === 'string' ||
65
125
  (typeof value === 'number' && Number.isFinite(value))) {
66
126
  return;
67
127
  }
68
- if (Array.isArray(value)) {
69
- value.forEach(assertAnalyticsJsonValue);
70
- return;
71
- }
72
- if (typeof value === 'object' && Object.getPrototypeOf(value) === Object.prototype) {
73
- Object.values(value).forEach(assertAnalyticsJsonValue);
74
- return;
75
- }
76
- throw new Error('Analytics value must be valid JSON');
128
+ throw new Error('Analytics value must be a boolean, finite number, or string');
77
129
  }
@@ -1,4 +1,8 @@
1
- export function createInMemoryCache() {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createInMemoryCache = createInMemoryCache;
4
+ exports.createRedisCache = createRedisCache;
5
+ function createInMemoryCache() {
2
6
  const cache = new Map();
3
7
  async function getContext(callId, defaultContext) {
4
8
  if (cache.has(callId)) {
@@ -21,7 +25,7 @@ export function createInMemoryCache() {
21
25
  },
22
26
  };
23
27
  }
24
- export function createRedisCache(client, options = DEFAULT_REDIS_CACHE_OPTIONS) {
28
+ function createRedisCache(client, options = DEFAULT_REDIS_CACHE_OPTIONS) {
25
29
  function createKey(callId) {
26
30
  return options.keyPrefix + callId;
27
31
  }
package/build/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export * from './interfaces/platform.js';
2
- export * from './interfaces/rc-voice.js';
3
- export * from './context-cache.js';
4
- export * from './analytics.js';
5
- export * from './timeouts-manager.js';
1
+ export * from './interfaces/platform';
2
+ export * from './interfaces/rc-voice';
3
+ export * from './context-cache';
4
+ export * from './analytics';
5
+ export * from './postgres-analytics';
6
+ export * from './postgres-analytics-query';
7
+ export * from './timeouts-manager';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA"}
package/build/index.js CHANGED
@@ -1,5 +1,23 @@
1
- export * from './interfaces/platform.js';
2
- export * from './interfaces/rc-voice.js';
3
- export * from './context-cache.js';
4
- export * from './analytics.js';
5
- export * from './timeouts-manager.js';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./interfaces/platform"), exports);
18
+ __exportStar(require("./interfaces/rc-voice"), exports);
19
+ __exportStar(require("./context-cache"), exports);
20
+ __exportStar(require("./analytics"), exports);
21
+ __exportStar(require("./postgres-analytics"), exports);
22
+ __exportStar(require("./postgres-analytics-query"), exports);
23
+ __exportStar(require("./timeouts-manager"), exports);
@@ -1,41 +1,60 @@
1
1
  import { ReadableStream } from 'node:stream/web';
2
2
  import { AIEngine, AIStreamEngine, LlmAdapter, LlmStreamAdapter, Logger, Message, PromptFS, ResponseChunk } from '@recombine-ai/engine';
3
- import { Analytics } from '../analytics.js';
4
- import { ContextCache } from '../context-cache.js';
5
- import { TimeoutManager } from '../timeouts-manager.js';
6
- import { IRcVoice } from './rc-voice.js';
3
+ import { AgentAnalytics, AnalyticsFieldDefinitions, AnalyticsStore } from '../analytics';
4
+ import { ContextCache } from '../context-cache';
5
+ import { TimeoutManager } from '../timeouts-manager';
6
+ import { IRcVoice } from './rc-voice';
7
7
  export interface IModels {
8
8
  models: Record<string, LlmAdapter>;
9
9
  streamingModels: Record<string, LlmStreamAdapter>;
10
10
  }
11
- export interface Platform<TContext extends {}, TModels extends IModels> {
11
+ export interface Platform<TContext extends {}, TModels extends IModels, TRcVoice = IRcVoice, TTimeoutManager = TimeoutManager, TContextCache = ContextCache<TContext>> {
12
12
  streamAi: AIStreamEngine<TContext>;
13
13
  ai: AIEngine<TContext>;
14
14
  fs: PromptFS;
15
- rcVoice: IRcVoice;
15
+ rcVoice: TRcVoice;
16
16
  logger: Logger;
17
- timeoutManager: TimeoutManager;
17
+ timeoutManager: TTimeoutManager;
18
18
  models: TModels['models'];
19
19
  streamingModels: TModels['streamingModels'];
20
- contextCache: ContextCache<TContext>;
21
- analytics: Analytics;
20
+ contextCache: TContextCache;
21
+ analytics: AnalyticsStore;
22
22
  }
23
23
  export interface CallInfo {
24
24
  callId: string;
25
25
  phoneNumber?: string;
26
26
  headers: Record<string, unknown>;
27
27
  }
28
+ export type VoiceSettings = Record<string, string | number | boolean | number[]>;
28
29
  export interface VoiceAgent {
29
30
  onCallStart: (call: CallInfo) => Promise<{
30
31
  initialMessage: string;
31
- initialSettings?: Record<string, string | number>;
32
+ initialSettings?: VoiceSettings;
32
33
  }>;
33
34
  onCallReady: (call: CallInfo) => Promise<void>;
34
35
  streamResponse: (messages: Message[], call: CallInfo) => Promise<ReadableStream<ResponseChunk>>;
35
- onCallEnd: (call: CallInfo) => Promise<void>;
36
+ onCallEnd: (call: CallInfo, completedConversation?: Message[]) => Promise<void>;
36
37
  onAgentSpeechDone: (messages: Message[], call: CallInfo) => Promise<void>;
37
38
  onServiceStartup: () => Promise<void>;
38
39
  onFatalError: (callId: string, err: any) => Promise<void>;
39
40
  }
40
- export declare function createAgent<TContext extends {}, TServices, TModels extends IModels>(creator: (platform: Platform<TContext, TModels>, services: TServices) => VoiceAgent): (platform: Platform<TContext, TModels>, services: TServices) => VoiceAgent;
41
+ export type AgentPlatform<TPlatform extends {
42
+ analytics: AnalyticsStore;
43
+ }, TFields extends AnalyticsFieldDefinitions> = Omit<TPlatform, 'analytics'> & {
44
+ analytics: AgentAnalytics<TFields>;
45
+ };
46
+ type ComposedPlatform<TContext extends object, TModels extends IModels> = Platform<TContext, TModels, unknown, unknown, unknown>;
47
+ export interface AgentDefinition<TFields extends AnalyticsFieldDefinitions> {
48
+ readonly agentId: string;
49
+ readonly analytics: Readonly<TFields>;
50
+ }
51
+ export interface AgentDeclaration<TContext extends object, TServices, TModels extends IModels, TFields extends AnalyticsFieldDefinitions, TPlatform extends ComposedPlatform<TContext, TModels> = Platform<TContext, TModels>> extends AgentDefinition<TFields> {
52
+ create: (platform: AgentPlatform<TPlatform, TFields>, services: TServices) => VoiceAgent;
53
+ }
54
+ export interface AgentCreator<TContext extends object, TServices, TModels extends IModels, TFields extends AnalyticsFieldDefinitions, TPlatform extends ComposedPlatform<TContext, TModels> = Platform<TContext, TModels>> {
55
+ (platform: TPlatform, services: TServices): VoiceAgent;
56
+ readonly definition: AgentDefinition<TFields>;
57
+ }
58
+ export declare function createAgent<TContext extends object, TServices, TModels extends IModels, const TFields extends AnalyticsFieldDefinitions, TPlatform extends ComposedPlatform<TContext, TModels> = Platform<TContext, TModels>>(declaration: AgentDeclaration<TContext, TServices, TModels, TFields, TPlatform>): AgentCreator<TContext, TServices, TModels, TFields, TPlatform>;
59
+ export {};
41
60
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/interfaces/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACH,QAAQ,EACR,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,aAAa,EAChB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,WAAW,OAAO;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAClC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CACpD;AAED,MAAM,WAAW,QAAQ,CAAC,QAAQ,SAAS,EAAE,EAAE,OAAO,SAAS,OAAO;IAElE,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IAElC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEtB,EAAE,EAAE,QAAQ,CAAA;IAEZ,OAAO,EAAE,QAAQ,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAE9B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzB,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAE3C,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEpC,SAAS,EAAE,SAAS,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;QACrC,cAAc,EAAE,MAAM,CAAA;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;KACpD,CAAC,CAAA;IACF,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/F,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D;AAED,wBAAgB,WAAW,CAAC,QAAQ,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,SAAS,OAAO,EAC/E,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,KAAK,UAAU,cAA/D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,SAAS,KAAK,UAAU,CAGtF"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/interfaces/platform.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,21 @@
1
- export function createAgent(creator) {
2
- return creator;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAgent = createAgent;
4
+ const analytics_1 = require("../analytics");
5
+ function createAgent(declaration) {
6
+ const { agentId, create } = declaration;
7
+ const analytics = Object.freeze({ ...declaration.analytics });
8
+ (0, analytics_1.validateAgentAnalytics)(agentId, analytics);
9
+ const creator = (platform, services) => {
10
+ const agentPlatform = {
11
+ ...platform,
12
+ analytics: (0, analytics_1.createAgentAnalytics)(platform.analytics, agentId, analytics),
13
+ };
14
+ return create(agentPlatform, services);
15
+ };
16
+ const definition = Object.freeze({ agentId, analytics });
17
+ return Object.defineProperty(creator, 'definition', {
18
+ enumerable: true,
19
+ value: definition,
20
+ });
3
21
  }
@@ -1 +1,2 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,87 @@
1
+ import { PoolConfig, QueryResult } from 'pg';
2
+ import { AnalyticsScalar } from './analytics';
3
+ export type AnalyticsFilterScalar = boolean | number | string;
4
+ export type AnalyticsFilterValueType = 'boolean' | 'number' | 'string';
5
+ export type AnalyticsFilterOperator = 'eq' | 'exists' | 'gt' | 'gte' | 'in' | 'lt' | 'lte';
6
+ export interface AnalyticsFilter {
7
+ key: string;
8
+ type: AnalyticsFilterValueType;
9
+ operator: AnalyticsFilterOperator;
10
+ value?: AnalyticsFilterScalar;
11
+ values?: AnalyticsFilterScalar[];
12
+ }
13
+ export type AnalyticsMetric = {
14
+ operation: 'count';
15
+ } | {
16
+ operation: 'rate';
17
+ filter: AnalyticsFilter;
18
+ } | {
19
+ operation: 'average' | 'sum';
20
+ key: string;
21
+ };
22
+ export type AnalyticsTimeGranularity = 'hour' | 'day' | 'week' | 'month';
23
+ export type AnalyticsQueryParameters = Readonly<Record<string, unknown>>;
24
+ export interface TelescopeConversation {
25
+ conversationId: string;
26
+ medium: string;
27
+ agentId: string;
28
+ region?: string;
29
+ phoneNumber?: string;
30
+ duration?: number;
31
+ audioUrl?: string;
32
+ createdAt: number;
33
+ endedAt?: number;
34
+ analytics: Record<string, AnalyticsScalar>;
35
+ }
36
+ export interface TelescopeConversationPage {
37
+ limit: number;
38
+ items: TelescopeConversation[];
39
+ lastConversationId?: string;
40
+ }
41
+ export interface AnalyticsFieldValue {
42
+ value: AnalyticsFilterScalar;
43
+ count: number;
44
+ }
45
+ export interface AnalyticsFieldMetadata {
46
+ key: string;
47
+ type: AnalyticsFilterValueType;
48
+ variantCount: number;
49
+ values: AnalyticsFieldValue[];
50
+ }
51
+ export interface AnalyticsFields {
52
+ items: AnalyticsFieldMetadata[];
53
+ }
54
+ export interface AnalyticsTimeSeriesItem {
55
+ startAt: string;
56
+ value: number | null;
57
+ numerator?: number;
58
+ denominator?: number;
59
+ }
60
+ export interface AnalyticsTimeSeries {
61
+ metric: AnalyticsMetric;
62
+ granularity: AnalyticsTimeGranularity;
63
+ from: string;
64
+ to: string;
65
+ items: AnalyticsTimeSeriesItem[];
66
+ }
67
+ interface Queryable {
68
+ query<TResult extends Record<string, unknown> = Record<string, unknown>>(text: string, values?: unknown[]): Promise<QueryResult<TResult>>;
69
+ }
70
+ export declare class AnalyticsQueryError extends Error {
71
+ name: string;
72
+ }
73
+ export declare class PostgresAnalyticsQueryService {
74
+ private readonly database;
75
+ constructor(database: Queryable);
76
+ getConversation(conversationId: string): Promise<TelescopeConversation | undefined>;
77
+ getConversations(query: AnalyticsQueryParameters): Promise<TelescopeConversationPage>;
78
+ getAnalyticsFields(query: AnalyticsQueryParameters): Promise<AnalyticsFields>;
79
+ getTimeSeries(query: AnalyticsQueryParameters): Promise<AnalyticsTimeSeries>;
80
+ }
81
+ export interface PostgresAnalyticsQueryServices {
82
+ queries: PostgresAnalyticsQueryService;
83
+ close(): Promise<void>;
84
+ }
85
+ export declare function createPostgresAnalyticsQueryServices(config: PoolConfig): PostgresAnalyticsQueryServices;
86
+ export {};
87
+ //# sourceMappingURL=postgres-analytics-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-analytics-query.d.ts","sourceRoot":"","sources":["../src/postgres-analytics-query.ts"],"names":[],"mappings":"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"}