@aiqa/sdk 0.0.2 → 0.0.3

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.
@@ -91,7 +91,7 @@ declare class AiQaSdk implements IAiqaSdk {
91
91
  startRecording(): Promise<boolean>;
92
92
  stopRecording(): Promise<boolean>;
93
93
  isRecordingNow(): Promise<boolean>;
94
- compareVersions(left: string, right: string): number;
94
+ private compareVersions;
95
95
  private emitInternal;
96
96
  private createRequestId;
97
97
  private isManagerEvent;
@@ -29,10 +29,11 @@ var IAiqaSdk = class {
29
29
  // package.json
30
30
  var package_default = {
31
31
  name: "@aiqa/sdk",
32
- version: "0.0.2",
32
+ version: "0.0.3",
33
33
  main: "dist/node/node.js",
34
34
  module: "dist/node/node.js",
35
35
  types: "dist/node/node.d.ts",
36
+ engines: { node: ">=18" },
36
37
  scripts: {
37
38
  build: "tsup",
38
39
  "dev:node": "tsx src/node.ts",
@@ -85,7 +86,7 @@ var package_default = {
85
86
  // src/shared.ts
86
87
  var SDK_VERSION = package_default.version ?? "0.0.1";
87
88
  var DEFAULT_URL = "ws://localhost:3025/ws";
88
- var DEFAULT_TIMEOUT_MS = 1e4;
89
+ var DEFAULT_TIMEOUT_MS = 6e4;
89
90
  var AiQaSdk = class {
90
91
  constructor(applicationId, applicationSecret, url) {
91
92
  this.socket = null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared.ts","../../src/types.ts","../../package.json"],"sourcesContent":["import { io, Socket } from \"socket.io-client\";\nimport { Methods, Application, ApplicationFact, ApplicationFactInput, FactIsMatched, SdkEvent, IAiqaSdk } from \"./types.js\";\n// @ts-ignore - compiled builds resolve this at build time\nimport pkg from \"../package.json\";\n\nconst SDK_VERSION = (pkg as { version?: string }).version ?? '0.0.1';\nconst DEFAULT_URL = 'ws://localhost:3025/ws';\nconst DEFAULT_TIMEOUT_MS = 10000;\n\nclass AiQaSdk implements IAiqaSdk {\n socket: Socket | null = null;\n url: string;\n applicationId: string;\n applicationSecretKey: string;\n cachedApplication?: Application;\n internalListeners: Map<SdkEvent, Set<(...args: any[]) => void>>;\n internalEvents: Set<SdkEvent>;\n\n constructor(applicationId: string, applicationSecret: string, url?: string) {\n this.url = url ?? DEFAULT_URL;\n this.internalListeners = new Map();\n this.internalEvents = new Set(['authenticated']);\n\n if (applicationId && applicationSecret) {\n this.applicationId = applicationId;\n this.applicationSecretKey = applicationSecret;\n } else {\n throw new Error('Application id and application secret are required');\n }\n }\n\n on(name: SdkEvent, callback: (...args: any[]) => any) {\n if (this.internalEvents.has(name)) {\n if (!this.internalListeners.has(name)) {\n this.internalListeners.set(name, new Set());\n }\n this.internalListeners.get(name)!.add(callback);\n return;\n }\n\n if (!this.socket) {\n throw new Error('Not connected');\n }\n\n if (this.isManagerEvent(name)) {\n this.socket.io.on(name, callback);\n } else {\n this.socket.on(name, callback);\n }\n }\n\n off(name: SdkEvent, callback?: (...args: any[]) => any) {\n if (this.internalEvents.has(name)) {\n if (!callback) {\n this.internalListeners.delete(name);\n return;\n }\n const handlers = this.internalListeners.get(name);\n if (handlers) {\n handlers.delete(callback);\n if (handlers.size === 0) {\n this.internalListeners.delete(name);\n }\n }\n return;\n }\n\n if (!this.socket) {\n throw new Error('Not connected');\n }\n\n if (this.isManagerEvent(name)) {\n this.socket.io.off(name, callback);\n } else {\n this.socket.off(name, callback);\n }\n }\n\n connect() {\n if (!this.url) {\n return;\n }\n\n const url = new URL(this.url);\n\n const socketOptions: any = {\n reconnectionDelayMax: 10000,\n path: url.pathname,\n };\n\n this.socket = io(url.origin, socketOptions);\n\n this.socket.on('connect', () => {\n this.authenticate();\n });\n\n this.socket.on('app_version', (payload: any) => {\n let versionRange = payload;\n if (typeof payload === 'string') {\n try {\n versionRange = JSON.parse(payload);\n } catch (error) {\n versionRange = payload;\n }\n }\n\n const minVersion = versionRange?.min;\n const maxVersion = versionRange?.max;\n\n if (minVersion || maxVersion) {\n const tooLow = minVersion ? this.compareVersions(SDK_VERSION, minVersion) < 0 : false;\n const tooHigh = maxVersion ? this.compareVersions(SDK_VERSION, maxVersion) > 0 : false;\n if (tooLow || tooHigh) {\n const error = new Error(\n `SDK version ${SDK_VERSION} is not supported. Supported range: ${minVersion || '-'} to ${maxVersion || '-'}.`\n );\n this.socket!.disconnect();\n this.socket!.emit('error', error);\n }\n }\n });\n }\n\n disconnect() {\n if (this.socket) {\n this.socket.disconnect();\n }\n }\n\n sendMessage(method: Methods, data?: any): Promise<any> {\n return new Promise((resolve, reject) => {\n if (!this.socket || !this.socket.connected) {\n reject(new Error('Socket is not connected'));\n return;\n }\n\n const requestId = this.createRequestId();\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const handler = (payload: any) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n this.socket!.off(requestId, handler);\n let parsed = payload;\n if (typeof payload === 'string') {\n try {\n parsed = JSON.parse(payload);\n } catch (error) {\n parsed = payload;\n }\n }\n\n if (parsed && parsed.error !== undefined) {\n reject(parsed.error);\n return;\n }\n\n resolve(parsed && parsed.data !== undefined ? parsed.data : parsed);\n };\n\n this.socket.on(requestId, handler);\n\n const payload = data && typeof data === 'object' ? { ...data, requestId } : { requestId, data };\n this.socket.emit(method, JSON.stringify(payload));\n\n timeout = setTimeout(() => {\n this.socket!.off(requestId, handler);\n reject(new Error(`Request timed out for ${method}`));\n }, DEFAULT_TIMEOUT_MS);\n });\n }\n\n async getApplication(): Promise<Application> {\n if (this.cachedApplication) {\n return this.cachedApplication;\n }\n throw new Error('Application is not available yet. Wait for authentication to complete.');\n }\n\n async getFacts(): Promise<ApplicationFact[]> {\n const result = await this.sendMessage(Methods.GET_FACTS);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async addFact(fact: ApplicationFactInput): Promise<FactIsMatched> {\n const payload = {\n ...fact,\n critical: fact.critical ?? false,\n is_skipped: fact.is_skipped ?? false\n };\n const result = await this.sendMessage(Methods.ADD_FACT, payload);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async authenticate(): Promise<void> {\n try {\n const result = await this.sendMessage(Methods.AUTHENTICATE, {\n applicationId: this.applicationId,\n applicationSecretKey: this.applicationSecretKey\n });\n\n const application = result && result.data !== undefined ? result.data : result;\n\n this.cachedApplication = application;\n\n this.emitInternal('authenticated', application);\n } catch (error) {\n this.socket!.emit('error', error);\n }\n }\n\n async startRecording(): Promise<boolean> {\n const result = await this.sendMessage(Methods.START_RECORDING);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async stopRecording(): Promise<boolean> {\n const result = await this.sendMessage(Methods.STOP_RECORDING);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async isRecordingNow(): Promise<boolean> {\n // @TODO: track it from the server, should be sent on successfull connect\n const result = await this.sendMessage(Methods.IS_RECORDING);\n return result && result.data !== undefined ? result.data : result;\n }\n\n compareVersions(left: string, right: string): number {\n const leftParts = left.split('.').map((part) => Number(part));\n const rightParts = right.split('.').map((part) => Number(part));\n const maxLength = Math.max(leftParts.length, rightParts.length);\n\n for (let i = 0; i < maxLength; i += 1) {\n const l = leftParts[i] ?? 0;\n const r = rightParts[i] ?? 0;\n if (l > r) {\n return 1;\n }\n if (l < r) {\n return -1;\n }\n }\n\n return 0;\n }\n\n private emitInternal(name: SdkEvent, ...args: any[]) {\n const handlers = this.internalListeners.get(name);\n if (!handlers) {\n return;\n }\n handlers.forEach((handler) => handler(...args));\n }\n\n private createRequestId() {\n return `req_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n }\n\n private isManagerEvent(name: SdkEvent) {\n return name === 'reconnect_attempt' || name === 'reconnect_error' || name === 'reconnect_failed' || name === 'error';\n }\n}\n\nexport default AiQaSdk;\n","export type Application = {\n application_id: string;\n client_name: string;\n client_phone_number: string;\n agent_id: string;\n agent_first_name: string;\n agent_last_name: string;\n}\n\nexport enum Methods {\n AUTHENTICATE = \"AUTHENTICATE\",\n GET_FACTS = \"GET_FACTS\",\n START_RECORDING = \"START_RECORDING\",\n STOP_RECORDING = \"STOP_RECORDING\",\n IS_RECORDING = \"IS_RECORDING\",\n ADD_FACT = \"ADD_FACT\"\n}\n\nexport type SdkEvent =\n | Methods\n | 'connect'\n | 'disconnect'\n | 'close'\n | 'error'\n | 'reconnect_attempt'\n | 'reconnect_error'\n | 'reconnect_failed'\n | 'authenticated'\n | 'app_version';\n\nexport enum FactAnswerFormatType {\n string = 'STRING',\n number = 'NUMBER',\n integer = 'INT',\n float = 'FLOAT',\n bool = 'BOOL',\n list = 'LIST',\n strict = 'STRICT',\n single_choice = 'SINGLE_CHOICE',\n multiple_choices = 'MULTIPLE_CHOICES',\n}\n\nexport type ApplicationFactAnswerChoice = {\n key: string;\n text: string;\n}\n\nexport type ApplicationFactAnswerFormat = {\n type: FactAnswerFormatType;\n choices?: ApplicationFactAnswerChoice[];\n}\n\nexport type ApplicationFactInput = {\n id: string;\n question: string;\n expected_answer: any;\n answer_format: ApplicationFactAnswerFormat;\n\n category_id?: string;\n category_name?: string;\n language?: string;\n\n critical?: boolean;\n is_skipped?: boolean;\n}\n\nexport type QuestionStatus = 'searching' | 'asked' | 'not_asked';\n\nexport type VerificationStatus = 'processing' | 'matched' | 'unmatched';\n\nexport type ApplicationFact = ApplicationFactInput & {\n ai_answer?: any;\n question_status: QuestionStatus;\n verification_status: VerificationStatus;\n}\n\nexport type FactIsMatched = boolean;\n\nexport type SdkError = {\n code:\n | 'INVALID_CONFIG'\n | 'CONNECTION_ERROR'\n | 'TIMEOUT'\n | 'SERVER_ERROR'\n | 'UNEXPECTED_RESPONSE';\n message: string;\n details?: any;\n}\n\n\nexport abstract class IAiqaSdk {\n abstract connect(): void;\n abstract disconnect(): void;\n\n abstract on(eventName: string, callback: (...args: any[]) => any): void;\n abstract off(eventName: string): void;\n\n abstract getApplication(): Promise<Application>;\n abstract addFact(fact: ApplicationFactInput): Promise<FactIsMatched>;\n abstract getFacts(): Promise<ApplicationFact[]>;\n}\n","{\n \"name\": \"@aiqa/sdk\",\n \"version\": \"0.0.2\",\n \"main\": \"dist/node/node.js\",\n \"module\": \"dist/node/node.js\",\n \"types\": \"dist/node/node.d.ts\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev:node\": \"tsx src/node.ts\",\n \"start:node\": \"node dist/node/node.js\",\n \"serve:browser\": \"serve .\",\n \"test\": \"jest\"\n },\n \"exports\": {\n \".\": {\n \"node\": {\n \"import\": \"./dist/node/node.js\",\n \"types\": \"./dist/node/node.d.ts\"\n },\n \"browser\": {\n \"import\": \"./dist/browser/browser.js\",\n \"types\": \"./dist/browser/browser.d.ts\"\n },\n \"default\": \"./dist/node/node.js\"\n }\n },\n \"private\": false,\n \"license\": \"MIT\",\n \"author\": \"AIQA\",\n \"description\": \"TypeScript/JavaScript SDK for interacting with the AIQA.\",\n \"keywords\": [\n \"aiqa\",\n \"sdk\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"devDependencies\": {\n \"@jest/globals\": \"^29.7.0\",\n \"esbuild\": \"^0.23.0\",\n \"jest\": \"^29.7.0\",\n \"socket.io\": \"^4.7.5\",\n \"ts-jest\": \"^29.2.3\",\n \"ts-node\": \"^10.9.2\",\n \"@types/node\": \"^22.0.0\",\n \"serve\": \"^14.2.3\",\n \"tsup\": \"^8.0.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.7.0\"\n },\n \"dependencies\": {\n \"socket.io-client\": \"^4.7.5\"\n }\n}"],"mappings":"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","names":["Methods","FactAnswerFormatType","payload"]}
1
+ {"version":3,"sources":["../../src/shared.ts","../../src/types.ts","../../package.json"],"sourcesContent":["import { io, Socket } from \"socket.io-client\";\nimport { Methods, Application, ApplicationFact, ApplicationFactInput, FactIsMatched, SdkEvent, IAiqaSdk } from \"./types.js\";\n// @ts-ignore - compiled builds resolve this at build time\nimport pkg from \"../package.json\";\n\nconst SDK_VERSION = (pkg as { version?: string }).version ?? '0.0.1';\nconst DEFAULT_URL = 'ws://localhost:3025/ws';\nconst DEFAULT_TIMEOUT_MS = 60000; // 1 minute\n\nclass AiQaSdk implements IAiqaSdk {\n socket: Socket | null = null;\n url: string;\n applicationId: string;\n applicationSecretKey: string;\n cachedApplication?: Application;\n internalListeners: Map<SdkEvent, Set<(...args: any[]) => void>>;\n internalEvents: Set<SdkEvent>;\n\n constructor(applicationId: string, applicationSecret: string, url?: string) {\n this.url = url ?? DEFAULT_URL;\n this.internalListeners = new Map();\n this.internalEvents = new Set(['authenticated']);\n\n if (applicationId && applicationSecret) {\n this.applicationId = applicationId;\n this.applicationSecretKey = applicationSecret;\n } else {\n throw new Error('Application id and application secret are required');\n }\n }\n\n on(name: SdkEvent, callback: (...args: any[]) => any) {\n if (this.internalEvents.has(name)) {\n if (!this.internalListeners.has(name)) {\n this.internalListeners.set(name, new Set());\n }\n this.internalListeners.get(name)!.add(callback);\n return;\n }\n\n if (!this.socket) {\n throw new Error('Not connected');\n }\n\n if (this.isManagerEvent(name)) {\n this.socket.io.on(name, callback);\n } else {\n this.socket.on(name, callback);\n }\n }\n\n off(name: SdkEvent, callback?: (...args: any[]) => any) {\n if (this.internalEvents.has(name)) {\n if (!callback) {\n this.internalListeners.delete(name);\n return;\n }\n const handlers = this.internalListeners.get(name);\n if (handlers) {\n handlers.delete(callback);\n if (handlers.size === 0) {\n this.internalListeners.delete(name);\n }\n }\n return;\n }\n\n if (!this.socket) {\n throw new Error('Not connected');\n }\n\n if (this.isManagerEvent(name)) {\n this.socket.io.off(name, callback);\n } else {\n this.socket.off(name, callback);\n }\n }\n\n connect() {\n if (!this.url) {\n return;\n }\n\n const url = new URL(this.url);\n\n const socketOptions: any = {\n reconnectionDelayMax: 10000,\n path: url.pathname,\n };\n\n this.socket = io(url.origin, socketOptions);\n\n this.socket.on('connect', () => {\n this.authenticate();\n });\n\n this.socket.on('app_version', (payload: any) => {\n let versionRange = payload;\n if (typeof payload === 'string') {\n try {\n versionRange = JSON.parse(payload);\n } catch (error) {\n versionRange = payload;\n }\n }\n\n const minVersion = versionRange?.min;\n const maxVersion = versionRange?.max;\n\n if (minVersion || maxVersion) {\n const tooLow = minVersion ? this.compareVersions(SDK_VERSION, minVersion) < 0 : false;\n const tooHigh = maxVersion ? this.compareVersions(SDK_VERSION, maxVersion) > 0 : false;\n if (tooLow || tooHigh) {\n const error = new Error(\n `SDK version ${SDK_VERSION} is not supported. Supported range: ${minVersion || '-'} to ${maxVersion || '-'}.`\n );\n this.socket!.disconnect();\n this.socket!.emit('error', error);\n }\n }\n });\n }\n\n disconnect() {\n if (this.socket) {\n this.socket.disconnect();\n }\n }\n\n sendMessage(method: Methods, data?: any): Promise<any> {\n return new Promise((resolve, reject) => {\n if (!this.socket || !this.socket.connected) {\n reject(new Error('Socket is not connected'));\n return;\n }\n\n const requestId = this.createRequestId();\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const handler = (payload: any) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n this.socket!.off(requestId, handler);\n let parsed = payload;\n if (typeof payload === 'string') {\n try {\n parsed = JSON.parse(payload);\n } catch (error) {\n parsed = payload;\n }\n }\n\n if (parsed && parsed.error !== undefined) {\n reject(parsed.error);\n return;\n }\n\n resolve(parsed && parsed.data !== undefined ? parsed.data : parsed);\n };\n\n this.socket.on(requestId, handler);\n\n const payload = data && typeof data === 'object' ? { ...data, requestId } : { requestId, data };\n this.socket.emit(method, JSON.stringify(payload));\n\n timeout = setTimeout(() => {\n this.socket!.off(requestId, handler);\n reject(new Error(`Request timed out for ${method}`));\n }, DEFAULT_TIMEOUT_MS);\n });\n }\n\n async getApplication(): Promise<Application> {\n if (this.cachedApplication) {\n return this.cachedApplication;\n }\n throw new Error('Application is not available yet. Wait for authentication to complete.');\n }\n\n async getFacts(): Promise<ApplicationFact[]> {\n const result = await this.sendMessage(Methods.GET_FACTS);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async addFact(fact: ApplicationFactInput): Promise<FactIsMatched> {\n const payload = {\n ...fact,\n critical: fact.critical ?? false,\n is_skipped: fact.is_skipped ?? false\n };\n const result = await this.sendMessage(Methods.ADD_FACT, payload);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async authenticate(): Promise<void> {\n try {\n const result = await this.sendMessage(Methods.AUTHENTICATE, {\n applicationId: this.applicationId,\n applicationSecretKey: this.applicationSecretKey\n });\n\n const application = result && result.data !== undefined ? result.data : result;\n\n this.cachedApplication = application;\n\n this.emitInternal('authenticated', application);\n } catch (error) {\n this.socket!.emit('error', error);\n }\n }\n\n async startRecording(): Promise<boolean> {\n const result = await this.sendMessage(Methods.START_RECORDING);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async stopRecording(): Promise<boolean> {\n const result = await this.sendMessage(Methods.STOP_RECORDING);\n return result && result.data !== undefined ? result.data : result;\n }\n\n async isRecordingNow(): Promise<boolean> {\n // @TODO: track it from the server, should be sent on successfull connect\n const result = await this.sendMessage(Methods.IS_RECORDING);\n return result && result.data !== undefined ? result.data : result;\n }\n\n private compareVersions(left: string, right: string): number {\n const leftParts = left.split('.').map((part) => Number(part));\n const rightParts = right.split('.').map((part) => Number(part));\n const maxLength = Math.max(leftParts.length, rightParts.length);\n\n for (let i = 0; i < maxLength; i += 1) {\n const l = leftParts[i] ?? 0;\n const r = rightParts[i] ?? 0;\n if (l > r) {\n return 1;\n }\n if (l < r) {\n return -1;\n }\n }\n\n return 0;\n }\n\n private emitInternal(name: SdkEvent, ...args: any[]) {\n const handlers = this.internalListeners.get(name);\n if (!handlers) {\n return;\n }\n handlers.forEach((handler) => handler(...args));\n }\n\n private createRequestId() {\n return `req_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n }\n\n private isManagerEvent(name: SdkEvent) {\n return name === 'reconnect_attempt' || name === 'reconnect_error' || name === 'reconnect_failed' || name === 'error';\n }\n}\n\nexport default AiQaSdk;\n","export type Application = {\n application_id: string;\n client_name: string;\n client_phone_number: string;\n agent_id: string;\n agent_first_name: string;\n agent_last_name: string;\n}\n\nexport enum Methods {\n AUTHENTICATE = \"AUTHENTICATE\",\n GET_FACTS = \"GET_FACTS\",\n START_RECORDING = \"START_RECORDING\",\n STOP_RECORDING = \"STOP_RECORDING\",\n IS_RECORDING = \"IS_RECORDING\",\n ADD_FACT = \"ADD_FACT\"\n}\n\nexport type SdkEvent =\n | Methods\n | 'connect'\n | 'disconnect'\n | 'close'\n | 'error'\n | 'reconnect_attempt'\n | 'reconnect_error'\n | 'reconnect_failed'\n | 'authenticated'\n | 'app_version';\n\nexport enum FactAnswerFormatType {\n string = 'STRING',\n number = 'NUMBER',\n integer = 'INT',\n float = 'FLOAT',\n bool = 'BOOL',\n list = 'LIST',\n strict = 'STRICT',\n single_choice = 'SINGLE_CHOICE',\n multiple_choices = 'MULTIPLE_CHOICES',\n}\n\nexport type ApplicationFactAnswerChoice = {\n key: string;\n text: string;\n}\n\nexport type ApplicationFactAnswerFormat = {\n type: FactAnswerFormatType;\n choices?: ApplicationFactAnswerChoice[];\n}\n\nexport type ApplicationFactInput = {\n id: string;\n question: string;\n expected_answer: any;\n answer_format: ApplicationFactAnswerFormat;\n\n category_id?: string;\n category_name?: string;\n language?: string;\n\n critical?: boolean;\n is_skipped?: boolean;\n}\n\nexport type QuestionStatus = 'searching' | 'asked' | 'not_asked';\n\nexport type VerificationStatus = 'processing' | 'matched' | 'unmatched';\n\nexport type ApplicationFact = ApplicationFactInput & {\n ai_answer?: any;\n question_status: QuestionStatus;\n verification_status: VerificationStatus;\n}\n\nexport type FactIsMatched = boolean;\n\nexport type SdkError = {\n code:\n | 'INVALID_CONFIG'\n | 'CONNECTION_ERROR'\n | 'TIMEOUT'\n | 'SERVER_ERROR'\n | 'UNEXPECTED_RESPONSE';\n message: string;\n details?: any;\n}\n\n\nexport abstract class IAiqaSdk {\n abstract connect(): void;\n abstract disconnect(): void;\n\n abstract on(eventName: string, callback: (...args: any[]) => any): void;\n abstract off(eventName: string): void;\n\n abstract getApplication(): Promise<Application>;\n abstract addFact(fact: ApplicationFactInput): Promise<FactIsMatched>;\n abstract getFacts(): Promise<ApplicationFact[]>;\n}\n","{\n \"name\": \"@aiqa/sdk\",\n \"version\": \"0.0.3\",\n \"main\": \"dist/node/node.js\",\n \"module\": \"dist/node/node.js\",\n \"types\": \"dist/node/node.d.ts\",\n \"engines\": { \"node\": \">=18\" },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev:node\": \"tsx src/node.ts\",\n \"start:node\": \"node dist/node/node.js\",\n \"serve:browser\": \"serve .\",\n \"test\": \"jest\"\n },\n \"exports\": {\n \".\": {\n \"node\": {\n \"import\": \"./dist/node/node.js\",\n \"types\": \"./dist/node/node.d.ts\"\n },\n \"browser\": {\n \"import\": \"./dist/browser/browser.js\",\n \"types\": \"./dist/browser/browser.d.ts\"\n },\n \"default\": \"./dist/node/node.js\"\n }\n },\n \"private\": false,\n \"license\": \"MIT\",\n \"author\": \"AIQA\",\n \"description\": \"TypeScript/JavaScript SDK for interacting with the AIQA.\",\n \"keywords\": [\n \"aiqa\",\n \"sdk\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"devDependencies\": {\n \"@jest/globals\": \"^29.7.0\",\n \"esbuild\": \"^0.23.0\",\n \"jest\": \"^29.7.0\",\n \"socket.io\": \"^4.7.5\",\n \"ts-jest\": \"^29.2.3\",\n \"ts-node\": \"^10.9.2\",\n \"@types/node\": \"^22.0.0\",\n \"serve\": \"^14.2.3\",\n \"tsup\": \"^8.0.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.7.0\"\n },\n \"dependencies\": {\n \"socket.io-client\": \"^4.7.5\"\n }\n}"],"mappings":"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","names":["Methods","FactAnswerFormatType","payload"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiqa/sdk",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "main": "dist/node/node.js",
5
5
  "module": "dist/node/node.js",
6
6
  "types": "dist/node/node.d.ts",