@pie-players/pie-assessment-toolkit 0.2.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 (194) hide show
  1. package/README.md +520 -0
  2. package/dist/attempt/TestSession.d.ts +90 -0
  3. package/dist/attempt/TestSession.d.ts.map +1 -0
  4. package/dist/attempt/TestSession.js +174 -0
  5. package/dist/attempt/TestSession.js.map +1 -0
  6. package/dist/core/TypedEventBus.d.ts +48 -0
  7. package/dist/core/TypedEventBus.d.ts.map +1 -0
  8. package/dist/core/TypedEventBus.js +63 -0
  9. package/dist/core/TypedEventBus.js.map +1 -0
  10. package/dist/index.d.ts +37 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +44 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/item-loader.d.ts +45 -0
  15. package/dist/item-loader.d.ts.map +1 -0
  16. package/dist/item-loader.js +62 -0
  17. package/dist/item-loader.js.map +1 -0
  18. package/dist/player/AssessmentPlayer.d.ts +388 -0
  19. package/dist/player/AssessmentPlayer.d.ts.map +1 -0
  20. package/dist/player/AssessmentPlayer.js +965 -0
  21. package/dist/player/AssessmentPlayer.js.map +1 -0
  22. package/dist/player/index.d.ts +17 -0
  23. package/dist/player/index.d.ts.map +1 -0
  24. package/dist/player/index.js +15 -0
  25. package/dist/player/index.js.map +1 -0
  26. package/dist/player/navigation-types.d.ts +63 -0
  27. package/dist/player/navigation-types.d.ts.map +1 -0
  28. package/dist/player/navigation-types.js +7 -0
  29. package/dist/player/navigation-types.js.map +1 -0
  30. package/dist/player/qti-navigation.d.ts +29 -0
  31. package/dist/player/qti-navigation.d.ts.map +1 -0
  32. package/dist/player/qti-navigation.js +160 -0
  33. package/dist/player/qti-navigation.js.map +1 -0
  34. package/dist/reference-layout/index.d.ts +19 -0
  35. package/dist/reference-layout/index.d.ts.map +1 -0
  36. package/dist/reference-layout/index.js +20 -0
  37. package/dist/reference-layout/index.js.map +1 -0
  38. package/dist/services/AccessibilityCatalogResolver.d.ts +141 -0
  39. package/dist/services/AccessibilityCatalogResolver.d.ts.map +1 -0
  40. package/dist/services/AccessibilityCatalogResolver.js +249 -0
  41. package/dist/services/AccessibilityCatalogResolver.js.map +1 -0
  42. package/dist/services/AssessmentAuthoringService.d.ts +60 -0
  43. package/dist/services/AssessmentAuthoringService.d.ts.map +1 -0
  44. package/dist/services/AssessmentAuthoringService.js +183 -0
  45. package/dist/services/AssessmentAuthoringService.js.map +1 -0
  46. package/dist/services/ContextVariableStore.d.ts +114 -0
  47. package/dist/services/ContextVariableStore.d.ts.map +1 -0
  48. package/dist/services/ContextVariableStore.js +207 -0
  49. package/dist/services/ContextVariableStore.js.map +1 -0
  50. package/dist/services/ElementToolStateStore.d.ts +125 -0
  51. package/dist/services/ElementToolStateStore.d.ts.map +1 -0
  52. package/dist/services/ElementToolStateStore.js +200 -0
  53. package/dist/services/ElementToolStateStore.js.map +1 -0
  54. package/dist/services/HighlightCoordinator.d.ts +179 -0
  55. package/dist/services/HighlightCoordinator.d.ts.map +1 -0
  56. package/dist/services/HighlightCoordinator.js +446 -0
  57. package/dist/services/HighlightCoordinator.js.map +1 -0
  58. package/dist/services/I18nService.d.ts +121 -0
  59. package/dist/services/I18nService.d.ts.map +1 -0
  60. package/dist/services/I18nService.js +276 -0
  61. package/dist/services/I18nService.js.map +1 -0
  62. package/dist/services/PNPMapper.d.ts +71 -0
  63. package/dist/services/PNPMapper.d.ts.map +1 -0
  64. package/dist/services/PNPMapper.js +98 -0
  65. package/dist/services/PNPMapper.js.map +1 -0
  66. package/dist/services/PNPToolResolver.d.ts +127 -0
  67. package/dist/services/PNPToolResolver.d.ts.map +1 -0
  68. package/dist/services/PNPToolResolver.js +222 -0
  69. package/dist/services/PNPToolResolver.js.map +1 -0
  70. package/dist/services/SSMLExtractor.d.ts +61 -0
  71. package/dist/services/SSMLExtractor.d.ts.map +1 -0
  72. package/dist/services/SSMLExtractor.js +181 -0
  73. package/dist/services/SSMLExtractor.js.map +1 -0
  74. package/dist/services/TTSService.d.ts +162 -0
  75. package/dist/services/TTSService.d.ts.map +1 -0
  76. package/dist/services/TTSService.js +465 -0
  77. package/dist/services/TTSService.js.map +1 -0
  78. package/dist/services/ThemeProvider.d.ts +95 -0
  79. package/dist/services/ThemeProvider.d.ts.map +1 -0
  80. package/dist/services/ThemeProvider.js +299 -0
  81. package/dist/services/ThemeProvider.js.map +1 -0
  82. package/dist/services/ToolConfigResolver.d.ts +162 -0
  83. package/dist/services/ToolConfigResolver.d.ts.map +1 -0
  84. package/dist/services/ToolConfigResolver.js +230 -0
  85. package/dist/services/ToolConfigResolver.js.map +1 -0
  86. package/dist/services/ToolCoordinator.d.ts +137 -0
  87. package/dist/services/ToolCoordinator.d.ts.map +1 -0
  88. package/dist/services/ToolCoordinator.js +318 -0
  89. package/dist/services/ToolCoordinator.js.map +1 -0
  90. package/dist/services/ToolkitCoordinator.d.ts +188 -0
  91. package/dist/services/ToolkitCoordinator.d.ts.map +1 -0
  92. package/dist/services/ToolkitCoordinator.js +252 -0
  93. package/dist/services/ToolkitCoordinator.js.map +1 -0
  94. package/dist/services/interfaces.d.ts +391 -0
  95. package/dist/services/interfaces.d.ts.map +1 -0
  96. package/dist/services/interfaces.js +12 -0
  97. package/dist/services/interfaces.js.map +1 -0
  98. package/dist/services/tool-providers/DesmosToolProvider.d.ts +103 -0
  99. package/dist/services/tool-providers/DesmosToolProvider.d.ts.map +1 -0
  100. package/dist/services/tool-providers/DesmosToolProvider.js +127 -0
  101. package/dist/services/tool-providers/DesmosToolProvider.js.map +1 -0
  102. package/dist/services/tool-providers/IToolProvider.d.ts +137 -0
  103. package/dist/services/tool-providers/IToolProvider.d.ts.map +1 -0
  104. package/dist/services/tool-providers/IToolProvider.js +13 -0
  105. package/dist/services/tool-providers/IToolProvider.js.map +1 -0
  106. package/dist/services/tool-providers/TIToolProvider.d.ts +107 -0
  107. package/dist/services/tool-providers/TIToolProvider.d.ts.map +1 -0
  108. package/dist/services/tool-providers/TIToolProvider.js +123 -0
  109. package/dist/services/tool-providers/TIToolProvider.js.map +1 -0
  110. package/dist/services/tool-providers/TTSToolProvider.d.ts +143 -0
  111. package/dist/services/tool-providers/TTSToolProvider.d.ts.map +1 -0
  112. package/dist/services/tool-providers/TTSToolProvider.js +168 -0
  113. package/dist/services/tool-providers/TTSToolProvider.js.map +1 -0
  114. package/dist/services/tool-providers/ToolProviderRegistry.d.ts +165 -0
  115. package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -0
  116. package/dist/services/tool-providers/ToolProviderRegistry.js +240 -0
  117. package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -0
  118. package/dist/services/tool-providers/index.d.ts +18 -0
  119. package/dist/services/tool-providers/index.d.ts.map +1 -0
  120. package/dist/services/tool-providers/index.js +15 -0
  121. package/dist/services/tool-providers/index.js.map +1 -0
  122. package/dist/services/tts/browser-provider.d.ts +24 -0
  123. package/dist/services/tts/browser-provider.d.ts.map +1 -0
  124. package/dist/services/tts/browser-provider.js +177 -0
  125. package/dist/services/tts/browser-provider.js.map +1 -0
  126. package/dist/services/tts/provider-interface.d.ts +131 -0
  127. package/dist/services/tts/provider-interface.d.ts.map +1 -0
  128. package/dist/services/tts/provider-interface.js +10 -0
  129. package/dist/services/tts/provider-interface.js.map +1 -0
  130. package/dist/tools/calculators/desmos-provider.d.ts +54 -0
  131. package/dist/tools/calculators/desmos-provider.d.ts.map +1 -0
  132. package/dist/tools/calculators/desmos-provider.js +384 -0
  133. package/dist/tools/calculators/desmos-provider.js.map +1 -0
  134. package/dist/tools/calculators/mathjs-provider.d.ts +50 -0
  135. package/dist/tools/calculators/mathjs-provider.d.ts.map +1 -0
  136. package/dist/tools/calculators/mathjs-provider.js +660 -0
  137. package/dist/tools/calculators/mathjs-provider.js.map +1 -0
  138. package/dist/tools/calculators/ti-provider.d.ts +122 -0
  139. package/dist/tools/calculators/ti-provider.d.ts.map +1 -0
  140. package/dist/tools/calculators/ti-provider.js +587 -0
  141. package/dist/tools/calculators/ti-provider.js.map +1 -0
  142. package/dist/tools/client.d.ts +17 -0
  143. package/dist/tools/client.d.ts.map +1 -0
  144. package/dist/tools/client.js +26 -0
  145. package/dist/tools/client.js.map +1 -0
  146. package/dist/tools/index.d.ts +8 -0
  147. package/dist/tools/index.d.ts.map +1 -0
  148. package/dist/tools/index.js +10 -0
  149. package/dist/tools/index.js.map +1 -0
  150. package/dist/tools/library-loader.d.ts +63 -0
  151. package/dist/tools/library-loader.d.ts.map +1 -0
  152. package/dist/tools/library-loader.js +292 -0
  153. package/dist/tools/library-loader.js.map +1 -0
  154. package/dist/tools/response-discovery.d.ts +72 -0
  155. package/dist/tools/response-discovery.d.ts.map +1 -0
  156. package/dist/tools/response-discovery.js +183 -0
  157. package/dist/tools/response-discovery.js.map +1 -0
  158. package/dist/tools/tool-coordinator.d.ts +76 -0
  159. package/dist/tools/tool-coordinator.d.ts.map +1 -0
  160. package/dist/tools/tool-coordinator.js +197 -0
  161. package/dist/tools/tool-coordinator.js.map +1 -0
  162. package/dist/tools/types.d.ts +427 -0
  163. package/dist/tools/types.d.ts.map +1 -0
  164. package/dist/tools/types.js +13 -0
  165. package/dist/tools/types.js.map +1 -0
  166. package/dist/tools/variant-resolver.d.ts +48 -0
  167. package/dist/tools/variant-resolver.d.ts.map +1 -0
  168. package/dist/tools/variant-resolver.js +214 -0
  169. package/dist/tools/variant-resolver.js.map +1 -0
  170. package/dist/types/events.d.ts +157 -0
  171. package/dist/types/events.d.ts.map +1 -0
  172. package/dist/types/events.js +11 -0
  173. package/dist/types/events.js.map +1 -0
  174. package/dist/utils/logger.d.ts +7 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +11 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/package.json +71 -0
  179. package/src/README.md +626 -0
  180. package/src/components/QuestionToolBar.svelte +406 -0
  181. package/src/player/AssessmentLayout.svelte +68 -0
  182. package/src/player/README.md +154 -0
  183. package/src/reference-layout/README.md +135 -0
  184. package/src/reference-layout/ReferenceLayout.svelte +209 -0
  185. package/src/reference-layout/components/AssessmentContent.svelte +259 -0
  186. package/src/reference-layout/components/AssessmentFooter.svelte +89 -0
  187. package/src/reference-layout/components/AssessmentHeader.svelte +250 -0
  188. package/src/reference-layout/components/AssessmentNavigation.svelte +134 -0
  189. package/src/reference-layout/components/AssessmentToolsBar.svelte +176 -0
  190. package/src/reference-layout/components/ItemPanel.svelte +200 -0
  191. package/src/reference-layout/components/NotesPanel.svelte +179 -0
  192. package/src/reference-layout/components/PassagePanel.svelte +76 -0
  193. package/src/tools/README.md +616 -0
  194. package/src/tools/calculators/README.md +395 -0
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Tool Provider Interface
3
+ *
4
+ * Unified interface for all assessment tools that require
5
+ * configuration, authentication, or external services.
6
+ *
7
+ * Examples: Desmos calculators, TI calculators, TTS services,
8
+ * translation services, dictionary APIs, etc.
9
+ *
10
+ * Part of PIE Assessment Toolkit.
11
+ */
12
+ /**
13
+ * Tool category classification
14
+ */
15
+ export type ToolCategory = "calculator" | "tts" | "translation" | "dictionary" | "annotation" | "accessibility" | "other";
16
+ /**
17
+ * Tool provider capabilities descriptor
18
+ *
19
+ * Describes what features and limitations a provider has.
20
+ */
21
+ export interface ToolProviderCapabilities {
22
+ /**
23
+ * Can be used offline (no network required)
24
+ */
25
+ supportsOffline: boolean;
26
+ /**
27
+ * Requires API key or authentication
28
+ */
29
+ requiresAuth: boolean;
30
+ /**
31
+ * Maximum concurrent instances (null = unlimited)
32
+ */
33
+ maxInstances?: number | null;
34
+ /**
35
+ * Provider-specific capabilities/features
36
+ * @example { graphing: true, scientific: true, basic: true }
37
+ */
38
+ features: Record<string, boolean>;
39
+ }
40
+ /**
41
+ * Tool Provider Interface
42
+ *
43
+ * Base interface for all tool providers in the assessment toolkit.
44
+ * Providers are stateless factories that create configured tool instances.
45
+ *
46
+ * @template TConfig Configuration type for this provider
47
+ * @template TInstance Instance type created by this provider
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * class DesmosToolProvider implements IToolProvider<DesmosConfig, CalculatorProvider> {
52
+ * readonly providerId = 'desmos-calculator';
53
+ * readonly providerName = 'Desmos Calculator';
54
+ * readonly category = 'calculator';
55
+ * // ...
56
+ * }
57
+ * ```
58
+ */
59
+ export interface IToolProvider<TConfig = any, TInstance = any> {
60
+ /**
61
+ * Unique identifier for this provider
62
+ *
63
+ * @example 'desmos-calculator', 'aws-polly-tts', 'ti-calculator'
64
+ */
65
+ readonly providerId: string;
66
+ /**
67
+ * Human-readable provider name
68
+ *
69
+ * @example 'Desmos Calculator', 'AWS Polly TTS'
70
+ */
71
+ readonly providerName: string;
72
+ /**
73
+ * Tool category for this provider
74
+ *
75
+ * @example 'calculator', 'tts', 'translation'
76
+ */
77
+ readonly category: ToolCategory;
78
+ /**
79
+ * Provider version
80
+ *
81
+ * @example '1.0', '2.5', '1.10'
82
+ */
83
+ readonly version: string;
84
+ /**
85
+ * Does this provider require authentication/API keys?
86
+ *
87
+ * When true, the provider should be initialized with auth credentials
88
+ * or an authFetcher function to retrieve them from a backend service.
89
+ */
90
+ readonly requiresAuth: boolean;
91
+ /**
92
+ * Initialize the provider
93
+ *
94
+ * Sets up the provider with configuration and prepares it for use.
95
+ * For auth-based providers, this is where API keys/tokens are validated.
96
+ *
97
+ * @param config Provider configuration (may include auth)
98
+ * @returns Promise that resolves when provider is ready
99
+ * @throws Error if initialization fails
100
+ */
101
+ initialize(config: TConfig): Promise<void>;
102
+ /**
103
+ * Create a tool instance
104
+ *
105
+ * Creates a configured instance of the tool ready for use.
106
+ * The provider must be initialized before calling this method.
107
+ *
108
+ * @param config Instance-specific configuration (optional)
109
+ * @returns Tool instance ready for use
110
+ * @throws Error if provider not initialized
111
+ */
112
+ createInstance(config?: Partial<TConfig>): Promise<TInstance>;
113
+ /**
114
+ * Get provider capabilities
115
+ *
116
+ * Returns a description of what this provider supports.
117
+ *
118
+ * @returns Capabilities descriptor
119
+ */
120
+ getCapabilities(): ToolProviderCapabilities;
121
+ /**
122
+ * Check if provider is ready to use
123
+ *
124
+ * Returns true if initialize() has completed successfully.
125
+ *
126
+ * @returns true if provider is initialized and ready
127
+ */
128
+ isReady(): boolean;
129
+ /**
130
+ * Clean up provider resources
131
+ *
132
+ * Destroys the provider and releases any resources (connections, timers, etc.).
133
+ * After calling this, the provider should not be used.
134
+ */
135
+ destroy(): void;
136
+ }
137
+ //# sourceMappingURL=IToolProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IToolProvider.d.ts","sourceRoot":"","sources":["../../../src/services/tool-providers/IToolProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GACrB,YAAY,GACZ,KAAK,GACL,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,OAAO,CAAC;AAEX;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG;IAC5D;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B;;;;;;;;;OASG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAE9D;;;;;;OAMG;IACH,eAAe,IAAI,wBAAwB,CAAC;IAE5C;;;;;;OAMG;IACH,OAAO,IAAI,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tool Provider Interface
3
+ *
4
+ * Unified interface for all assessment tools that require
5
+ * configuration, authentication, or external services.
6
+ *
7
+ * Examples: Desmos calculators, TI calculators, TTS services,
8
+ * translation services, dictionary APIs, etc.
9
+ *
10
+ * Part of PIE Assessment Toolkit.
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=IToolProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IToolProvider.js","sourceRoot":"","sources":["../../../src/services/tool-providers/IToolProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * TI Calculator Tool Provider
3
+ *
4
+ * Provides Texas Instruments calculator emulators (TI-84, TI-108, TI-34 MV).
5
+ *
6
+ * NOTE: Requires licensed TI emulator libraries from Texas Instruments.
7
+ * These libraries must be hosted on your server at /lib/ti/{version}/
8
+ *
9
+ * Part of PIE Assessment Toolkit.
10
+ */
11
+ import type { CalculatorProvider, TICalculatorConfig } from "@pie-players/pie-calculator";
12
+ import type { IToolProvider, ToolProviderCapabilities } from "./IToolProvider";
13
+ /**
14
+ * TI tool provider configuration
15
+ */
16
+ export interface TIToolProviderConfig {
17
+ /**
18
+ * Base URL for TI emulator libraries
19
+ * @default '/lib/ti'
20
+ * @example '/static/calculators/ti'
21
+ * @example 'https://cdn.example.com/ti'
22
+ */
23
+ libraryBaseUrl?: string;
24
+ /**
25
+ * TI emulator version to load
26
+ * @default 'v2.8.0'
27
+ */
28
+ version?: string;
29
+ /**
30
+ * Default calculator configuration applied to all instances
31
+ */
32
+ defaultConfig?: TICalculatorConfig;
33
+ /**
34
+ * Restricted mode (test mode) - disables certain features
35
+ * @default false
36
+ */
37
+ restrictedMode?: boolean;
38
+ }
39
+ /**
40
+ * TI Calculator Tool Provider
41
+ *
42
+ * Wraps TICalculatorProvider with the IToolProvider interface
43
+ * for use in the ToolProviderRegistry.
44
+ *
45
+ * TI calculators do not require API keys, but DO require
46
+ * licensed emulator libraries to be hosted on your server.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const provider = new TIToolProvider();
51
+ *
52
+ * await provider.initialize({
53
+ * libraryBaseUrl: '/lib/ti',
54
+ * version: 'v2.8.0',
55
+ * restrictedMode: false,
56
+ * });
57
+ *
58
+ * const calculatorProvider = await provider.createInstance();
59
+ * ```
60
+ */
61
+ export declare class TIToolProvider implements IToolProvider<TIToolProviderConfig, CalculatorProvider> {
62
+ readonly providerId = "ti-calculator";
63
+ readonly providerName = "Texas Instruments Calculator";
64
+ readonly category: "calculator";
65
+ readonly version = "2.8.0";
66
+ readonly requiresAuth = false;
67
+ private tiProvider;
68
+ private config;
69
+ /**
70
+ * Initialize TI calculator provider
71
+ *
72
+ * Loads the TI emulator libraries (ELG shared library).
73
+ *
74
+ * @param config Configuration with library base URL and version
75
+ * @throws Error if initialization fails or libraries not found
76
+ */
77
+ initialize(config: TIToolProviderConfig): Promise<void>;
78
+ /**
79
+ * Create a calculator provider instance
80
+ *
81
+ * Returns the initialized TI calculator provider.
82
+ *
83
+ * @param config Optional instance-specific configuration (currently unused)
84
+ * @returns TI calculator provider
85
+ * @throws Error if provider not initialized
86
+ */
87
+ createInstance(config?: Partial<TIToolProviderConfig>): Promise<CalculatorProvider>;
88
+ /**
89
+ * Get provider capabilities
90
+ *
91
+ * @returns TI calculator capabilities
92
+ */
93
+ getCapabilities(): ToolProviderCapabilities;
94
+ /**
95
+ * Check if provider is ready
96
+ *
97
+ * @returns true if provider is initialized
98
+ */
99
+ isReady(): boolean;
100
+ /**
101
+ * Clean up provider resources
102
+ *
103
+ * Destroys the TI calculator provider and releases resources.
104
+ */
105
+ destroy(): void;
106
+ }
107
+ //# sourceMappingURL=TIToolProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TIToolProvider.d.ts","sourceRoot":"","sources":["../../../src/services/tool-providers/TIToolProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAEnC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,cACZ,YAAW,aAAa,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;IAElE,QAAQ,CAAC,UAAU,mBAAmB;IACtC,QAAQ,CAAC,YAAY,kCAAkC;IACvD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;IAC1C,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,SAAS;IAE9B,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,MAAM,CAAqC;IAEnD;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB7D;;;;;;;;OAQG;IACG,cAAc,CACnB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACpC,OAAO,CAAC,kBAAkB,CAAC;IAU9B;;;;OAIG;IACH,eAAe,IAAI,wBAAwB;IAe3C;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAQf"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * TI Calculator Tool Provider
3
+ *
4
+ * Provides Texas Instruments calculator emulators (TI-84, TI-108, TI-34 MV).
5
+ *
6
+ * NOTE: Requires licensed TI emulator libraries from Texas Instruments.
7
+ * These libraries must be hosted on your server at /lib/ti/{version}/
8
+ *
9
+ * Part of PIE Assessment Toolkit.
10
+ */
11
+ import { TICalculatorProvider } from "../../tools/calculators/ti-provider";
12
+ /**
13
+ * TI Calculator Tool Provider
14
+ *
15
+ * Wraps TICalculatorProvider with the IToolProvider interface
16
+ * for use in the ToolProviderRegistry.
17
+ *
18
+ * TI calculators do not require API keys, but DO require
19
+ * licensed emulator libraries to be hosted on your server.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const provider = new TIToolProvider();
24
+ *
25
+ * await provider.initialize({
26
+ * libraryBaseUrl: '/lib/ti',
27
+ * version: 'v2.8.0',
28
+ * restrictedMode: false,
29
+ * });
30
+ *
31
+ * const calculatorProvider = await provider.createInstance();
32
+ * ```
33
+ */
34
+ export class TIToolProvider {
35
+ providerId = "ti-calculator";
36
+ providerName = "Texas Instruments Calculator";
37
+ category = "calculator";
38
+ version = "2.8.0";
39
+ requiresAuth = false; // No API key needed, but requires licensed libraries
40
+ tiProvider = null;
41
+ config = null;
42
+ /**
43
+ * Initialize TI calculator provider
44
+ *
45
+ * Loads the TI emulator libraries (ELG shared library).
46
+ *
47
+ * @param config Configuration with library base URL and version
48
+ * @throws Error if initialization fails or libraries not found
49
+ */
50
+ async initialize(config) {
51
+ if (this.tiProvider) {
52
+ console.warn("[TIToolProvider] Already initialized, skipping reinitialization");
53
+ return;
54
+ }
55
+ this.config = config;
56
+ this.tiProvider = new TICalculatorProvider();
57
+ // Initialize TI emulator libraries
58
+ try {
59
+ await this.tiProvider.initialize();
60
+ console.log("[TIToolProvider] Initialized successfully (TI emulator libraries loaded)");
61
+ }
62
+ catch (error) {
63
+ console.error("[TIToolProvider] Initialization failed:", error);
64
+ throw new Error("Failed to initialize TI calculator provider. Ensure TI emulator libraries are available.");
65
+ }
66
+ }
67
+ /**
68
+ * Create a calculator provider instance
69
+ *
70
+ * Returns the initialized TI calculator provider.
71
+ *
72
+ * @param config Optional instance-specific configuration (currently unused)
73
+ * @returns TI calculator provider
74
+ * @throws Error if provider not initialized
75
+ */
76
+ async createInstance(config) {
77
+ if (!this.tiProvider) {
78
+ throw new Error("[TIToolProvider] Provider not initialized. Call initialize() first.");
79
+ }
80
+ return this.tiProvider;
81
+ }
82
+ /**
83
+ * Get provider capabilities
84
+ *
85
+ * @returns TI calculator capabilities
86
+ */
87
+ getCapabilities() {
88
+ return {
89
+ supportsOffline: true, // Works offline once libraries loaded
90
+ requiresAuth: false,
91
+ maxInstances: null, // Unlimited calculator instances
92
+ features: {
93
+ "ti-84": true,
94
+ "ti-108": true,
95
+ "ti-34-mv": true,
96
+ graphing: true, // TI-84 supports graphing
97
+ scientific: true, // All TI models support scientific functions
98
+ },
99
+ };
100
+ }
101
+ /**
102
+ * Check if provider is ready
103
+ *
104
+ * @returns true if provider is initialized
105
+ */
106
+ isReady() {
107
+ return this.tiProvider !== null;
108
+ }
109
+ /**
110
+ * Clean up provider resources
111
+ *
112
+ * Destroys the TI calculator provider and releases resources.
113
+ */
114
+ destroy() {
115
+ if (this.tiProvider) {
116
+ this.tiProvider.destroy();
117
+ this.tiProvider = null;
118
+ }
119
+ this.config = null;
120
+ console.log("[TIToolProvider] Destroyed");
121
+ }
122
+ }
123
+ //# sourceMappingURL=TIToolProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TIToolProvider.js","sourceRoot":"","sources":["../../../src/services/tool-providers/TIToolProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAiC3E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,cAAc;IAGjB,UAAU,GAAG,eAAe,CAAC;IAC7B,YAAY,GAAG,8BAA8B,CAAC;IAC9C,QAAQ,GAAG,YAAqB,CAAC;IACjC,OAAO,GAAG,OAAO,CAAC;IAClB,YAAY,GAAG,KAAK,CAAC,CAAC,qDAAqD;IAE5E,UAAU,GAAgC,IAAI,CAAC;IAC/C,MAAM,GAAgC,IAAI,CAAC;IAEnD;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,MAA4B;QAC5C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CACX,iEAAiE,CACjE,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE7C,mCAAmC;QACnC,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CACV,0EAA0E,CAC1E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,IAAI,KAAK,CACd,0FAA0F,CAC1F,CAAC;QACH,CAAC;IACF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CACnB,MAAsC;QAEtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACd,qEAAqE,CACrE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,eAAe;QACd,OAAO;YACN,eAAe,EAAE,IAAI,EAAE,sCAAsC;YAC7D,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,IAAI,EAAE,iCAAiC;YACrD,QAAQ,EAAE;gBACT,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI,EAAE,0BAA0B;gBAC1C,UAAU,EAAE,IAAI,EAAE,6CAA6C;aAC/D;SACD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,OAAO;QACN,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,OAAO;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC3C,CAAC;CACD"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * TTS Tool Provider
3
+ *
4
+ * Unified provider for all TTS backends:
5
+ * - Browser Web Speech API (no auth)
6
+ * - AWS Polly (requires auth via server proxy)
7
+ * - Google Cloud TTS (requires auth via server proxy)
8
+ *
9
+ * Part of PIE Assessment Toolkit.
10
+ */
11
+ import type { ITTSProvider, TTSConfig } from "@pie-players/pie-tts";
12
+ import type { IToolProvider, ToolProviderCapabilities } from "./IToolProvider";
13
+ /**
14
+ * TTS backend type
15
+ */
16
+ export type TTSBackend = "browser" | "polly" | "google" | "server";
17
+ /**
18
+ * TTS tool provider configuration
19
+ */
20
+ export interface TTSToolProviderConfig extends Partial<TTSConfig> {
21
+ /**
22
+ * TTS backend to use
23
+ */
24
+ backend: TTSBackend;
25
+ /**
26
+ * Server API endpoint (for server backends)
27
+ * @example '/api/tts/synthesize'
28
+ * @example 'https://api.example.com/tts/synthesize'
29
+ */
30
+ apiEndpoint?: string;
31
+ /**
32
+ * Provider to use on server ('polly', 'google')
33
+ * Only used when backend is 'server', 'polly', or 'google'
34
+ */
35
+ serverProvider?: "polly" | "google";
36
+ /**
37
+ * Auth token (if required)
38
+ * Typically fetched via authFetcher in ToolProviderRegistry
39
+ */
40
+ authToken?: string;
41
+ /**
42
+ * Organization ID for multi-tenant applications
43
+ */
44
+ organizationId?: string;
45
+ /**
46
+ * Default voice to use
47
+ */
48
+ voice?: string;
49
+ /**
50
+ * Speech rate (0.25 to 4.0, default 1.0)
51
+ */
52
+ rate?: number;
53
+ /**
54
+ * Speech pitch (0 to 2, default 1.0)
55
+ * Note: Only browser backend supports pitch
56
+ */
57
+ pitch?: number;
58
+ }
59
+ /**
60
+ * TTS Tool Provider
61
+ *
62
+ * Wraps TTS providers (Browser, Polly, Google) with the IToolProvider interface
63
+ * for use in the ToolProviderRegistry.
64
+ *
65
+ * @example Browser TTS (no auth)
66
+ * ```typescript
67
+ * const provider = new TTSToolProvider();
68
+ * await provider.initialize({ backend: 'browser' });
69
+ * const ttsProvider = await provider.createInstance();
70
+ * ```
71
+ *
72
+ * @example Server TTS (with auth)
73
+ * ```typescript
74
+ * const provider = new TTSToolProvider();
75
+ * await provider.initialize({
76
+ * backend: 'polly',
77
+ * apiEndpoint: '/api/tts/synthesize',
78
+ * authToken: 'bearer-token', // Fetched via authFetcher
79
+ * });
80
+ * const ttsProvider = await provider.createInstance();
81
+ * ```
82
+ */
83
+ export declare class TTSToolProvider implements IToolProvider<TTSToolProviderConfig, ITTSProvider> {
84
+ readonly providerId = "tts-service";
85
+ readonly providerName = "Text-to-Speech";
86
+ readonly category: "tts";
87
+ readonly version = "1.0";
88
+ readonly requiresAuth: boolean;
89
+ private ttsProvider;
90
+ private config;
91
+ /**
92
+ * Create TTS tool provider
93
+ *
94
+ * @param backend TTS backend to use (default: 'browser')
95
+ */
96
+ constructor(backend?: TTSBackend);
97
+ /**
98
+ * Initialize TTS provider
99
+ *
100
+ * Sets up the appropriate TTS backend.
101
+ *
102
+ * @param config Configuration with backend type and credentials
103
+ * @throws Error if initialization fails or required config missing
104
+ */
105
+ initialize(config: TTSToolProviderConfig): Promise<void>;
106
+ /**
107
+ * Initialize browser TTS (Web Speech API)
108
+ */
109
+ private _initializeBrowserTTS;
110
+ /**
111
+ * Initialize server-based TTS (Polly, Google)
112
+ */
113
+ private _initializeServerTTS;
114
+ /**
115
+ * Create a TTS provider instance
116
+ *
117
+ * Returns the initialized TTS provider.
118
+ *
119
+ * @param config Optional instance-specific configuration (currently unused)
120
+ * @returns TTS provider
121
+ * @throws Error if provider not initialized
122
+ */
123
+ createInstance(config?: Partial<TTSToolProviderConfig>): Promise<ITTSProvider>;
124
+ /**
125
+ * Get provider capabilities
126
+ *
127
+ * @returns TTS capabilities based on backend
128
+ */
129
+ getCapabilities(): ToolProviderCapabilities;
130
+ /**
131
+ * Check if provider is ready
132
+ *
133
+ * @returns true if provider is initialized
134
+ */
135
+ isReady(): boolean;
136
+ /**
137
+ * Clean up provider resources
138
+ *
139
+ * Destroys the TTS provider and releases resources.
140
+ */
141
+ destroy(): void;
142
+ }
143
+ //# sourceMappingURL=TTSToolProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TTSToolProvider.d.ts","sourceRoot":"","sources":["../../../src/services/tool-providers/TTSToolProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,OAAO,CAAC,SAAS,CAAC;IAChE;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEpC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eACZ,YAAW,aAAa,CAAC,qBAAqB,EAAE,YAAY,CAAC;IAE7D,QAAQ,CAAC,UAAU,iBAAiB;IACpC,QAAQ,CAAC,YAAY,oBAAoB;IACzC,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;IACnC,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,MAAM,CAAsC;IAEpD;;;;OAIG;gBACS,OAAO,GAAE,UAAsB;IAI3C;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B9D;;OAEG;YACW,qBAAqB;IAcnC;;OAEG;YACW,oBAAoB;IAgClC;;;;;;;;OAQG;IACG,cAAc,CACnB,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACrC,OAAO,CAAC,YAAY,CAAC;IAUxB;;;;OAIG;IACH,eAAe,IAAI,wBAAwB;IAkB3C;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAQf"}