@courseecho/ai-core-sdk 1.0.17 → 1.0.19

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.
@@ -116,4 +116,3 @@ export declare class AiSuggestionGenerator {
116
116
  */
117
117
  getTier(): string;
118
118
  }
119
- //# sourceMappingURL=auto-suggestion-generator.d.ts.map
@@ -536,4 +536,3 @@ export class AiSuggestionGenerator {
536
536
  return this.config.tier || 'free';
537
537
  }
538
538
  }
539
- //# sourceMappingURL=auto-suggestion-generator.js.map
@@ -45,4 +45,3 @@ export declare class ApiError extends Error {
45
45
  isBadRequest(): boolean;
46
46
  isServerError(): boolean;
47
47
  }
48
- //# sourceMappingURL=communication-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"communication-service.d.ts","sourceRoot":"","sources":["../src/communication-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EAIhB,MAAM,UAAU,CAAC;AAElB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAQhD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAgDlE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,UAAU,EAAE,MAAM;IAClB,YAAY,CAAC,EAAE,GAAG;gBAFzB,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,GAAG,YAAA;IAM3B,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,YAAY,IAAI,OAAO;IAIvB,aAAa,IAAI,OAAO;CAGzB"}
1
+ {"version":3,"file":"communication-service.d.ts","sourceRoot":"","sources":["../src/communication-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EAIhB,MAAM,UAAU,CAAC;AASlB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAQhD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAiDlE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,UAAU,EAAE,MAAM;IAClB,YAAY,CAAC,EAAE,GAAG;gBAFzB,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,GAAG,YAAA;IAM3B,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAIzB,YAAY,IAAI,OAAO;IAIvB,aAAa,IAAI,OAAO;CAGzB"}
@@ -2,6 +2,18 @@
2
2
  * AI Widget SDK - Core Communication Service
3
3
  * Handle HTTP requests to backend API
4
4
  */
5
+ /** Safely parse a Response body as JSON — returns null for empty/non-JSON bodies instead of throwing. */
6
+ async function safeJson(res) {
7
+ const text = await res.text();
8
+ if (!text || !text.trim())
9
+ return null;
10
+ try {
11
+ return JSON.parse(text);
12
+ }
13
+ catch {
14
+ return null;
15
+ }
16
+ }
5
17
  export class AiCommunicationService {
6
18
  constructor(apiEndpoint, apiKey) {
7
19
  if (!apiEndpoint) {
@@ -51,10 +63,12 @@ export class AiCommunicationService {
51
63
  body: JSON.stringify(request),
52
64
  });
53
65
  if (!response.ok) {
54
- const errorData = await response.json();
55
- throw new ApiError(errorData.message || `HTTP ${response.status}`, response.status, errorData);
66
+ const errorData = await safeJson(response);
67
+ throw new ApiError(errorData?.message || `HTTP ${response.status}`, response.status, errorData);
56
68
  }
57
- const data = (await response.json());
69
+ const data = (await safeJson(response));
70
+ if (!data)
71
+ throw new ApiError('Empty response from server', 500);
58
72
  // Ensure timestamp is a Date object
59
73
  data.timestamp = new Date(data.timestamp);
60
74
  return data;
@@ -108,4 +122,3 @@ export class ApiError extends Error {
108
122
  return this.statusCode >= 500;
109
123
  }
110
124
  }
111
- //# sourceMappingURL=communication-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"communication-service.js","sourceRoot":"","sources":["../src/communication-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"communication-service.js","sourceRoot":"","sources":["../src/communication-service.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,4 +8,3 @@ export { ChatStateManager, ContextStateManager, ChartManager, SuggestionManager,
8
8
  export { PageContentScanner, AiSuggestionGenerator, type PageContent, } from './auto-suggestion-generator';
9
9
  export { AiWidgetSDK } from './sdk';
10
10
  export type { StateListener } from './state-manager';
11
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -11,4 +11,3 @@ export { ChatStateManager, ContextStateManager, ChartManager, SuggestionManager,
11
11
  export { PageContentScanner, AiSuggestionGenerator, } from './auto-suggestion-generator';
12
12
  // Main SDK
13
13
  export { AiWidgetSDK } from './sdk';
14
- //# sourceMappingURL=index.js.map
package/dist/models.d.ts CHANGED
@@ -135,4 +135,3 @@ export interface SuggestionConfig {
135
135
  pageScanning?: PageScanConfig;
136
136
  aiConfig?: AiSuggestionGeneratorConfig;
137
137
  }
138
- //# sourceMappingURL=models.d.ts.map
package/dist/models.js CHANGED
@@ -3,4 +3,3 @@
3
3
  * Framework-agnostic type definitions used across all implementations
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=models.js.map
package/dist/sdk.d.ts CHANGED
@@ -164,4 +164,3 @@ export declare class AiWidgetSDK {
164
164
  */
165
165
  private getErrorMessage;
166
166
  }
167
- //# sourceMappingURL=sdk.d.ts.map
package/dist/sdk.js CHANGED
@@ -385,4 +385,3 @@ export class AiWidgetSDK {
385
385
  return String(error);
386
386
  }
387
387
  }
388
- //# sourceMappingURL=sdk.js.map
@@ -198,4 +198,3 @@ export declare class SuggestionManager {
198
198
  updateConfig(config: Partial<SuggestionConfig>): void;
199
199
  private notifySuggestionListeners;
200
200
  }
201
- //# sourceMappingURL=state-manager.d.ts.map
@@ -366,4 +366,3 @@ export class SuggestionManager {
366
366
  this.suggestionListeners.forEach((listener) => listener(this.getSuggestions()));
367
367
  }
368
368
  }
369
- //# sourceMappingURL=state-manager.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@courseecho/ai-core-sdk",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "Framework-agnostic core AI chat SDK. Shared logic for all framework wrappers.",
5
5
  "license": "MIT",
6
6
  "author": "CourseEcho",
@@ -17,22 +17,14 @@
17
17
  "files": ["dist"],
18
18
  "scripts": {
19
19
  "build": "tsc",
20
- "dev": "tsc --watch",
21
- "test": "jest",
22
- "lint": "eslint src/**/*.ts"
20
+ "dev": "tsc --watch"
23
21
  },
24
22
  "dependencies": {
25
23
  "rxjs": "^7.8.0"
26
24
  },
27
- "keywords": ["ai", "courseecho", "chatbot", "sdk", "widget", "chat", "ai-assistant"],
25
+ "keywords": ["ai", "courseecho", "chatbot", "sdk", "widget", "chat"],
28
26
  "devDependencies": {
29
27
  "typescript": "^5.3.0",
30
- "@types/node": "^20.0.0",
31
- "jest": "^29.0.0",
32
- "@types/jest": "^29.0.0",
33
- "ts-jest": "^29.0.0",
34
- "eslint": "^8.0.0",
35
- "@typescript-eslint/parser": "^6.0.0",
36
- "@typescript-eslint/eslint-plugin": "^6.0.0"
28
+ "@types/node": "^20.0.0"
37
29
  }
38
30
  }