@autoscriber/core 0.1.0

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 (42) hide show
  1. package/README.md +147 -0
  2. package/dist/audio/audio-manager.d.ts +27 -0
  3. package/dist/audio/audio-manager.d.ts.map +1 -0
  4. package/dist/audio/permissions.d.ts +8 -0
  5. package/dist/audio/permissions.d.ts.map +1 -0
  6. package/dist/audio/resampler.d.ts +5 -0
  7. package/dist/audio/resampler.d.ts.map +1 -0
  8. package/dist/audio/silence-detector.d.ts +16 -0
  9. package/dist/audio/silence-detector.d.ts.map +1 -0
  10. package/dist/audio/wake-lock.d.ts +29 -0
  11. package/dist/audio/wake-lock.d.ts.map +1 -0
  12. package/dist/audio/worklets.d.ts +3 -0
  13. package/dist/audio/worklets.d.ts.map +1 -0
  14. package/dist/core/assistant-client.d.ts +78 -0
  15. package/dist/core/assistant-client.d.ts.map +1 -0
  16. package/dist/core/message-store.d.ts +28 -0
  17. package/dist/core/message-store.d.ts.map +1 -0
  18. package/dist/core/offline-queue.d.ts +9 -0
  19. package/dist/core/offline-queue.d.ts.map +1 -0
  20. package/dist/core/websocket-client.d.ts +31 -0
  21. package/dist/core/websocket-client.d.ts.map +1 -0
  22. package/dist/headless/create-assistant.d.ts +9 -0
  23. package/dist/headless/create-assistant.d.ts.map +1 -0
  24. package/dist/index.cjs +2005 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +1977 -0
  28. package/dist/types/index.d.ts +103 -0
  29. package/dist/types/index.d.ts.map +1 -0
  30. package/dist/utils/base64.d.ts +3 -0
  31. package/dist/utils/base64.d.ts.map +1 -0
  32. package/dist/utils/event-bus.d.ts +11 -0
  33. package/dist/utils/event-bus.d.ts.map +1 -0
  34. package/dist/utils/i18n.d.ts +5 -0
  35. package/dist/utils/i18n.d.ts.map +1 -0
  36. package/dist/utils/id.d.ts +2 -0
  37. package/dist/utils/id.d.ts.map +1 -0
  38. package/dist/utils/logger.d.ts +8 -0
  39. package/dist/utils/logger.d.ts.map +1 -0
  40. package/dist/utils/token.d.ts +4 -0
  41. package/dist/utils/token.d.ts.map +1 -0
  42. package/package.json +60 -0
@@ -0,0 +1,103 @@
1
+ export type SupportedLanguage = "en" | "nl" | "de";
2
+ export type RecordingMode = "idle" | "transcription" | "voice_command";
3
+ export interface AssistantMessage {
4
+ id: string;
5
+ request?: string | null;
6
+ partialResults: string[];
7
+ result: MessageResult | null;
8
+ errorMessage?: string;
9
+ metadata?: Record<string, unknown>;
10
+ type: "chat" | "transcription" | "voice" | "fhir" | "questionnaire";
11
+ }
12
+ export type MessageResult = MessageResultItem[] | string | {
13
+ [key: string]: unknown;
14
+ } | null;
15
+ export interface MessageResultItem {
16
+ mediaType: string;
17
+ data: unknown;
18
+ }
19
+ export type ConnectionReason = "offline" | "manual" | "error" | "closed" | "reconnecting";
20
+ export interface InteractionPill {
21
+ id: string;
22
+ label: string;
23
+ type: "info" | "transcription" | "voice" | "fhir" | "questionnaire";
24
+ status: "pending" | "success" | "error";
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ export interface ConnectionState {
28
+ websocketStatus: "idle" | "connecting" | "open" | "closing" | "closed";
29
+ online: boolean;
30
+ buffering: boolean;
31
+ reason?: ConnectionReason;
32
+ lastError?: string;
33
+ }
34
+ export interface MicrophoneInfo {
35
+ deviceId: string;
36
+ label: string;
37
+ groupId?: string;
38
+ }
39
+ export interface MicrophoneState {
40
+ available: MicrophoneInfo[];
41
+ selected?: MicrophoneInfo;
42
+ permission: "unknown" | "granted" | "denied" | "prompt";
43
+ }
44
+ export interface RecordingState {
45
+ mode: RecordingMode;
46
+ transcriptionId: string | null;
47
+ isRecording: boolean;
48
+ isPaused: boolean;
49
+ bufferedChunks: number;
50
+ wasTranscriptionActive: boolean;
51
+ transcriptionPausedState: boolean;
52
+ }
53
+ export interface AssistantSnapshot {
54
+ language: SupportedLanguage;
55
+ debugMode: boolean;
56
+ messages: AssistantMessage[];
57
+ interactions: InteractionPill[];
58
+ connection: ConnectionState;
59
+ microphones: MicrophoneState;
60
+ recording: RecordingState;
61
+ offlineQueueLength: number;
62
+ lastUpdatedAt: number;
63
+ }
64
+ export interface AssistantOptions {
65
+ token: string;
66
+ language?: SupportedLanguage;
67
+ refreshToken?: (sessionId: string) => Promise<string | null | undefined>;
68
+ debugMode?: boolean;
69
+ logger?: Partial<Console>;
70
+ websocketUrl?: string;
71
+ websocketReconnectDelay?: number;
72
+ targetSampleRate?: number;
73
+ onLog?: (level: "info" | "warn" | "error", message: string, metadata?: Record<string, unknown>) => void;
74
+ }
75
+ export interface SendMessagePayload {
76
+ mediaType: string;
77
+ data: unknown;
78
+ isFinal?: boolean;
79
+ }
80
+ export interface VoiceCommandResult {
81
+ transcriptionId: string | null;
82
+ finalText?: string;
83
+ }
84
+ export interface EventListener<TEvent> {
85
+ (event: TEvent): void;
86
+ }
87
+ export interface AssistantEvents {
88
+ snapshot: AssistantSnapshot;
89
+ "messages:updated": AssistantMessage[];
90
+ "interactions:updated": InteractionPill[];
91
+ "connection:changed": ConnectionState;
92
+ "recording:changed": RecordingState;
93
+ "microphones:changed": MicrophoneState;
94
+ "voice:transcription": VoiceCommandResult;
95
+ "fhir:data": unknown;
96
+ "language:changed": SupportedLanguage;
97
+ error: {
98
+ code?: string | number;
99
+ message: string;
100
+ };
101
+ [event: string]: unknown;
102
+ }
103
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function arrayBufferToBase64(buffer: ArrayBufferLike): string;
2
+ export declare function base64ToArray(base64: string): ArrayBuffer;
3
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAQnE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAQzD"}
@@ -0,0 +1,11 @@
1
+ type Listener<T> = (payload: T) => void;
2
+ export declare class EventBus<TEvents extends Record<string, unknown>> {
3
+ private listeners;
4
+ on<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): () => void;
5
+ once<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): () => void;
6
+ off<K extends keyof TEvents>(event: K, listener: Listener<TEvents[K]>): void;
7
+ emit<K extends keyof TEvents>(event: K, payload: TEvents[K]): void;
8
+ clear(): void;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/utils/event-bus.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAExC,qBAAa,QAAQ,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,OAAO,CAAC,SAAS,CACL;IAEZ,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAOjF,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAQnF,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAS5E,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAYlE,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,5 @@
1
+ import type { SupportedLanguage } from "../types";
2
+ export declare function translate(language: SupportedLanguage, key: string, params?: Record<string, string | number>): string;
3
+ export declare function validateLanguage(lang?: string): SupportedLanguage;
4
+ export declare function getTranslations(language: SupportedLanguage): Record<string, string>;
5
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA8GlD,wBAAgB,SAAS,CACvB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAC3C,MAAM,CASR;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CASjE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnF"}
@@ -0,0 +1,2 @@
1
+ export declare function generateMessageId(): string;
2
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -0,0 +1,8 @@
1
+ export interface LoggerLike {
2
+ debug: (...args: unknown[]) => void;
3
+ info: (...args: unknown[]) => void;
4
+ warn: (...args: unknown[]) => void;
5
+ error: (...args: unknown[]) => void;
6
+ }
7
+ export declare function createLogger(overrides?: Partial<Console>): LoggerLike;
8
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAMD,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,UAAU,CAOrE"}
@@ -0,0 +1,4 @@
1
+ export declare function decodeJwtPayload(token: string): Record<string, unknown> | null;
2
+ export declare function getSessionIdFromToken(token: string): string | null;
3
+ export declare function isTokenExpiredOrExpiring(token: string, secondsBuffer?: number): boolean;
4
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAY9E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,SAAK,GAAG,OAAO,CAQnF"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@autoscriber/core",
3
+ "version": "0.1.0",
4
+ "description": "Headless Autoscriber Assistant SDK for web applications.",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "autoscriber",
8
+ "assistant",
9
+ "sdk",
10
+ "transcription",
11
+ "voice"
12
+ ],
13
+ "author": "Autoscriber",
14
+ "authorUrl": "https://autoscriber.com",
15
+ "authorEmail": "support@autoscriber.com",
16
+ "authorWebsite": "https://autoscriber.com",
17
+ "type": "module",
18
+ "main": "dist/index.cjs",
19
+ "module": "dist/index.js",
20
+ "types": "dist/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "import": "./dist/index.js",
25
+ "require": "./dist/index.cjs"
26
+ }
27
+ },
28
+ "typesVersions": {
29
+ "*": {
30
+ "*": ["./dist/index.d.ts"]
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "sideEffects": false,
40
+ "scripts": {
41
+ "build": "tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.json --emitDeclarationOnly",
42
+ "dev": "tsup src/index.ts --watch --format esm,cjs",
43
+ "lint": "eslint \"src/**/*.{ts,tsx}\"",
44
+ "test": "vitest run",
45
+ "typecheck": "tsc --project tsconfig.json --noEmit"
46
+ },
47
+ "dependencies": {
48
+ "tslib": "^2.6.2"
49
+ },
50
+ "devDependencies": {
51
+ "@types/web": "^0.0.147",
52
+ "eslint": "^8.57.0",
53
+ "typescript": "~5.4.0",
54
+ "tsup": "^7.2.0",
55
+ "vitest": "^1.5.0"
56
+ },
57
+ "peerDependencies": {
58
+ "typescript": ">=5.2.0"
59
+ }
60
+ }