@pie-players/pie-assessment-toolkit 0.3.43 → 0.3.44

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 (317) hide show
  1. package/dist/attempt/AssessmentSession.d.ts +0 -1
  2. package/dist/attempt/AssessmentSession.js.map +1 -1
  3. package/dist/attempt/TestSession.d.ts +0 -1
  4. package/dist/attempt/TestSession.js.map +1 -1
  5. package/dist/attempt/adapters/activity-to-test-attempt-session.d.ts +0 -1
  6. package/dist/attempt/adapters/activity-to-test-attempt-session.js.map +1 -1
  7. package/dist/components/ItemToolBar.custom-element.js +1181 -157
  8. package/dist/components/SectionToolBar.custom-element.js +1179 -157
  9. package/dist/components/item-toolbar-element.d.ts +0 -1
  10. package/dist/components/item-toolbar-element.js.map +1 -1
  11. package/dist/components/pie-assessment-toolkit-element.d.ts +0 -1
  12. package/dist/components/pie-assessment-toolkit-element.js.map +1 -1
  13. package/dist/components/section-toolbar-element.d.ts +0 -1
  14. package/dist/components/section-toolbar-element.js.map +1 -1
  15. package/dist/components/vendor/nds/README.md +110 -0
  16. package/dist/components/vendor/nds/nds-icon-button.js +826 -0
  17. package/dist/context/assessment-toolkit-context.d.ts +0 -1
  18. package/dist/context/assessment-toolkit-context.js.map +1 -1
  19. package/dist/context/runtime-context-consumer.d.ts +0 -1
  20. package/dist/context/runtime-context-consumer.js.map +1 -1
  21. package/dist/index.d.ts +0 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/item-loader.d.ts +0 -1
  24. package/dist/item-loader.js.map +1 -1
  25. package/dist/policy/core/PolicySource.d.ts +0 -1
  26. package/dist/policy/core/PolicySource.js.map +1 -1
  27. package/dist/policy/core/ToolPolicyEngine.d.ts +0 -1
  28. package/dist/policy/core/ToolPolicyEngine.js.map +1 -1
  29. package/dist/policy/core/compose-decision.d.ts +0 -1
  30. package/dist/policy/core/compose-decision.js.map +1 -1
  31. package/dist/policy/core/decision-types.d.ts +0 -1
  32. package/dist/policy/core/decision-types.js.map +1 -1
  33. package/dist/policy/core/engine-context.d.ts +0 -1
  34. package/dist/policy/core/engine-context.js.map +1 -1
  35. package/dist/policy/core/pnp-policy-inputs.d.ts +0 -1
  36. package/dist/policy/core/pnp-policy-inputs.js.map +1 -1
  37. package/dist/policy/core/policy-source-tag.d.ts +0 -1
  38. package/dist/policy/core/policy-source-tag.js.map +1 -1
  39. package/dist/policy/core/provenance.d.ts +0 -1
  40. package/dist/policy/core/provenance.js.map +1 -1
  41. package/dist/policy/engine.d.ts +0 -1
  42. package/dist/policy/engine.js.map +1 -1
  43. package/dist/policy/internal.d.ts +0 -1
  44. package/dist/policy/internal.js.map +1 -1
  45. package/dist/policy/sources/PnpPolicySource.d.ts +0 -1
  46. package/dist/policy/sources/PnpPolicySource.js.map +1 -1
  47. package/dist/runtime/RuntimeRegistry.d.ts +0 -1
  48. package/dist/runtime/RuntimeRegistry.js.map +1 -1
  49. package/dist/runtime/SectionRuntimeEngine.d.ts +0 -1
  50. package/dist/runtime/SectionRuntimeEngine.js.map +1 -1
  51. package/dist/runtime/adapter/SectionEngineAdapter.d.ts +0 -1
  52. package/dist/runtime/adapter/SectionEngineAdapter.js.map +1 -1
  53. package/dist/runtime/adapter/coordinator-bridge.d.ts +0 -1
  54. package/dist/runtime/adapter/coordinator-bridge.js.map +1 -1
  55. package/dist/runtime/adapter/dom-event-bridge.d.ts +0 -1
  56. package/dist/runtime/adapter/dom-event-bridge.js.map +1 -1
  57. package/dist/runtime/adapter/framework-error-bridge.d.ts +0 -1
  58. package/dist/runtime/adapter/framework-error-bridge.js.map +1 -1
  59. package/dist/runtime/adapter/instrumentation-bridge.d.ts +0 -1
  60. package/dist/runtime/adapter/instrumentation-bridge.js.map +1 -1
  61. package/dist/runtime/adapter/subscriber-fanout.d.ts +0 -1
  62. package/dist/runtime/adapter/subscriber-fanout.js.map +1 -1
  63. package/dist/runtime/core/SectionEngineCore.d.ts +0 -1
  64. package/dist/runtime/core/SectionEngineCore.js.map +1 -1
  65. package/dist/runtime/core/cohort.d.ts +0 -1
  66. package/dist/runtime/core/cohort.js.map +1 -1
  67. package/dist/runtime/core/engine-input.d.ts +0 -1
  68. package/dist/runtime/core/engine-input.js.map +1 -1
  69. package/dist/runtime/core/engine-output.d.ts +0 -1
  70. package/dist/runtime/core/engine-output.js.map +1 -1
  71. package/dist/runtime/core/engine-readiness.d.ts +0 -1
  72. package/dist/runtime/core/engine-readiness.js.map +1 -1
  73. package/dist/runtime/core/engine-resolver.d.ts +0 -1
  74. package/dist/runtime/core/engine-resolver.js.map +1 -1
  75. package/dist/runtime/core/engine-stage-derivation.d.ts +0 -1
  76. package/dist/runtime/core/engine-stage-derivation.js.map +1 -1
  77. package/dist/runtime/core/engine-state.d.ts +0 -1
  78. package/dist/runtime/core/engine-state.js.map +1 -1
  79. package/dist/runtime/core/engine-transition.d.ts +0 -1
  80. package/dist/runtime/core/engine-transition.js.map +1 -1
  81. package/dist/runtime/engine-context.d.ts +0 -1
  82. package/dist/runtime/engine-context.js.map +1 -1
  83. package/dist/runtime/engine.d.ts +0 -1
  84. package/dist/runtime/engine.js.map +1 -1
  85. package/dist/runtime/internal.d.ts +0 -1
  86. package/dist/runtime/internal.js.map +1 -1
  87. package/dist/runtime/registration-events.d.ts +0 -1
  88. package/dist/runtime/registration-events.js.map +1 -1
  89. package/dist/runtime/runtime-id.d.ts +0 -1
  90. package/dist/runtime/runtime-id.js.map +1 -1
  91. package/dist/runtime/section-runtime-engine-host-context.d.ts +0 -1
  92. package/dist/runtime/section-runtime-engine-host-context.js.map +1 -1
  93. package/dist/runtime/session-event-emitter-policy.d.ts +0 -1
  94. package/dist/runtime/session-event-emitter-policy.js.map +1 -1
  95. package/dist/runtime/stage-emit-gate.d.ts +0 -1
  96. package/dist/runtime/stage-emit-gate.js.map +1 -1
  97. package/dist/runtime/tool-host-contract.d.ts +0 -1
  98. package/dist/runtime/tool-host-contract.js.map +1 -1
  99. package/dist/services/AccessibilityCatalogResolver.d.ts +0 -1
  100. package/dist/services/AccessibilityCatalogResolver.js.map +1 -1
  101. package/dist/services/ContextVariableStore.d.ts +0 -1
  102. package/dist/services/ContextVariableStore.js.map +1 -1
  103. package/dist/services/ElementToolStateStore.d.ts +0 -1
  104. package/dist/services/ElementToolStateStore.js.map +1 -1
  105. package/dist/services/HighlightCoordinator.d.ts +0 -1
  106. package/dist/services/HighlightCoordinator.js.map +1 -1
  107. package/dist/services/I18nService.d.ts +0 -1
  108. package/dist/services/I18nService.js.map +1 -1
  109. package/dist/services/PNPToolResolver.d.ts +0 -1
  110. package/dist/services/PNPToolResolver.js.map +1 -1
  111. package/dist/services/RangeSerializer.d.ts +0 -1
  112. package/dist/services/RangeSerializer.js.map +1 -1
  113. package/dist/services/SSMLExtractor.d.ts +0 -1
  114. package/dist/services/SSMLExtractor.js.map +1 -1
  115. package/dist/services/TTSService.d.ts +0 -1
  116. package/dist/services/TTSService.js.map +1 -1
  117. package/dist/services/ThemeProvider.d.ts +0 -1
  118. package/dist/services/ThemeProvider.js.map +1 -1
  119. package/dist/services/ToolConfigResolver.d.ts +0 -1
  120. package/dist/services/ToolConfigResolver.js.map +1 -1
  121. package/dist/services/ToolCoordinator.d.ts +0 -1
  122. package/dist/services/ToolCoordinator.js.map +1 -1
  123. package/dist/services/ToolRegistry.d.ts +0 -1
  124. package/dist/services/ToolRegistry.js.map +1 -1
  125. package/dist/services/ToolkitCoordinator.d.ts +0 -1
  126. package/dist/services/ToolkitCoordinator.js.map +1 -1
  127. package/dist/services/create-tools-config.d.ts +0 -1
  128. package/dist/services/create-tools-config.js.map +1 -1
  129. package/dist/services/createDefaultToolRegistry.d.ts +0 -1
  130. package/dist/services/createDefaultToolRegistry.js.map +1 -1
  131. package/dist/services/defaultPersonalNeedsProfile.d.ts +0 -1
  132. package/dist/services/defaultPersonalNeedsProfile.js.map +1 -1
  133. package/dist/services/framework-error-bus.d.ts +0 -1
  134. package/dist/services/framework-error-bus.js.map +1 -1
  135. package/dist/services/framework-error.d.ts +0 -1
  136. package/dist/services/framework-error.js.map +1 -1
  137. package/dist/services/interfaces.d.ts +0 -1
  138. package/dist/services/interfaces.js.map +1 -1
  139. package/dist/services/pnp-provenance.d.ts +0 -1
  140. package/dist/services/pnp-provenance.js.map +1 -1
  141. package/dist/services/pnp-standard-features.d.ts +0 -1
  142. package/dist/services/pnp-standard-features.js.map +1 -1
  143. package/dist/services/section-controller-types.d.ts +0 -1
  144. package/dist/services/section-controller-types.js.map +1 -1
  145. package/dist/services/tool-config-defaults.d.ts +0 -1
  146. package/dist/services/tool-config-defaults.js.map +1 -1
  147. package/dist/services/tool-config-validation.d.ts +0 -1
  148. package/dist/services/tool-config-validation.js.map +1 -1
  149. package/dist/services/tool-context.d.ts +0 -1
  150. package/dist/services/tool-context.js.map +1 -1
  151. package/dist/services/tool-instance-id.d.ts +0 -1
  152. package/dist/services/tool-instance-id.js.map +1 -1
  153. package/dist/services/tool-providers/DesmosToolProvider.d.ts +0 -1
  154. package/dist/services/tool-providers/DesmosToolProvider.js.map +1 -1
  155. package/dist/services/tool-providers/TTSToolProvider.d.ts +0 -1
  156. package/dist/services/tool-providers/TTSToolProvider.js.map +1 -1
  157. package/dist/services/tool-providers/ToolProviderApi.d.ts +0 -1
  158. package/dist/services/tool-providers/ToolProviderApi.js.map +1 -1
  159. package/dist/services/tool-providers/ToolProviderRegistry.d.ts +0 -1
  160. package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -1
  161. package/dist/services/tool-providers/index.d.ts +0 -1
  162. package/dist/services/tool-providers/index.js.map +1 -1
  163. package/dist/services/toolbar-items.d.ts +0 -1
  164. package/dist/services/toolbar-items.js.map +1 -1
  165. package/dist/services/tools-config-normalizer.d.ts +0 -1
  166. package/dist/services/tools-config-normalizer.js.map +1 -1
  167. package/dist/services/tts/browser-provider.d.ts +0 -1
  168. package/dist/services/tts/browser-provider.js.map +1 -1
  169. package/dist/services/tts/text-processing.d.ts +0 -1
  170. package/dist/services/tts/text-processing.js.map +1 -1
  171. package/dist/services/tts/text-segmentation.d.ts +0 -1
  172. package/dist/services/tts/text-segmentation.js.map +1 -1
  173. package/dist/services/tts/visual-line-ranges.d.ts +0 -1
  174. package/dist/services/tts/visual-line-ranges.js.map +1 -1
  175. package/dist/services/tts-control-events.d.ts +0 -1
  176. package/dist/services/tts-control-events.js.map +1 -1
  177. package/dist/services/tts-runtime-config.d.ts +0 -1
  178. package/dist/services/tts-runtime-config.js.map +1 -1
  179. package/dist/tools/calculators/desmos-provider.d.ts +0 -1
  180. package/dist/tools/calculators/desmos-provider.js.map +1 -1
  181. package/dist/tools/client.d.ts +0 -1
  182. package/dist/tools/client.js.map +1 -1
  183. package/dist/tools/default-tool-module-loaders.d.ts +0 -1
  184. package/dist/tools/default-tool-module-loaders.js.map +1 -1
  185. package/dist/tools/index.d.ts +0 -1
  186. package/dist/tools/index.js.map +1 -1
  187. package/dist/tools/library-loader.d.ts +0 -1
  188. package/dist/tools/library-loader.js.map +1 -1
  189. package/dist/tools/registrations/accessibility-tools.d.ts +0 -1
  190. package/dist/tools/registrations/accessibility-tools.js.map +1 -1
  191. package/dist/tools/registrations/calculator.d.ts +0 -1
  192. package/dist/tools/registrations/calculator.js.map +1 -1
  193. package/dist/tools/registrations/interaction-tools.d.ts +0 -1
  194. package/dist/tools/registrations/interaction-tools.js.map +1 -1
  195. package/dist/tools/registrations/measurement-tools.d.ts +0 -1
  196. package/dist/tools/registrations/measurement-tools.js.map +1 -1
  197. package/dist/tools/registrations/subject-specific-tools.d.ts +0 -1
  198. package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
  199. package/dist/tools/registrations/toolbar-registration-helpers.d.ts +0 -1
  200. package/dist/tools/registrations/toolbar-registration-helpers.js.map +1 -1
  201. package/dist/tools/registrations/tts.d.ts +0 -1
  202. package/dist/tools/registrations/tts.js.map +1 -1
  203. package/dist/tools/response-discovery.d.ts +0 -1
  204. package/dist/tools/response-discovery.js.map +1 -1
  205. package/dist/tools/tool-tag-map.d.ts +0 -1
  206. package/dist/tools/tool-tag-map.js.map +1 -1
  207. package/dist/tools/types.d.ts +0 -1
  208. package/dist/tools/types.js.map +1 -1
  209. package/dist/tools/variant-resolver.d.ts +0 -1
  210. package/dist/tools/variant-resolver.js.map +1 -1
  211. package/dist/utils/logger.d.ts +0 -1
  212. package/dist/utils/logger.js.map +1 -1
  213. package/package.json +7 -7
  214. package/dist/attempt/AssessmentSession.d.ts.map +0 -1
  215. package/dist/attempt/TestSession.d.ts.map +0 -1
  216. package/dist/attempt/adapters/activity-to-test-attempt-session.d.ts.map +0 -1
  217. package/dist/components/item-toolbar-element.d.ts.map +0 -1
  218. package/dist/components/pie-assessment-toolkit-element.d.ts.map +0 -1
  219. package/dist/components/section-toolbar-element.d.ts.map +0 -1
  220. package/dist/context/assessment-toolkit-context.d.ts.map +0 -1
  221. package/dist/context/runtime-context-consumer.d.ts.map +0 -1
  222. package/dist/index.d.ts.map +0 -1
  223. package/dist/item-loader.d.ts.map +0 -1
  224. package/dist/policy/core/PolicySource.d.ts.map +0 -1
  225. package/dist/policy/core/ToolPolicyEngine.d.ts.map +0 -1
  226. package/dist/policy/core/compose-decision.d.ts.map +0 -1
  227. package/dist/policy/core/decision-types.d.ts.map +0 -1
  228. package/dist/policy/core/engine-context.d.ts.map +0 -1
  229. package/dist/policy/core/pnp-policy-inputs.d.ts.map +0 -1
  230. package/dist/policy/core/policy-source-tag.d.ts.map +0 -1
  231. package/dist/policy/core/provenance.d.ts.map +0 -1
  232. package/dist/policy/engine.d.ts.map +0 -1
  233. package/dist/policy/internal.d.ts.map +0 -1
  234. package/dist/policy/sources/PnpPolicySource.d.ts.map +0 -1
  235. package/dist/runtime/RuntimeRegistry.d.ts.map +0 -1
  236. package/dist/runtime/SectionRuntimeEngine.d.ts.map +0 -1
  237. package/dist/runtime/adapter/SectionEngineAdapter.d.ts.map +0 -1
  238. package/dist/runtime/adapter/coordinator-bridge.d.ts.map +0 -1
  239. package/dist/runtime/adapter/dom-event-bridge.d.ts.map +0 -1
  240. package/dist/runtime/adapter/framework-error-bridge.d.ts.map +0 -1
  241. package/dist/runtime/adapter/instrumentation-bridge.d.ts.map +0 -1
  242. package/dist/runtime/adapter/subscriber-fanout.d.ts.map +0 -1
  243. package/dist/runtime/core/SectionEngineCore.d.ts.map +0 -1
  244. package/dist/runtime/core/cohort.d.ts.map +0 -1
  245. package/dist/runtime/core/engine-input.d.ts.map +0 -1
  246. package/dist/runtime/core/engine-output.d.ts.map +0 -1
  247. package/dist/runtime/core/engine-readiness.d.ts.map +0 -1
  248. package/dist/runtime/core/engine-resolver.d.ts.map +0 -1
  249. package/dist/runtime/core/engine-stage-derivation.d.ts.map +0 -1
  250. package/dist/runtime/core/engine-state.d.ts.map +0 -1
  251. package/dist/runtime/core/engine-transition.d.ts.map +0 -1
  252. package/dist/runtime/engine-context.d.ts.map +0 -1
  253. package/dist/runtime/engine.d.ts.map +0 -1
  254. package/dist/runtime/internal.d.ts.map +0 -1
  255. package/dist/runtime/registration-events.d.ts.map +0 -1
  256. package/dist/runtime/runtime-id.d.ts.map +0 -1
  257. package/dist/runtime/section-runtime-engine-host-context.d.ts.map +0 -1
  258. package/dist/runtime/session-event-emitter-policy.d.ts.map +0 -1
  259. package/dist/runtime/stage-emit-gate.d.ts.map +0 -1
  260. package/dist/runtime/tool-host-contract.d.ts.map +0 -1
  261. package/dist/services/AccessibilityCatalogResolver.d.ts.map +0 -1
  262. package/dist/services/ContextVariableStore.d.ts.map +0 -1
  263. package/dist/services/ElementToolStateStore.d.ts.map +0 -1
  264. package/dist/services/HighlightCoordinator.d.ts.map +0 -1
  265. package/dist/services/I18nService.d.ts.map +0 -1
  266. package/dist/services/PNPToolResolver.d.ts.map +0 -1
  267. package/dist/services/RangeSerializer.d.ts.map +0 -1
  268. package/dist/services/SSMLExtractor.d.ts.map +0 -1
  269. package/dist/services/TTSService.d.ts.map +0 -1
  270. package/dist/services/ThemeProvider.d.ts.map +0 -1
  271. package/dist/services/ToolConfigResolver.d.ts.map +0 -1
  272. package/dist/services/ToolCoordinator.d.ts.map +0 -1
  273. package/dist/services/ToolRegistry.d.ts.map +0 -1
  274. package/dist/services/ToolkitCoordinator.d.ts.map +0 -1
  275. package/dist/services/create-tools-config.d.ts.map +0 -1
  276. package/dist/services/createDefaultToolRegistry.d.ts.map +0 -1
  277. package/dist/services/defaultPersonalNeedsProfile.d.ts.map +0 -1
  278. package/dist/services/framework-error-bus.d.ts.map +0 -1
  279. package/dist/services/framework-error.d.ts.map +0 -1
  280. package/dist/services/interfaces.d.ts.map +0 -1
  281. package/dist/services/pnp-provenance.d.ts.map +0 -1
  282. package/dist/services/pnp-standard-features.d.ts.map +0 -1
  283. package/dist/services/section-controller-types.d.ts.map +0 -1
  284. package/dist/services/tool-config-defaults.d.ts.map +0 -1
  285. package/dist/services/tool-config-validation.d.ts.map +0 -1
  286. package/dist/services/tool-context.d.ts.map +0 -1
  287. package/dist/services/tool-instance-id.d.ts.map +0 -1
  288. package/dist/services/tool-providers/DesmosToolProvider.d.ts.map +0 -1
  289. package/dist/services/tool-providers/TTSToolProvider.d.ts.map +0 -1
  290. package/dist/services/tool-providers/ToolProviderApi.d.ts.map +0 -1
  291. package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +0 -1
  292. package/dist/services/tool-providers/index.d.ts.map +0 -1
  293. package/dist/services/toolbar-items.d.ts.map +0 -1
  294. package/dist/services/tools-config-normalizer.d.ts.map +0 -1
  295. package/dist/services/tts/browser-provider.d.ts.map +0 -1
  296. package/dist/services/tts/text-processing.d.ts.map +0 -1
  297. package/dist/services/tts/text-segmentation.d.ts.map +0 -1
  298. package/dist/services/tts/visual-line-ranges.d.ts.map +0 -1
  299. package/dist/services/tts-control-events.d.ts.map +0 -1
  300. package/dist/services/tts-runtime-config.d.ts.map +0 -1
  301. package/dist/tools/calculators/desmos-provider.d.ts.map +0 -1
  302. package/dist/tools/client.d.ts.map +0 -1
  303. package/dist/tools/default-tool-module-loaders.d.ts.map +0 -1
  304. package/dist/tools/index.d.ts.map +0 -1
  305. package/dist/tools/library-loader.d.ts.map +0 -1
  306. package/dist/tools/registrations/accessibility-tools.d.ts.map +0 -1
  307. package/dist/tools/registrations/calculator.d.ts.map +0 -1
  308. package/dist/tools/registrations/interaction-tools.d.ts.map +0 -1
  309. package/dist/tools/registrations/measurement-tools.d.ts.map +0 -1
  310. package/dist/tools/registrations/subject-specific-tools.d.ts.map +0 -1
  311. package/dist/tools/registrations/toolbar-registration-helpers.d.ts.map +0 -1
  312. package/dist/tools/registrations/tts.d.ts.map +0 -1
  313. package/dist/tools/response-discovery.d.ts.map +0 -1
  314. package/dist/tools/tool-tag-map.d.ts.map +0 -1
  315. package/dist/tools/types.d.ts.map +0 -1
  316. package/dist/tools/variant-resolver.d.ts.map +0 -1
  317. package/dist/utils/logger.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ToolProviderRegistry.js","sourceRoot":"","sources":["../../../src/services/tool-providers/ToolProviderRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolProviderRegistry.js","sourceRoot":"","sources":["../../../src/services/tool-providers/ToolProviderRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tool Provider Registry\n *\n * Centralized registry for managing tool providers.\n * Handles initialization, authentication, and lazy loading.\n *\n * Part of PIE Assessment Toolkit.\n */\n\nimport type { ToolProviderApi, ToolCategory } from \"./ToolProviderApi.js\";\n\n/**\n * Configuration for registering a tool provider\n */\nexport interface ToolProviderConfig<TConfig = any> {\n\t/**\n\t * Provider instance to register\n\t */\n\tprovider: ToolProviderApi<TConfig>;\n\n\t/**\n\t * Configuration for this provider\n\t * (may include auth credentials, endpoints, etc.)\n\t */\n\tconfig: TConfig;\n\n\t/**\n\t * Lazy initialization - don't initialize until first use\n\t *\n\t * @default true\n\t * @note Set to false for providers that must be ready immediately\n\t */\n\tlazy?: boolean;\n\n\t/**\n\t * Auth fetcher - function to retrieve auth credentials from backend\n\t *\n\t * Called during initialization if the provider requires auth.\n\t * The returned data is merged with the config before initialization.\n\t *\n\t * @example\n\t * ```typescript\n\t * authFetcher: async () => {\n\t * const response = await fetch('/api/desmos/token');\n\t * return response.json(); // { apiKey: '...' }\n\t * }\n\t * ```\n\t */\n\tauthFetcher?: () => Promise<Partial<TConfig>>;\n\n\t/**\n\t * Optional telemetry callback used for provider lifecycle/backend instrumentation.\n\t */\n\tonTelemetry?: (\n\t\teventName: string,\n\t\tpayload?: Record<string, unknown>,\n\t) => void | Promise<void>;\n}\n\n/**\n * Tool Provider Registry\n *\n * Manages the lifecycle of tool providers:\n * - Registration\n * - Lazy initialization\n * - Auth credential fetching\n * - Provider lookup by ID or category\n *\n * @example\n * ```typescript\n * const registry = new ToolProviderRegistry();\n *\n * // Register a provider with auth fetcher\n * registry.register('desmos-calculator', {\n * provider: new DesmosToolProvider(),\n * config: {},\n * lazy: true,\n * authFetcher: async () => {\n * const response = await fetch('/api/desmos/token');\n * return response.json();\n * },\n * });\n *\n * // Get provider (auto-initializes if lazy)\n * const desmosProvider = await registry.getProvider('desmos-calculator');\n * ```\n */\nexport class ToolProviderRegistry {\n\tprivate providers = new Map<string, ToolProviderApi>();\n\tprivate configs = new Map<string, ToolProviderConfig>();\n\tprivate initialized = new Map<string, boolean>();\n\tprivate initializationPromises = new Map<string, Promise<void>>();\n\n\tprivate async emitTelemetry(\n\t\tconfig: ToolProviderConfig,\n\t\teventName: string,\n\t\tpayload?: Record<string, unknown>,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tawait config.onTelemetry?.(eventName, payload);\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"[ToolProviderRegistry] Telemetry callback failed:\", error);\n\t\t}\n\t}\n\n\t/**\n\t * Register a tool provider\n\t *\n\t * Adds a provider to the registry. If lazy is false, initializes immediately.\n\t *\n\t * @param providerId Unique provider identifier\n\t * @param config Provider configuration\n\t * @throws Error if provider with same ID already registered\n\t */\n\tregister(providerId: string, config: ToolProviderConfig): void {\n\t\tif (this.providers.has(providerId)) {\n\t\t\tconsole.warn(\n\t\t\t\t`[ToolProviderRegistry] Provider \"${providerId}\" already registered, skipping`,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.providers.set(providerId, config.provider);\n\t\tthis.configs.set(providerId, config);\n\t\tthis.initialized.set(providerId, false);\n\n\t\tconsole.log(\n\t\t\t`[ToolProviderRegistry] Registered provider \"${providerId}\" (${config.provider.providerName})`,\n\t\t);\n\n\t\t// Initialize immediately if not lazy\n\t\tif (config.lazy === false) {\n\t\t\tthis.initialize(providerId).catch((error) => {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[ToolProviderRegistry] Failed to initialize provider \"${providerId}\":`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Initialize a provider\n\t *\n\t * Fetches auth if needed and initializes the provider.\n\t * Safe to call multiple times - subsequent calls wait for first initialization.\n\t *\n\t * @param providerId Provider to initialize\n\t * @returns Promise that resolves when initialization complete\n\t * @throws Error if provider not registered or initialization fails\n\t */\n\tasync initialize(providerId: string): Promise<void> {\n\t\t// Already initialized\n\t\tif (this.initialized.get(providerId)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initialization in progress - wait for it\n\t\tconst existingPromise = this.initializationPromises.get(providerId);\n\t\tif (existingPromise) {\n\t\t\treturn existingPromise;\n\t\t}\n\n\t\t// Start new initialization\n\t\tconst initPromise = this._doInitialize(providerId);\n\t\tthis.initializationPromises.set(providerId, initPromise);\n\n\t\ttry {\n\t\t\tawait initPromise;\n\t\t} finally {\n\t\t\tthis.initializationPromises.delete(providerId);\n\t\t}\n\t}\n\n\t/**\n\t * Internal initialization logic\n\t */\n\tprivate async _doInitialize(providerId: string): Promise<void> {\n\t\tconst provider = this.providers.get(providerId);\n\t\tconst config = this.configs.get(providerId);\n\n\t\tif (!provider || !config) {\n\t\t\tthrow new Error(\n\t\t\t\t`[ToolProviderRegistry] Provider \"${providerId}\" not registered`,\n\t\t\t);\n\t\t}\n\n\t\t// Start with base config\n\t\tlet providerConfig = { ...config.config };\n\t\tconst deriveBackend = (value: unknown): string => {\n\t\t\tif (!value || typeof value !== \"object\") return \"unknown\";\n\t\t\tconst typed = value as Record<string, unknown>;\n\t\t\tconst direct =\n\t\t\t\ttypeof typed.backend === \"string\"\n\t\t\t\t\t? typed.backend\n\t\t\t\t\t: typeof typed.provider === \"string\"\n\t\t\t\t\t\t? typed.provider\n\t\t\t\t\t\t: typeof typed.serverProvider === \"string\"\n\t\t\t\t\t\t\t? typed.serverProvider\n\t\t\t\t\t\t\t: typeof typed.providerId === \"string\"\n\t\t\t\t\t\t\t\t? typed.providerId\n\t\t\t\t\t\t\t\t: \"\";\n\t\t\treturn direct || \"unknown\";\n\t\t};\n\t\tconst providerInitStartedAt = Date.now();\n\t\tawait this.emitTelemetry(config, \"pie-tool-init-start\", {\n\t\t\ttoolId: providerId,\n\t\t\tproviderId,\n\t\t\tbackend: deriveBackend(providerConfig),\n\t\t\toperation: \"provider-initialize\",\n\t\t});\n\n\t\t// Fetch auth if needed\n\t\tif (provider.requiresAuth && config.authFetcher) {\n\t\t\tconst authFetchStartedAt = Date.now();\n\t\t\tawait this.emitTelemetry(config, \"pie-tool-backend-call-start\", {\n\t\t\t\ttoolId: providerId,\n\t\t\t\tproviderId,\n\t\t\t\tbackend: deriveBackend(providerConfig),\n\t\t\t\toperation: \"auth-fetch\",\n\t\t\t});\n\t\t\tconsole.log(\n\t\t\t\t`[ToolProviderRegistry] Fetching auth for \"${providerId}\"...`,\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst authData = await config.authFetcher();\n\t\t\t\tproviderConfig = { ...providerConfig, ...authData };\n\t\t\t\tawait this.emitTelemetry(config, \"pie-tool-backend-call-success\", {\n\t\t\t\t\ttoolId: providerId,\n\t\t\t\t\tproviderId,\n\t\t\t\t\tbackend: deriveBackend(providerConfig),\n\t\t\t\t\toperation: \"auth-fetch\",\n\t\t\t\t\tduration: Date.now() - authFetchStartedAt,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tawait this.emitTelemetry(config, \"pie-tool-backend-call-error\", {\n\t\t\t\t\ttoolId: providerId,\n\t\t\t\t\tproviderId,\n\t\t\t\t\tbackend: deriveBackend(providerConfig),\n\t\t\t\t\toperation: \"auth-fetch\",\n\t\t\t\t\tduration: Date.now() - authFetchStartedAt,\n\t\t\t\t\terrorType: \"ProviderAuthFetchError\",\n\t\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[ToolProviderRegistry] Auth fetch failed for \"${providerId}\":`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to fetch auth credentials for provider \"${providerId}\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Initialize provider\n\t\ttry {\n\t\t\tawait provider.initialize(providerConfig);\n\t\t\tthis.initialized.set(providerId, true);\n\t\t\tawait this.emitTelemetry(config, \"pie-tool-init-success\", {\n\t\t\t\ttoolId: providerId,\n\t\t\t\tproviderId,\n\t\t\t\tbackend: deriveBackend(providerConfig),\n\t\t\t\toperation: \"provider-initialize\",\n\t\t\t\tduration: Date.now() - providerInitStartedAt,\n\t\t\t});\n\t\t\tconsole.log(\n\t\t\t\t`[ToolProviderRegistry] Provider \"${providerId}\" initialized`,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tawait this.emitTelemetry(config, \"pie-tool-init-error\", {\n\t\t\t\ttoolId: providerId,\n\t\t\t\tproviderId,\n\t\t\t\tbackend: deriveBackend(providerConfig),\n\t\t\t\toperation: \"provider-initialize\",\n\t\t\t\tduration: Date.now() - providerInitStartedAt,\n\t\t\t\terrorType: \"ProviderInitializationError\",\n\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t\tconsole.error(\n\t\t\t\t`[ToolProviderRegistry] Initialization failed for \"${providerId}\":`,\n\t\t\t\terror,\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Get a provider instance\n\t *\n\t * Retrieves a registered provider. If autoInitialize is true and provider\n\t * is not initialized, initializes it first.\n\t *\n\t * @param providerId Provider identifier\n\t * @param autoInitialize Auto-initialize if not ready (default: true)\n\t * @returns Provider instance\n\t * @throws Error if provider not registered\n\t */\n\tasync getProvider<T extends ToolProviderApi = ToolProviderApi>(\n\t\tproviderId: string,\n\t\tautoInitialize = true,\n\t): Promise<T> {\n\t\tconsole.log(\"[ToolProviderRegistry] getProvider called\", {\n\t\t\tproviderId,\n\t\t\tautoInitialize,\n\t\t\tisRegistered: this.providers.has(providerId),\n\t\t\tisInitialized: this.initialized.get(providerId),\n\t\t\tallProviderIds: Array.from(this.providers.keys()),\n\t\t});\n\n\t\tconst provider = this.providers.get(providerId);\n\t\tif (!provider) {\n\t\t\tconsole.error(\"[ToolProviderRegistry] Provider not found:\", {\n\t\t\t\trequestedId: providerId,\n\t\t\t\tavailableProviders: Array.from(this.providers.keys()),\n\t\t\t});\n\t\t\tthrow new Error(\n\t\t\t\t`[ToolProviderRegistry] Provider \"${providerId}\" not registered`,\n\t\t\t);\n\t\t}\n\n\t\t// Auto-initialize if needed\n\t\tif (autoInitialize && !this.initialized.get(providerId)) {\n\t\t\tconsole.log(\n\t\t\t\t\"[ToolProviderRegistry] Auto-initializing provider:\",\n\t\t\t\tproviderId,\n\t\t\t);\n\t\t\tawait this.initialize(providerId);\n\t\t}\n\n\t\tconsole.log(\"[ToolProviderRegistry] Returning provider:\", {\n\t\t\tproviderId,\n\t\t\tproviderName: provider.providerName,\n\t\t\tisReady: provider.isReady(),\n\t\t});\n\n\t\treturn provider as T;\n\t}\n\n\t/**\n\t * Get all providers in a category\n\t *\n\t * @param category Tool category to filter by\n\t * @returns Array of provider IDs in the category\n\t */\n\tgetProvidersByCategory(category: ToolCategory): string[] {\n\t\treturn Array.from(this.providers.entries())\n\t\t\t.filter(([_, provider]) => provider.category === category)\n\t\t\t.map(([id]) => id);\n\t}\n\n\t/**\n\t * Get all registered provider IDs\n\t *\n\t * @returns Array of all provider IDs\n\t */\n\tgetProviderIds(): string[] {\n\t\treturn Array.from(this.providers.keys());\n\t}\n\n\t/**\n\t * Check if provider is registered\n\t *\n\t * @param providerId Provider identifier\n\t * @returns true if provider is registered\n\t */\n\thas(providerId: string): boolean {\n\t\treturn this.providers.has(providerId);\n\t}\n\n\t/**\n\t * Check if provider is initialized\n\t *\n\t * @param providerId Provider identifier\n\t * @returns true if provider is initialized\n\t */\n\tisInitialized(providerId: string): boolean {\n\t\treturn this.initialized.get(providerId) === true;\n\t}\n\n\t/**\n\t * Check if provider is currently initializing\n\t *\n\t * @param providerId Provider identifier\n\t * @returns true if initialization in progress\n\t */\n\tisInitializing(providerId: string): boolean {\n\t\treturn this.initializationPromises.has(providerId);\n\t}\n\n\t/**\n\t * Unregister and destroy a provider\n\t *\n\t * Removes the provider from the registry and calls its destroy method.\n\t *\n\t * @param providerId Provider to unregister\n\t */\n\tasync unregister(providerId: string): Promise<void> {\n\t\tconst provider = this.providers.get(providerId);\n\t\tif (provider) {\n\t\t\t// Wait for any pending initialization\n\t\t\tconst initPromise = this.initializationPromises.get(providerId);\n\t\t\tif (initPromise) {\n\t\t\t\ttry {\n\t\t\t\t\tawait initPromise;\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore initialization errors during unregister\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Destroy provider\n\t\t\tprovider.destroy();\n\n\t\t\t// Remove from registry\n\t\t\tthis.providers.delete(providerId);\n\t\t\tthis.configs.delete(providerId);\n\t\t\tthis.initialized.delete(providerId);\n\t\t\tthis.initializationPromises.delete(providerId);\n\n\t\t\tconsole.log(\n\t\t\t\t`[ToolProviderRegistry] Unregistered provider \"${providerId}\"`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Clean up all providers\n\t *\n\t * Unregisters and destroys all providers in the registry.\n\t */\n\tasync destroy(): Promise<void> {\n\t\tconst providerIds = Array.from(this.providers.keys());\n\t\tawait Promise.all(providerIds.map((id) => this.unregister(id)));\n\t\tconsole.log(\"[ToolProviderRegistry] Registry destroyed\");\n\t}\n}\n"]}
@@ -13,4 +13,3 @@ export { DesmosToolProvider } from "./DesmosToolProvider.js";
13
13
  export type { DesmosToolProviderConfig } from "./DesmosToolProvider.js";
14
14
  export { TTSToolProvider } from "./TTSToolProvider.js";
15
15
  export type { TTSToolProviderConfig, TTSBackend, } from "./TTSToolProvider.js";
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,WAAW;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,qBAAqB;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/tool-providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,WAAW;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,qBAAqB;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["/**\n * Tool Provider System\n *\n * Unified framework for managing assessment tools with authentication,\n * configuration, and lifecycle management.\n *\n * Part of PIE Assessment Toolkit.\n */\n\n// Core interfaces\nexport type {\n\tToolProviderApi,\n\tToolCategory,\n\tToolProviderCapabilities,\n} from \"./ToolProviderApi.js\";\n\n// Registry\nexport { ToolProviderRegistry } from \"./ToolProviderRegistry.js\";\nexport type { ToolProviderConfig } from \"./ToolProviderRegistry.js\";\n\n// Concrete providers\nexport { DesmosToolProvider } from \"./DesmosToolProvider.js\";\nexport type { DesmosToolProviderConfig } from \"./DesmosToolProvider.js\";\n\nexport { TTSToolProvider } from \"./TTSToolProvider.js\";\nexport type {\n\tTTSToolProviderConfig,\n\tTTSBackend,\n} from \"./TTSToolProvider.js\";\n"]}
@@ -24,4 +24,3 @@ export declare function isToolbarLinkItem(item: ToolbarItem): item is ToolbarLin
24
24
  export declare function isValidToolbarItemShape(value: unknown): value is ToolbarItem;
25
25
  export declare function isInlineSvgIcon(icon: string | undefined): boolean;
26
26
  export declare function isExternalIconUrl(icon: string | undefined): boolean;
27
- //# sourceMappingURL=toolbar-items.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-items.js","sourceRoot":"","sources":["../../src/services/toolbar-items.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IAClD,OAAO,OAAQ,IAAwB,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACrD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAgC,CAAC;IAC9C,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEpF,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC;IACtD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAwB;IACvD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"toolbar-items.js","sourceRoot":"","sources":["../../src/services/toolbar-items.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IAClD,OAAO,OAAQ,IAAwB,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACrD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAgC,CAAC;IAC9C,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEpF,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC;IACtD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAwB;IACvD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACzD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC","sourcesContent":["export interface ToolbarItemBase {\n\tid: string;\n\tlabel: string;\n\tariaLabel?: string;\n\ticon?: string;\n\ttooltip?: string;\n\tactive?: boolean;\n\tdisabled?: boolean;\n}\n\nexport interface ToolbarButtonItem extends ToolbarItemBase {\n\tonClick: () => void;\n\thref?: never;\n\ttarget?: never;\n\trel?: never;\n}\n\nexport interface ToolbarLinkItem extends ToolbarItemBase {\n\thref: string;\n\ttarget?: \"_self\" | \"_blank\" | \"_parent\" | \"_top\" | string;\n\trel?: string;\n\tonClick?: never;\n}\n\nexport type ToolbarItem = ToolbarButtonItem | ToolbarLinkItem;\n\nexport function isToolbarLinkItem(item: ToolbarItem): item is ToolbarLinkItem {\n\treturn typeof (item as ToolbarLinkItem).href === \"string\";\n}\n\nexport function isValidToolbarItemShape(value: unknown): value is ToolbarItem {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst item = value as Record<string, unknown>;\n\tif (typeof item.id !== \"string\" || item.id.trim().length === 0) return false;\n\tif (typeof item.label !== \"string\" || item.label.trim().length === 0) return false;\n\tif (item.ariaLabel !== undefined && typeof item.ariaLabel !== \"string\") return false;\n\tif (item.icon !== undefined && typeof item.icon !== \"string\") return false;\n\tif (item.tooltip !== undefined && typeof item.tooltip !== \"string\") return false;\n\tif (item.active !== undefined && typeof item.active !== \"boolean\") return false;\n\tif (item.disabled !== undefined && typeof item.disabled !== \"boolean\") return false;\n\n\tconst hasHref = typeof item.href === \"string\";\n\tconst hasOnClick = typeof item.onClick === \"function\";\n\tif (hasHref === hasOnClick) return false;\n\tif (hasHref) return true;\n\treturn hasOnClick;\n}\n\nexport function isInlineSvgIcon(icon: string | undefined): boolean {\n\treturn typeof icon === \"string\" && icon.trimStart().startsWith(\"<svg\");\n}\n\nexport function isExternalIconUrl(icon: string | undefined): boolean {\n\treturn typeof icon === \"string\" && icon.trimStart().startsWith(\"http\");\n}\n"]}
@@ -82,4 +82,3 @@ export declare function normalizeToolList(toolIds: string[] | undefined | null):
82
82
  export declare function parseToolList(input: string | undefined | null): string[];
83
83
  export declare function normalizeToolsConfig(input?: Partial<CanonicalToolsConfig> | null): CanonicalToolsConfig;
84
84
  export declare function resolveToolsForLevel(config: CanonicalToolsConfig, level: ToolPlacementLevel): string[];
85
- //# sourceMappingURL=tools-config-normalizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools-config-normalizer.js","sourceRoot":"","sources":["../../src/services/tools-config-normalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools-config-normalizer.js","sourceRoot":"","sources":["../../src/services/tools-config-normalizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_TOOL_PLACEMENT } from \"./tool-config-defaults.js\";\n\nexport type ToolPlacementLevel = \"section\" | \"item\" | \"passage\";\n\nexport interface ToolPolicyConfig {\n\tallowed?: string[];\n\tblocked?: string[];\n}\n\nexport interface ToolPlacementConfig {\n\tsection?: string[];\n\titem?: string[];\n\tpassage?: string[];\n}\n\nexport interface ToolRuntimeBackendRequest {\n\tpath: string;\n\tmethod?: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\theaders?: Record<string, string>;\n\tquery?: Record<string, string | number | boolean>;\n\tbody?: unknown;\n}\n\nexport interface ToolRuntimeProviderBridge {\n\t/**\n\t * Optional auth fetch hook for provider initialization.\n\t * Useful for retrieving temporary credentials from a host backend.\n\t */\n\tauthFetcher?: () => Promise<Record<string, unknown>>;\n\t/**\n\t * Optional backend request bridge for rich tool interactions\n\t * beyond one-time auth fetching.\n\t */\n\trequest?: (request: ToolRuntimeBackendRequest) => Promise<unknown>;\n\t/**\n\t * Optional host event emitter.\n\t */\n\temit?: (eventName: string, payload?: Record<string, unknown>) => void | Promise<void>;\n\t/**\n\t * Optional host event subscription bridge.\n\t */\n\tsubscribe?: (\n\t\teventName: string,\n\t\thandler: (payload: unknown) => void,\n\t) => (() => void) | undefined;\n\t[key: string]: unknown;\n}\n\nexport interface ToolRuntimeProviderConfig {\n\tid?: string;\n\tinit?: Record<string, unknown>;\n\truntime?: ToolRuntimeProviderBridge;\n}\n\nexport interface ToolProviderConfig {\n\tenabled?: boolean;\n\tprovider?: ToolRuntimeProviderConfig;\n\tsettings?: Record<string, unknown>;\n\t[key: string]: unknown;\n}\n\nexport interface ToolProvidersConfig {\n\t[key: string]: ToolProviderConfig | undefined;\n}\n\n/**\n * PNP/profile enforcement mode mirrored on `runtime.tools.pnpEnforcement`\n * (M5 mirror rule). Carried alongside `policy` / `placement` /\n * `providers` so hosts can pin or opt out of PNP/profile precedence via\n * the runtime config without reaching for the toolkit prop directly.\n *\n * - `\"on\"` — force enforcement (engine applies PNP/profile gates).\n * - `\"off\"` — opt out (engine ignores PNP/profile inputs).\n * - omitted / `undefined` — auto-mode (the default). The toolkit\n * coordinator computes the effective mode from PNP/profile policy material on the\n * bound `AssessmentEntity` / `AssessmentItemRef`. See\n * `resolveDefaultPnpEnforcement` in `policy/core/pnp-policy-inputs.ts`.\n */\nexport type ToolsPnpEnforcement = \"on\" | \"off\";\n\nexport interface CanonicalToolsConfig {\n\tpolicy: ToolPolicyConfig;\n\tplacement: Required<ToolPlacementConfig>;\n\tproviders: ToolProvidersConfig;\n\t/**\n\t * Optional PNP/profile enforcement override. Mirrored on\n\t * `runtime.tools.pnpEnforcement`; consumed by\n\t * `<pie-assessment-toolkit>` and `ToolkitCoordinator` as the\n\t * embedded path's equivalent of the standalone `pnp-enforcement`\n\t * attribute. See {@link ToolsPnpEnforcement} for semantics.\n\t */\n\tpnpEnforcement?: ToolsPnpEnforcement;\n}\n\nconst DEFAULT_PLACEMENT: Required<ToolPlacementConfig> = {\n\tsection: [...DEFAULT_TOOL_PLACEMENT.section],\n\titem: [...DEFAULT_TOOL_PLACEMENT.item],\n\tpassage: [...DEFAULT_TOOL_PLACEMENT.passage],\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction assertStringArray(value: unknown, fieldPath: string): string[] {\n\tif (value == null) return [];\n\tif (!Array.isArray(value)) {\n\t\tthrow new Error(\n\t\t\t`Invalid tools config at \"${fieldPath}\": expected an array of tool ids.`,\n\t\t);\n\t}\n\tconst invalidEntry = value.find((entry) => typeof entry !== \"string\");\n\tif (invalidEntry !== undefined) {\n\t\tthrow new Error(\n\t\t\t`Invalid tools config at \"${fieldPath}\": all entries must be strings.`,\n\t\t);\n\t}\n\treturn value as string[];\n}\n\nfunction assertPlacementConfig(value: unknown): ToolPlacementConfig | undefined {\n\tif (value == null) return undefined;\n\tif (!isPlainObject(value)) {\n\t\tthrow new Error(\n\t\t\t'Invalid tools config at \"placement\": expected an object with section/item/passage arrays.',\n\t\t);\n\t}\n\treturn value as ToolPlacementConfig;\n}\n\nfunction assertPolicyConfig(value: unknown): ToolPolicyConfig | undefined {\n\tif (value == null) return undefined;\n\tif (!isPlainObject(value)) {\n\t\tthrow new Error(\n\t\t\t'Invalid tools config at \"policy\": expected an object with allowed/blocked arrays.',\n\t\t);\n\t}\n\treturn value as ToolPolicyConfig;\n}\n\nfunction assertProviderConfig(\n\tproviderId: string,\n\tvalue: unknown,\n): ToolProviderConfig | undefined {\n\tif (value == null) return undefined;\n\tif (!isPlainObject(value)) {\n\t\tthrow new Error(\n\t\t\t`Invalid tools config at \"providers.${providerId}\": expected an object.`,\n\t\t);\n\t}\n\tconst config = value as ToolProviderConfig;\n\tif (\n\t\t\"enabled\" in config &&\n\t\tconfig.enabled !== undefined &&\n\t\ttypeof config.enabled !== \"boolean\"\n\t) {\n\t\tthrow new Error(\n\t\t\t`Invalid tools config at \"providers.${providerId}.enabled\": expected a boolean.`,\n\t\t);\n\t}\n\tif (\n\t\t\"settings\" in config &&\n\t\tconfig.settings !== undefined &&\n\t\t!isPlainObject(config.settings)\n\t) {\n\t\tthrow new Error(\n\t\t\t`Invalid tools config at \"providers.${providerId}.settings\": expected an object.`,\n\t\t);\n\t}\n\tif (\n\t\t\"provider\" in config &&\n\t\tconfig.provider !== undefined &&\n\t\t!isPlainObject(config.provider)\n\t) {\n\t\tthrow new Error(\n\t\t\t`Invalid tools config at \"providers.${providerId}.provider\": expected an object.`,\n\t\t);\n\t}\n\treturn config;\n}\n\nfunction assertProvidersConfig(value: unknown): ToolProvidersConfig {\n\tif (value == null) return {};\n\tif (!isPlainObject(value)) {\n\t\tthrow new Error(\n\t\t\t'Invalid tools config at \"providers\": expected an object keyed by tool id.',\n\t\t);\n\t}\n\tconst normalized: ToolProvidersConfig = {};\n\tfor (const [providerId, providerConfig] of Object.entries(value)) {\n\t\tnormalized[providerId] = assertProviderConfig(providerId, providerConfig);\n\t}\n\treturn normalized;\n}\n\nexport function normalizeToolAlias(toolId: string): string {\n\tconst trimmed = toolId.trim();\n\tif (!trimmed) return \"\";\n\treturn trimmed;\n}\n\nexport function normalizeToolList(toolIds: string[] | undefined | null): string[] {\n\tif (!toolIds || toolIds.length === 0) return [];\n\tconst deduped = new Set<string>();\n\tfor (const rawToolId of toolIds) {\n\t\tif (typeof rawToolId !== \"string\") {\n\t\t\tthrow new Error(\n\t\t\t\t\"Invalid tools config: tool list entries must be strings.\",\n\t\t\t);\n\t\t}\n\t\tconst normalized = normalizeToolAlias(rawToolId);\n\t\tif (!normalized) continue;\n\t\tdeduped.add(normalized);\n\t}\n\treturn Array.from(deduped);\n}\n\nexport function parseToolList(input: string | undefined | null): string[] {\n\tif (!input) return [];\n\treturn normalizeToolList(\n\t\tinput\n\t\t\t.split(\",\")\n\t\t\t.map((entry) => entry.trim())\n\t\t\t.filter(Boolean),\n\t);\n}\n\nfunction assertPnpEnforcement(\n\tvalue: unknown,\n\tfieldPath: \"pnpEnforcement\",\n): ToolsPnpEnforcement | undefined {\n\tif (value == null) return undefined;\n\tif (value === \"on\" || value === \"off\") return value;\n\tthrow new Error(\n\t\t`Invalid tools config at \"${fieldPath}\": expected \"on\" or \"off\", got ${JSON.stringify(value)}.`,\n\t);\n}\n\nexport function normalizeToolsConfig(\n\tinput?: Partial<CanonicalToolsConfig> | null,\n): CanonicalToolsConfig {\n\tif (input != null && !isPlainObject(input)) {\n\t\tthrow new Error(\n\t\t\t'Invalid tools config: expected an object with \"policy\", \"placement\", and \"providers\".',\n\t\t);\n\t}\n\tconst policy = assertPolicyConfig(input?.policy);\n\tconst placement = assertPlacementConfig(input?.placement);\n\tconst providers = assertProvidersConfig(input?.providers);\n\tconst pnpEnforcement = assertPnpEnforcement(\n\t\tinput?.pnpEnforcement,\n\t\t\"pnpEnforcement\",\n\t);\n\n\tconst config: CanonicalToolsConfig = {\n\t\tpolicy: {\n\t\t\tallowed: normalizeToolList(assertStringArray(policy?.allowed, \"policy.allowed\")),\n\t\t\tblocked: normalizeToolList(assertStringArray(policy?.blocked, \"policy.blocked\")),\n\t\t},\n\t\tplacement: {\n\t\t\tsection: normalizeToolList(\n\t\t\t\tassertStringArray(placement?.section, \"placement.section\"),\n\t\t\t).length\n\t\t\t\t? normalizeToolList(assertStringArray(placement?.section, \"placement.section\"))\n\t\t\t\t: [...DEFAULT_PLACEMENT.section],\n\t\t\titem: normalizeToolList(assertStringArray(placement?.item, \"placement.item\"))\n\t\t\t\t.length\n\t\t\t\t? normalizeToolList(assertStringArray(placement?.item, \"placement.item\"))\n\t\t\t\t: [...DEFAULT_PLACEMENT.item],\n\t\t\tpassage: normalizeToolList(\n\t\t\t\tassertStringArray(placement?.passage, \"placement.passage\"),\n\t\t\t).length\n\t\t\t\t? normalizeToolList(assertStringArray(placement?.passage, \"placement.passage\"))\n\t\t\t\t: [...DEFAULT_PLACEMENT.passage],\n\t\t},\n\t\tproviders,\n\t};\n\tif (pnpEnforcement) {\n\t\tconfig.pnpEnforcement = pnpEnforcement;\n\t}\n\treturn config;\n}\n\nexport function resolveToolsForLevel(\n\tconfig: CanonicalToolsConfig,\n\tlevel: ToolPlacementLevel,\n): string[] {\n\tconst placement = normalizeToolList(config.placement[level]);\n\tconst allowed = normalizeToolList(config.policy.allowed);\n\tconst blocked = new Set(normalizeToolList(config.policy.blocked));\n\tconst passAllowed =\n\t\tallowed.length === 0 ? placement : placement.filter((toolId) => allowed.includes(toolId));\n\treturn passAllowed.filter((toolId) => !blocked.has(toolId));\n}\n"]}
@@ -21,4 +21,3 @@ export declare class BrowserTTSProvider implements ITTSProvider {
21
21
  getCapabilities(): TTSProviderCapabilities;
22
22
  destroy(): void;
23
23
  }
24
- //# sourceMappingURL=browser-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["../../../src/services/tts/browser-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["../../../src/services/tts/browser-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Browser TTS Provider\n *\n * Text-to-speech provider using the browser's Web Speech API.\n * Works in all modern browsers that support SpeechSynthesis.\n *\n * Part of PIE Assessment Toolkit.\n */\n\nimport type {\n\tITTSProvider,\n\tITTSProviderImplementation,\n\tTTSConfig,\n\tTTSFeature,\n\tTTSProviderCapabilities,\n} from \"@pie-players/pie-tts\";\nimport {\n\tsegmentSentences as segmentTextToSentences,\n} from \"./text-segmentation.js\";\n\ninterface TTSSpeechSegment {\n\ttext: string;\n\tstartOffset: number;\n\tpauseMsAfter?: number;\n}\n\n/**\n * Browser TTS Provider\n *\n * Stateless factory for creating browser-based TTS implementations.\n */\nexport class BrowserTTSProvider implements ITTSProvider {\n\treadonly providerId = \"browser\";\n\treadonly providerName = \"Browser Speech Synthesis\";\n\treadonly version = \"1.0.0\";\n\n\tasync initialize(config: TTSConfig): Promise<ITTSProviderImplementation> {\n\t\t// SSR guard\n\t\tif (typeof window === \"undefined\") {\n\t\t\tthrow new Error(\"BrowserTTSProvider requires browser environment\");\n\t\t}\n\n\t\t// Check browser support\n\t\tif (!(\"speechSynthesis\" in window)) {\n\t\t\tthrow new Error(\"Browser does not support Speech Synthesis API\");\n\t\t}\n\n\t\treturn new BrowserTTSProviderImpl(config);\n\t}\n\n\tsupportsFeature(feature: TTSFeature): boolean {\n\t\t// Browser supports all TTS features\n\t\treturn true;\n\t}\n\n\tgetCapabilities(): TTSProviderCapabilities {\n\t\treturn {\n\t\t\tsupportsPause: true,\n\t\t\tsupportsResume: true,\n\t\t\tsupportsWordBoundary: true,\n\t\t\tsupportsVoiceSelection: true,\n\t\t\tsupportsRateControl: true,\n\t\t\tsupportsPitchControl: true,\n\t\t};\n\t}\n\n\tdestroy(): void {\n\t\t// No cleanup needed for browser provider\n\t}\n}\n\n/**\n * Browser TTS Provider Implementation\n *\n * Handles actual speech synthesis using the Web Speech API.\n */\nclass BrowserTTSProviderImpl implements ITTSProviderImplementation {\n\tprivate utterance: SpeechSynthesisUtterance | null = null;\n\tprivate config: TTSConfig | null = null;\n\tprivate _isPlaying = false;\n\tprivate _isPaused = false;\n\tprivate speakRunId = 0;\n\n\tconstructor(config: TTSConfig) {\n\t\tthis.config = config;\n\t}\n\n\tasync speak(text: string): Promise<void> {\n\t\tif (!this.config) {\n\t\t\tthrow new Error(\"TTS not initialized\");\n\t\t}\n\t\t// Invalidate any in-flight run and cancel current utterance.\n\t\tthis.stop();\n\t\tconst runId = this.speakRunId;\n\n\t\tconst chunks = this.splitIntoChunks(text);\n\t\tfor (const chunk of chunks) {\n\t\t\tif (runId !== this.speakRunId) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst shouldContinue = await this.speakChunk(chunk.text, chunk.offset, runId);\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync speakSegments(segments: TTSSpeechSegment[]): Promise<void> {\n\t\tif (!this.config) {\n\t\t\tthrow new Error(\"TTS not initialized\");\n\t\t}\n\t\tthis.stop();\n\t\tconst runId = this.speakRunId;\n\t\tfor (const segment of segments) {\n\t\t\tif (runId !== this.speakRunId) break;\n\t\t\tconst chunks = this.splitIntoChunks(segment.text);\n\t\t\tfor (const chunk of chunks) {\n\t\t\t\tif (runId !== this.speakRunId) break;\n\t\t\t\tconst shouldContinue = await this.speakChunk(\n\t\t\t\t\tchunk.text,\n\t\t\t\t\tsegment.startOffset + chunk.offset,\n\t\t\t\t\trunId,\n\t\t\t\t);\n\t\t\t\tif (!shouldContinue) break;\n\t\t\t}\n\t\t\tconst pauseMsAfter = Math.max(0, Number(segment.pauseMsAfter || 0));\n\t\t\tif (pauseMsAfter > 0 && runId === this.speakRunId) {\n\t\t\t\tconst shouldContinue = await this.waitForPause(pauseMsAfter, runId);\n\t\t\t\tif (!shouldContinue) break;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async waitForPause(pauseMs: number, runId: number): Promise<boolean> {\n\t\tawait new Promise((resolve) => setTimeout(resolve, pauseMs));\n\t\treturn runId === this.speakRunId;\n\t}\n\n\tprivate splitIntoChunks(text: string): Array<{ text: string; offset: number }> {\n\t\tconst MAX_CHUNK_LENGTH = 260;\n\t\tif (text.length <= MAX_CHUNK_LENGTH) {\n\t\t\treturn [{ text, offset: 0 }];\n\t\t}\n\n\t\tconst sentences = this.segmentSentences(text);\n\t\tconst chunks: Array<{ text: string; offset: number }> = [];\n\t\tlet currentText = \"\";\n\t\tlet currentOffset = 0;\n\n\t\tfor (const sentence of sentences) {\n\t\t\tconst trimmed = sentence.text.trim();\n\t\t\tif (!trimmed) continue;\n\t\t\tconst firstNonWhitespace = sentence.text.search(/\\S/);\n\t\t\tconst trimmedStart =\n\t\t\t\tsentence.offset + (firstNonWhitespace === -1 ? 0 : firstNonWhitespace);\n\n\t\t\tif (!currentText) {\n\t\t\t\tcurrentText = trimmed;\n\t\t\t\tcurrentOffset = trimmedStart;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst candidate = `${currentText} ${trimmed}`;\n\t\t\tif (candidate.length <= MAX_CHUNK_LENGTH) {\n\t\t\t\tcurrentText = candidate;\n\t\t\t} else {\n\t\t\t\tchunks.push({ text: currentText, offset: currentOffset });\n\t\t\t\tcurrentText = trimmed;\n\t\t\t\tcurrentOffset = trimmedStart;\n\t\t\t}\n\t\t}\n\n\t\tif (currentText) {\n\t\t\tchunks.push({ text: currentText, offset: currentOffset });\n\t\t}\n\t\treturn chunks.length ? chunks : [{ text, offset: 0 }];\n\t}\n\n\tprivate getHighlightMode(): \"word\" | \"sentence\" {\n\t\tconst providerOptions = (this.config?.providerOptions || {}) as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>;\n\t\treturn providerOptions.highlightMode === \"word\" ? \"word\" : \"sentence\";\n\t}\n\n\tprivate getSegmentationPolicy(): {\n\t\tuseSentenceSegmenter: boolean;\n\t\tuseWordSegmenter: boolean;\n\t\tlocale?: string;\n\t} {\n\t\tconst providerOptions = (this.config?.providerOptions || {}) as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>;\n\t\tconst segmenter = (providerOptions.segmenter || {}) as Record<string, unknown>;\n\t\tconst mode = segmenter.mode;\n\t\tconst useSegmenter = mode !== \"regexOnly\";\n\t\tconst locale =\n\t\t\ttypeof segmenter.locale === \"string\" && segmenter.locale.trim().length > 0\n\t\t\t\t? segmenter.locale\n\t\t\t\t: typeof providerOptions.locale === \"string\" &&\n\t\t\t\t\t providerOptions.locale.trim().length > 0\n\t\t\t\t\t? providerOptions.locale\n\t\t\t\t\t: undefined;\n\t\treturn {\n\t\t\tuseSentenceSegmenter: useSegmenter,\n\t\t\tuseWordSegmenter: useSegmenter,\n\t\t\tlocale,\n\t\t};\n\t}\n\n\tprivate segmentSentences(text: string): Array<{ text: string; offset: number }> {\n\t\tconst policy = this.getSegmentationPolicy();\n\t\treturn segmentTextToSentences(text, {\n\t\t\tlocale: policy.locale,\n\t\t\tuseSentenceSegmenter: policy.useSentenceSegmenter,\n\t\t});\n\t}\n\n\tprivate inferWordLength(text: string, index: number): number {\n\t\tconst safeIndex = Math.max(0, Math.min(index, Math.max(0, text.length - 1)));\n\t\tconst slice = text.slice(safeIndex);\n\t\tconst match = slice.match(/^\\s*([^\\s]+)/);\n\t\treturn match?.[1]?.length || 1;\n\t}\n\n\tprivate async speakChunk(\n\t\tchunkText: string,\n\t\tchunkOffset: number,\n\t\trunId: number,\n\t): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (runId !== this.speakRunId) {\n\t\t\t\tresolve(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.utterance = new SpeechSynthesisUtterance(chunkText);\n\n\t\t\t// Apply config\n\t\t\tif (this.config?.voice) {\n\t\t\t\tconst voices = speechSynthesis.getVoices();\n\t\t\t\tconst voice = voices.find((v) => v.name === this.config!.voice);\n\t\t\t\tif (voice) this.utterance!.voice = voice;\n\t\t\t}\n\n\t\t\tif (this.config?.rate) this.utterance.rate = this.config.rate;\n\t\t\tif (this.config?.pitch) this.utterance.pitch = this.config.pitch;\n\n\t\t\tthis.utterance.onstart = () => {\n\t\t\t\tif (runId !== this.speakRunId) return;\n\t\t\t\tthis._isPlaying = true;\n\t\t\t\tthis._isPaused = false;\n\t\t\t};\n\n\t\t\tthis.utterance.onend = () => {\n\t\t\t\tif (runId !== this.speakRunId) {\n\t\t\t\t\tresolve(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._isPlaying = false;\n\t\t\t\tthis._isPaused = false;\n\t\t\t\tresolve(true);\n\t\t\t};\n\n\t\t\tthis.utterance.onerror = (event) => {\n\t\t\t\tif (runId !== this.speakRunId) {\n\t\t\t\t\tresolve(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._isPlaying = false;\n\t\t\t\tthis._isPaused = false;\n\t\t\t\tif (event.error === \"interrupted\" || event.error === \"canceled\") {\n\t\t\t\t\tresolve(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treject(new Error(`Speech synthesis error: ${event.error}`));\n\t\t\t};\n\n\t\t\tthis.utterance.onpause = () => {\n\t\t\t\tif (runId !== this.speakRunId) return;\n\t\t\t\tthis._isPaused = true;\n\t\t\t};\n\n\t\t\tthis.utterance.onresume = () => {\n\t\t\t\tif (runId !== this.speakRunId) return;\n\t\t\t\tthis._isPaused = false;\n\t\t\t};\n\n\t\t\tthis.utterance.onboundary = (event) => {\n\t\t\t\tif (runId !== this.speakRunId) return;\n\t\t\t\tconsole.log(\n\t\t\t\t\t\"[BrowserProvider] Boundary event:\",\n\t\t\t\t\tevent.name,\n\t\t\t\t\t\"charIndex:\",\n\t\t\t\t\tevent.charIndex,\n\t\t\t\t\t\"charLength:\",\n\t\t\t\t\tevent.charLength,\n\t\t\t\t);\n\t\t\t\tif (event.name !== \"word\" || !this.onWordBoundary) return;\n\t\t\t\tif (this.getHighlightMode() === \"sentence\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst charIndex = Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\tMath.min(event.charIndex, Math.max(0, chunkText.length - 1)),\n\t\t\t\t);\n\t\t\t\tconst reportedLength = Number(event.charLength || 0);\n\t\t\t\tconst inferredLength = this.inferWordLength(chunkText, charIndex);\n\t\t\t\tconst wordLength =\n\t\t\t\t\tNumber.isFinite(reportedLength) &&\n\t\t\t\t\treportedLength > 0 &&\n\t\t\t\t\treportedLength <= 80 &&\n\t\t\t\t\tcharIndex + reportedLength <= chunkText.length\n\t\t\t\t\t\t? reportedLength\n\t\t\t\t\t\t: inferredLength;\n\t\t\t\tconst word = chunkText\n\t\t\t\t\t.substring(charIndex, Math.min(chunkText.length, charIndex + wordLength))\n\t\t\t\t\t.trim();\n\t\t\t\tconst absoluteBoundaryStart = chunkOffset + charIndex;\n\t\t\t\tconsole.log(\n\t\t\t\t\t\"[BrowserProvider] Calling onWordBoundary with word:\",\n\t\t\t\t\tword,\n\t\t\t\t\t\"at position:\",\n\t\t\t\t\tabsoluteBoundaryStart,\n\t\t\t\t);\n\t\t\t\tthis.onWordBoundary(word, absoluteBoundaryStart, wordLength);\n\t\t\t};\n\n\t\t\tspeechSynthesis.speak(this.utterance);\n\t\t});\n\t}\n\n\tpause(): void {\n\t\tif (this._isPlaying && !this._isPaused) {\n\t\t\tspeechSynthesis.pause();\n\t\t}\n\t}\n\n\tresume(): void {\n\t\tif (this._isPlaying && this._isPaused) {\n\t\t\tspeechSynthesis.resume();\n\t\t}\n\t}\n\n\tstop(): void {\n\t\tthis.speakRunId += 1;\n\t\tif (this._isPlaying) {\n\t\t\tspeechSynthesis.cancel();\n\t\t}\n\t\tthis._isPlaying = false;\n\t\tthis._isPaused = false;\n\t}\n\n\tisPlaying(): boolean {\n\t\treturn this._isPlaying && !this._isPaused;\n\t}\n\n\tisPaused(): boolean {\n\t\treturn this._isPaused;\n\t}\n\n\t/**\n\t * Update settings dynamically (rate, pitch, voice)\n\t * Changes take effect on the next speak() call\n\t */\n\tupdateSettings(settings: Partial<TTSConfig>): void {\n\t\tif (!this.config) {\n\t\t\tthis.config = {} as TTSConfig;\n\t\t}\n\n\t\t// Update config with new settings\n\t\tif (settings.rate !== undefined) {\n\t\t\tthis.config.rate = settings.rate;\n\t\t}\n\t\tif (settings.pitch !== undefined) {\n\t\t\tthis.config.pitch = settings.pitch;\n\t\t}\n\t\tif (settings.voice !== undefined) {\n\t\t\tthis.config.voice = settings.voice;\n\t\t}\n\t\tif (settings.providerOptions !== undefined) {\n\t\t\tthis.config.providerOptions = {\n\t\t\t\t...(this.config.providerOptions || {}),\n\t\t\t\t...(settings.providerOptions || {}),\n\t\t\t};\n\t\t}\n\t}\n\n\tonWordBoundary?: (word: string, position: number, length?: number) => void;\n}\n"]}
@@ -14,4 +14,3 @@ export declare const collectVisibleTextAndMap: (element: Element, options?: Text
14
14
  map: NormalizedTextMap;
15
15
  };
16
16
  export declare const extractVisibleText: (element: Element, options?: TextProcessingOptions) => string;
17
- //# sourceMappingURL=text-processing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-processing.js","sourceRoot":"","sources":["../../../src/services/tts/text-processing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-processing.js","sourceRoot":"","sources":["../../../src/services/tts/text-processing.ts"],"names":[],"mappings":"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","sourcesContent":["export type NormalizedTextMap = Map<number, { node: Text; offset: number }>;\nexport type BoundarySpacingMode = \"segmenterPreferred\" | \"alnum\" | \"none\";\n\nexport interface TextProcessingOptions {\n\tlocale?: string;\n\tboundarySpacingMode?: BoundarySpacingMode;\n}\n\nexport const normalizeTextForSpeech = (text: string): string =>\n\ttext.trim().replace(/\\s+/g, \" \");\n\nexport const isElementHiddenForTTS = (element: Element): boolean => {\n\tif ((element as HTMLElement).hidden) return true;\n\tif (element.getAttribute(\"aria-hidden\") === \"true\") return true;\n\tif (element.hasAttribute(\"inert\")) return true;\n\tconst classList = (element as HTMLElement).classList;\n\tif (\n\t\tclassList?.contains(\"sr-only\") ||\n\t\tclassList?.contains(\"pie-sr-only\") ||\n\t\tclassList?.contains(\"visually-hidden\")\n\t) {\n\t\treturn true;\n\t}\n\tif (typeof window !== \"undefined\") {\n\t\tconst style = window.getComputedStyle(element);\n\t\tif (style.display === \"none\" || style.visibility === \"hidden\") {\n\t\t\treturn true;\n\t\t}\n\t\tconst width = Number.parseFloat(style.width || \"0\");\n\t\tconst height = Number.parseFloat(style.height || \"0\");\n\t\tconst isTiny =\n\t\t\tNumber.isFinite(width) &&\n\t\t\tNumber.isFinite(height) &&\n\t\t\twidth <= 1 &&\n\t\t\theight <= 1;\n\t\tconst isOffscreenClip =\n\t\t\tstyle.clipPath.includes(\"inset(50%\") ||\n\t\t\tstyle.clipPath.includes(\"inset(100%\") ||\n\t\t\tstyle.clip.includes(\"rect(0px, 0px, 0px, 0px)\") ||\n\t\t\tstyle.clip.includes(\"rect(0 0 0 0)\");\n\t\tif (\n\t\t\t(style.position === \"absolute\" || style.position === \"fixed\") &&\n\t\t\tisTiny &&\n\t\t\t(style.overflow === \"hidden\" || isOffscreenClip)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.opacity === \"0\" && isTiny) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nconst shouldInsertBoundarySpace = (\n\tpreviousChar: string | null,\n\tnextChar: string | null,\n\toptions?: TextProcessingOptions,\n): boolean => {\n\tif (!previousChar || !nextChar) return false;\n\tif (/\\s/.test(previousChar) || /\\s/.test(nextChar)) return false;\n\tconst mode = options?.boundarySpacingMode ?? \"segmenterPreferred\";\n\tif (mode === \"none\") return false;\n\tif (mode === \"segmenterPreferred\") {\n\t\ttry {\n\t\t\tconst Segmenter = globalThis.Intl?.Segmenter;\n\t\t\tif (typeof Segmenter === \"function\") {\n\t\t\t\tconst segmenter = new Segmenter(options?.locale, { granularity: \"word\" });\n\t\t\t\tconst segments = Array.from(segmenter.segment(`${previousChar}${nextChar}`));\n\t\t\t\tconst wordLikeCount = segments.filter(\n\t\t\t\t\t(segment) =>\n\t\t\t\t\t\t(segment as { isWordLike?: boolean }).isWordLike !== false &&\n\t\t\t\t\t\tsegment.segment.trim().length > 0,\n\t\t\t\t).length;\n\t\t\t\tif (wordLikeCount >= 2) return true;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Fall back to alnum heuristics below.\n\t\t}\n\t}\n\tconst prevIsAlnum = /[A-Za-z0-9]/.test(previousChar);\n\tconst nextIsAlnum = /[A-Za-z0-9]/.test(nextChar);\n\treturn prevIsAlnum && nextIsAlnum;\n};\n\nexport const collectVisibleTextAndMap = (\n\telement: Element,\n\toptions?: TextProcessingOptions,\n): { text: string; map: NormalizedTextMap } => {\n\tconst map: NormalizedTextMap = new Map();\n\tif (\n\t\ttypeof document === \"undefined\" ||\n\t\ttypeof (document as { createTreeWalker?: unknown }).createTreeWalker !==\n\t\t\t\"function\" ||\n\t\ttypeof NodeFilter === \"undefined\"\n\t) {\n\t\treturn { text: \"\", map };\n\t}\n\tconst outChars: string[] = [];\n\tlet outPos = 0;\n\tlet inLeadingWhitespace = true;\n\tlet lastCharWasWhitespace = false;\n\tlet lastMapped: { node: Text; offset: number } | null = null;\n\tlet previousVisibleChar: string | null = null;\n\n\tconst walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);\n\tlet current = walker.nextNode();\n\twhile (current) {\n\t\tconst textNode = current as Text;\n\t\tconst parent = textNode.parentElement;\n\t\tif (parent && !isElementHiddenForTTS(parent)) {\n\t\t\tconst raw = textNode.textContent || \"\";\n\t\t\tconst firstVisibleMatch = raw.match(/\\S/);\n\t\t\tconst firstVisibleChar = firstVisibleMatch ? firstVisibleMatch[0] : null;\n\n\t\t\tif (\n\t\t\t\t!inLeadingWhitespace &&\n\t\t\t\t!lastCharWasWhitespace &&\n\t\t\t\tshouldInsertBoundarySpace(previousVisibleChar, firstVisibleChar, options)\n\t\t\t) {\n\t\t\t\toutChars.push(\" \");\n\t\t\t\tif (lastMapped) {\n\t\t\t\t\tmap.set(outPos, lastMapped);\n\t\t\t\t}\n\t\t\t\toutPos++;\n\t\t\t\tlastCharWasWhitespace = true;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\t\tconst ch = raw[i];\n\t\t\t\tconst isWhitespace = /\\s/.test(ch);\n\n\t\t\t\tif (inLeadingWhitespace) {\n\t\t\t\t\tif (!isWhitespace) {\n\t\t\t\t\t\tinLeadingWhitespace = false;\n\t\t\t\t\t\toutChars.push(ch);\n\t\t\t\t\t\tmap.set(outPos, { node: textNode, offset: i });\n\t\t\t\t\t\tlastMapped = { node: textNode, offset: i };\n\t\t\t\t\t\toutPos++;\n\t\t\t\t\t\tlastCharWasWhitespace = false;\n\t\t\t\t\t\tpreviousVisibleChar = ch;\n\t\t\t\t\t}\n\t\t\t\t} else if (isWhitespace) {\n\t\t\t\t\tif (!lastCharWasWhitespace) {\n\t\t\t\t\t\toutChars.push(\" \");\n\t\t\t\t\t\tmap.set(outPos, { node: textNode, offset: i });\n\t\t\t\t\t\tlastMapped = { node: textNode, offset: i };\n\t\t\t\t\t\toutPos++;\n\t\t\t\t\t}\n\t\t\t\t\tlastCharWasWhitespace = true;\n\t\t\t\t} else {\n\t\t\t\t\toutChars.push(ch);\n\t\t\t\t\tmap.set(outPos, { node: textNode, offset: i });\n\t\t\t\t\tlastMapped = { node: textNode, offset: i };\n\t\t\t\t\toutPos++;\n\t\t\t\t\tlastCharWasWhitespace = false;\n\t\t\t\t\tpreviousVisibleChar = ch;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcurrent = walker.nextNode();\n\t}\n\n\tconst text = outChars.join(\"\").trimEnd();\n\twhile (map.has(text.length)) {\n\t\tmap.delete(text.length);\n\t}\n\treturn { text, map };\n};\n\nexport const extractVisibleText = (\n\telement: Element,\n\toptions?: TextProcessingOptions,\n): string => collectVisibleTextAndMap(element, options).text;\n"]}
@@ -7,4 +7,3 @@ export interface SentenceSegmentationOptions {
7
7
  useSentenceSegmenter?: boolean;
8
8
  }
9
9
  export declare const segmentSentences: (text: string, options?: SentenceSegmentationOptions) => SentenceSegment[];
10
- //# sourceMappingURL=text-segmentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-segmentation.js","sourceRoot":"","sources":["../../../src/services/tts/text-segmentation.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,IAAY,EACZ,OAAqC,EACjB,EAAE;IACtB,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,KAAK,KAAK,CAAC;IACrE,IAAI,CAAC;QACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QAC7C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE;gBAChD,WAAW,EAAE,UAAU;aACvB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAClB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC;QACtC,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,sCAAsC;IACvC,CAAC;IAED,MAAM,aAAa,GAAG,sBAAsB,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,SAAS;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC"}
1
+ {"version":3,"file":"text-segmentation.js","sourceRoot":"","sources":["../../../src/services/tts/text-segmentation.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,IAAY,EACZ,OAAqC,EACjB,EAAE;IACtB,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,KAAK,KAAK,CAAC;IACrE,IAAI,CAAC;QACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;QAC7C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE;gBAChD,WAAW,EAAE,UAAU;aACvB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAClB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,MAAM,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC;QACtC,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,sCAAsC;IACvC,CAAC;IAED,MAAM,aAAa,GAAG,sBAAsB,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,SAAS;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC","sourcesContent":["export interface SentenceSegment {\n\ttext: string;\n\toffset: number;\n}\n\nexport interface SentenceSegmentationOptions {\n\tlocale?: string;\n\tuseSentenceSegmenter?: boolean;\n}\n\nexport const segmentSentences = (\n\ttext: string,\n\toptions?: SentenceSegmentationOptions,\n): SentenceSegment[] => {\n\tconst useSentenceSegmenter = options?.useSentenceSegmenter !== false;\n\ttry {\n\t\tif (!useSentenceSegmenter) {\n\t\t\tthrow new Error(\"Segmenter disabled by policy\");\n\t\t}\n\t\tconst Segmenter = globalThis.Intl?.Segmenter;\n\t\tif (typeof Segmenter === \"function\") {\n\t\t\tconst segmenter = new Segmenter(options?.locale, {\n\t\t\t\tgranularity: \"sentence\",\n\t\t\t});\n\t\t\tconst parsed = Array.from(segmenter.segment(text))\n\t\t\t\t.map((segment) => ({\n\t\t\t\t\ttext: segment.segment,\n\t\t\t\t\toffset: segment.index,\n\t\t\t\t}))\n\t\t\t\t.filter((segment) => segment.text.trim().length > 0);\n\t\t\tif (parsed.length > 0) return parsed;\n\t\t}\n\t} catch {\n\t\t// Fall through to regex segmentation.\n\t}\n\n\tconst sentenceRegex = /[^.!?]+(?:[.!?]+|$)/g;\n\tconst raw = text.match(sentenceRegex) || [text];\n\tconst parsed: SentenceSegment[] = [];\n\tlet processed = 0;\n\tfor (const sentence of raw) {\n\t\tconst offset = text.indexOf(sentence, processed);\n\t\tif (offset === -1) continue;\n\t\tparsed.push({ text: sentence, offset });\n\t\tprocessed = offset + sentence.length;\n\t}\n\treturn parsed.length > 0 ? parsed : [{ text, offset: 0 }];\n};\n"]}
@@ -16,4 +16,3 @@ export declare function intersectRangeWithElement(range: Range, root: Element):
16
16
  * when layout or caret APIs are unavailable.
17
17
  */
18
18
  export declare function visualLineRangesForFocusInRoot(root: Element, focus: Range): Range[];
19
- //# sourceMappingURL=visual-line-ranges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"visual-line-ranges.js","sourceRoot":"","sources":["../../../src/services/tts/visual-line-ranges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visual-line-ranges.js","sourceRoot":"","sources":["../../../src/services/tts/visual-line-ranges.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Derive visual line box ranges inside a root element for TTS read-along.\n *\n * Cloud TTS (Polly, Google, etc.) only provides word/sentence character offsets.\n * “Lines” are layout-dependent (wrap, zoom, font size), so we compute them in\n * the browser from the same DOM Range already used for word highlighting.\n */\n\nconst LINE_TOP_EPSILON = 2;\nconst CARET_INSET = 1;\nconst HORIZONTAL_PROBE_STEP = 3;\nconst MAX_HORIZONTAL_PROBES = 400;\nconst MAX_LINE_RANGES = 48;\n\ntype DocumentWithCaret = Document & {\n\tcaretRangeFromPoint?: (x: number, y: number) => Range | null;\n\tcaretPositionFromPoint?: (\n\t\tx: number,\n\t\ty: number,\n\t) => { offsetNode: Node; offset: number } | null;\n};\n\nfunction caretRangeAtPoint(doc: Document, x: number, y: number): Range | null {\n\tconst d = doc as DocumentWithCaret;\n\tif (typeof d.caretRangeFromPoint === \"function\") {\n\t\ttry {\n\t\t\treturn d.caretRangeFromPoint(x, y);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\tconst pos = d.caretPositionFromPoint?.(x, y);\n\tif (\n\t\tpos?.offsetNode?.nodeType === Node.TEXT_NODE ||\n\t\tpos?.offsetNode?.nodeType === Node.ELEMENT_NODE\n\t) {\n\t\tconst r = doc.createRange();\n\t\ttry {\n\t\t\tr.setStart(pos.offsetNode, pos.offset);\n\t\t\tr.collapse(true);\n\t\t\treturn r;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction collapsedRangeTop(r: Range): number | null {\n\tconst rects = r.getClientRects();\n\tif (rects.length === 0) return null;\n\treturn rects[0].top;\n}\n\n/**\n * Intersect `range` with the contents of `root` (document order).\n * Returns null if there is no non-empty intersection.\n */\nexport function intersectRangeWithElement(\n\trange: Range,\n\troot: Element,\n): Range | null {\n\tif (typeof document === \"undefined\") return null;\n\tif (typeof range.compareBoundaryPoints !== \"function\") return null;\n\ttry {\n\t\tconst doc = range.startContainer.ownerDocument || document;\n\t\tconst rootRange = doc.createRange();\n\t\trootRange.selectNodeContents(root);\n\n\t\tif (range.compareBoundaryPoints(Range.END_TO_START, rootRange) <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\tif (range.compareBoundaryPoints(Range.START_TO_END, rootRange) >= 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst out = doc.createRange();\n\t\tif (range.compareBoundaryPoints(Range.START_TO_START, rootRange) < 0) {\n\t\t\tout.setStart(rootRange.startContainer, rootRange.startOffset);\n\t\t} else {\n\t\t\tout.setStart(range.startContainer, range.startOffset);\n\t\t}\n\t\tif (range.compareBoundaryPoints(Range.END_TO_END, rootRange) > 0) {\n\t\t\tout.setEnd(rootRange.endContainer, rootRange.endOffset);\n\t\t} else {\n\t\t\tout.setEnd(range.endContainer, range.endOffset);\n\t\t}\n\t\tif (out.collapsed) return null;\n\t\treturn out;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction lineKeyForRect(top: number): number {\n\treturn Math.round(top / LINE_TOP_EPSILON);\n}\n\nfunction extendLineEdge(\n\tdoc: Document,\n\troot: Element,\n\trefTop: number,\n\tmidY: number,\n\tstartX: number,\n\trootLeft: number,\n\trootRight: number,\n\tdirection: \"left\" | \"right\",\n): Range | null {\n\tlet lastGood: Range | null = null;\n\tlet x = startX;\n\tif (direction === \"left\") {\n\t\tfor (let i = 0; i < MAX_HORIZONTAL_PROBES && x >= rootLeft + CARET_INSET; i++) {\n\t\t\tconst cr = caretRangeAtPoint(doc, x, midY);\n\t\t\tif (!cr || !rootContainsNode(root, cr.startContainer)) break;\n\t\t\tconst t = collapsedRangeTop(cr);\n\t\t\tif (t === null || Math.abs(t - refTop) > LINE_TOP_EPSILON) break;\n\t\t\tlastGood = cr.cloneRange();\n\t\t\tx -= HORIZONTAL_PROBE_STEP;\n\t\t}\n\t} else {\n\t\tfor (let i = 0; i < MAX_HORIZONTAL_PROBES && x <= rootRight - CARET_INSET; i++) {\n\t\t\tconst cr = caretRangeAtPoint(doc, x, midY);\n\t\t\tif (!cr || !rootContainsNode(root, cr.startContainer)) break;\n\t\t\tconst t = collapsedRangeTop(cr);\n\t\t\tif (t === null || Math.abs(t - refTop) > LINE_TOP_EPSILON) break;\n\t\t\tlastGood = cr.cloneRange();\n\t\t\tx += HORIZONTAL_PROBE_STEP;\n\t\t}\n\t}\n\treturn lastGood;\n}\n\nfunction rootContainsNode(root: Element, node: Node): boolean {\n\tif (typeof root.contains !== \"function\") return false;\n\ttry {\n\t\treturn root.contains(node);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction fallbackSingleRangeFromFocus(focus: Range): Range[] {\n\ttry {\n\t\tconst doc = focus.startContainer.ownerDocument || document;\n\t\tconst r = doc.createRange();\n\t\tr.setStart(focus.startContainer, focus.startOffset);\n\t\tr.setEnd(focus.endContainer, focus.endOffset);\n\t\treturn [r];\n\t} catch {\n\t\treturn [];\n\t}\n}\n\n/**\n * Returns one Range per visual line that intersects `focus`, expanded to the\n * full width of each line within `root`. Falls back to `[intersectedFocus]`\n * when layout or caret APIs are unavailable.\n */\nexport function visualLineRangesForFocusInRoot(\n\troot: Element,\n\tfocus: Range,\n): Range[] {\n\tif (typeof document === \"undefined\") return [];\n\tif (!focus.startContainer) {\n\t\treturn [];\n\t}\n\n\tconst doc = focus.startContainer.ownerDocument || document;\n\tconst intersected = intersectRangeWithElement(focus, root);\n\tif (!intersected) {\n\t\treturn fallbackSingleRangeFromFocus(focus);\n\t}\n\n\tlet rects: DOMRect[];\n\ttry {\n\t\trects = Array.from(intersected.getClientRects()).filter(\n\t\t\t(r) => r.width > 0 && r.height > 0,\n\t\t);\n\t} catch {\n\t\treturn [intersected.cloneRange()];\n\t}\n\tif (rects.length === 0) {\n\t\treturn [intersected.cloneRange()];\n\t}\n\n\tlet rootBounds: DOMRect;\n\ttry {\n\t\trootBounds = root.getBoundingClientRect();\n\t} catch {\n\t\treturn [intersected.cloneRange()];\n\t}\n\tconst groups = new Map<number, DOMRect[]>();\n\tfor (const rect of rects) {\n\t\tconst key = lineKeyForRect(rect.top);\n\t\tconst list = groups.get(key);\n\t\tif (list) list.push(rect);\n\t\telse groups.set(key, [rect]);\n\t}\n\n\tconst sortedKeys = Array.from(groups.keys()).sort((a, b) => a - b);\n\tconst out: Range[] = [];\n\n\tfor (const key of sortedKeys) {\n\t\tif (out.length >= MAX_LINE_RANGES) break;\n\t\tconst group = groups.get(key);\n\t\tif (!group?.length) continue;\n\n\t\tlet sumTop = 0;\n\t\tlet sumMid = 0;\n\t\tlet minL = Infinity;\n\t\tlet maxR = -Infinity;\n\t\tfor (const r of group) {\n\t\t\tsumTop += r.top;\n\t\t\tsumMid += r.top + r.height / 2;\n\t\t\tminL = Math.min(minL, r.left);\n\t\t\tmaxR = Math.max(maxR, r.right);\n\t\t}\n\t\tconst refTop = sumTop / group.length;\n\t\tconst midY = sumMid / group.length;\n\n\t\tconst leftEdge = extendLineEdge(\n\t\t\tdoc,\n\t\t\troot,\n\t\t\trefTop,\n\t\t\tmidY,\n\t\t\tminL,\n\t\t\trootBounds.left,\n\t\t\trootBounds.right,\n\t\t\t\"left\",\n\t\t);\n\t\tconst rightEdge = extendLineEdge(\n\t\t\tdoc,\n\t\t\troot,\n\t\t\trefTop,\n\t\t\tmidY,\n\t\t\tmaxR,\n\t\t\trootBounds.left,\n\t\t\trootBounds.right,\n\t\t\t\"right\",\n\t\t);\n\n\t\tif (!leftEdge || !rightEdge) {\n\t\t\tconst fallback = intersected.cloneRange();\n\t\t\treturn [fallback];\n\t\t}\n\n\t\tconst lineRange = doc.createRange();\n\t\ttry {\n\t\t\tlineRange.setStart(leftEdge.startContainer, leftEdge.startOffset);\n\t\t\tlineRange.setEnd(rightEdge.startContainer, rightEdge.startOffset);\n\t\t} catch {\n\t\t\treturn [intersected.cloneRange()];\n\t\t}\n\n\t\tif (lineRange.collapsed) {\n\t\t\treturn [intersected.cloneRange()];\n\t\t}\n\n\t\tconst clipped = intersectRangeWithElement(lineRange, root);\n\t\tif (clipped && !clipped.collapsed) {\n\t\t\tout.push(clipped);\n\t\t} else {\n\t\t\treturn [intersected.cloneRange()];\n\t\t}\n\t}\n\n\treturn out.length > 0 ? out : [intersected.cloneRange()];\n}\n"]}
@@ -11,4 +11,3 @@ export type TTSControlHandoffDetail = {
11
11
  */
12
12
  source?: "host";
13
13
  };
14
- //# sourceMappingURL=tts-control-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tts-control-events.js","sourceRoot":"","sources":["../../src/services/tts-control-events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"tts-control-events.js","sourceRoot":"","sources":["../../src/services/tts-control-events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC","sourcesContent":["/**\n * Shared orchestration events for TTS tool UI controls.\n *\n * These events are intentionally UI-level coordination hints. They do not replace\n * playback controls such as stop/pause/resume.\n */\nexport const PIE_TTS_CONTROL_HANDOFF_EVENT = \"pie-tts-control-handoff\";\n\nexport type TTSControlHandoffDetail = {\n\t/**\n\t * Optional source identifier for host-orchestrated handoff tracing.\n\t */\n\tsource?: \"host\";\n};\n"]}
@@ -63,4 +63,3 @@ export declare const resolveTransportMode: (config: TTSRuntimeSettings, runtimeP
63
63
  export declare const buildRuntimeTTSConfig: (config: TTSRuntimeSettings) => Partial<TTSConfig>;
64
64
  export declare const resolveTTSLayoutMode: (config: TTSRuntimeSettings) => TTSLayoutMode;
65
65
  export declare const resolveTTSHostToolbarLayout: (config: TTSRuntimeSettings) => TTSHostToolbarLayout;
66
- //# sourceMappingURL=tts-runtime-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tts-runtime-config.js","sourceRoot":"","sources":["../../src/services/tts-runtime-config.ts"],"names":[],"mappings":"AASA,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAgB;IACrD,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,cAAc;CACd,CAAC,CAAC;AAyCH,MAAM,QAAQ,GAAG,CAAC,KAAc,EAA2B,EAAE,CAC5D,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAE9E,MAAM,eAAe,GAAG,CACvB,OAAsC,EACK,EAAE,CAC7C,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,CAAC;AAErE,MAAM,WAAW,GAAG,CAAI,KAAoB,EAAE,QAAW,EAAK,EAAE,CAC/D,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,KAAc,EACd,WAA0B,cAAc,EACxB,EAAE,CAClB,OAAO,KAAK,KAAK,QAAQ;IACzB,sBAAsB,CAAC,GAAG,CAAC,KAAsB,CAAC;IACjD,CAAC,CAAE,KAAuB;IAC1B,CAAC,CAAC,QAAQ,CAAC;AAEb,oEAAoE;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAc,EAAY,EAAE;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,yBAAyB,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAS;QACjF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9C,IAAI,OAAO,KAAK,CAAC;YAAE,SAAS;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAgB,EAAU,EAAE,CACvE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEnB;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAY,EAAE;IACtE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,OAAO;SACnB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,yBAAyB,CAAC,CAAC;IAC9D,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC5B,MAA0B,EACL,EAAE;IACvB,MAAM,kBAAkB,GAAuB;QAC9C,GAAG,MAAM;QACT,UAAU,EAAE,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC;KACrD,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAEzD,MAAM,kBAAkB,GAAuB;QAC9C,GAAG,kBAAkB;QACrB,WAAW,EAAE,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC;QACpE,aAAa,EAAE,WAAW,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC;QACnE,sBAAsB,EAAE,WAAW,CAClC,kBAAkB,CAAC,sBAAsB,EACzC,QAAQ,CACR;QACD,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACxE,uBAAuB,EAAE,WAAW,CACnC,kBAAkB,CAAC,uBAAuB,EAC1C,KAAK,CACL;QACD,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;QAC/C,QAAQ,EAAE,WAAW,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC3D,CAAC;IAEF,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO;YACN,GAAG,kBAAkB;YACrB,YAAY,EAAE,WAAW,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC;YACpE,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACxD,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC;YACrD,eAAe,EAAE,WAAW,CAC3B,kBAAkB,CAAC,eAAe,EAClC,eAAe,CACf;SACD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACN,GAAG,kBAAkB;YACrB,YAAY,EAAE,WAAW,CAAC,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,CAAC;SAC7E,CAAC;IACH,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACxC,MAAsC,EACjB,EAAE;IACvB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,OAAO,oBAAoB,CAAC;QAC3B,GAAG,YAAY;QACf,GAAG,cAAc;KACK,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,MAA0B,EACmB,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACrC,MAA0B,EAC1B,OAAmD,EACZ,EAAE;IACzC,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,MAA0B,EAC1B,eAAqD,EACF,EAAE,CACrD,MAAM,CAAC,aAAa,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAE3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,MAA0B,EACL,EAAE;IACvB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACpE,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,YAAY;QAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,eAAe,EAAE;YAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;gBAC/D,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;gBACnC,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,KAAK,OAAO;gBACtB,CAAC,CAAC;oBACA,eAAe,EACd,MAAM,CAAC,eAAe,KAAK,eAAe;wBACzC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC;wBACtB,CAAC,CAAC,CAAC,MAAM,CAAC;iBACZ;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS;gBAClE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;gBACzB,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS;gBACjD,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE;gBACjC,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO;gBAC/C,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC7B,CAAC,CAAC,EAAE,CAAC;SACN;QACD,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,aAAa;QACb,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KACnB,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,MAA0B,EACV,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,MAA0B,EACH,EAAE;IACzB,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,cAAc;YAClB,OAAO;gBACN,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE;oBACZ,YAAY,EAAE,IAAI;oBAClB,oBAAoB,EAAE,KAAK;iBAC3B;aACD,CAAC;QACH,KAAK,eAAe;YACnB,OAAO;gBACN,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE;oBACZ,YAAY,EAAE,KAAK;oBACnB,oBAAoB,EAAE,IAAI;iBAC1B;aACD,CAAC;QACH,KAAK,kBAAkB,CAAC;QACxB,KAAK,cAAc,CAAC;QACpB;YACC,OAAO;gBACN,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE;oBACZ,YAAY,EAAE,KAAK;oBACnB,oBAAoB,EAAE,KAAK;iBAC3B;aACD,CAAC;IACJ,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"tts-runtime-config.js","sourceRoot":"","sources":["../../src/services/tts-runtime-config.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TTSConfig } from \"./TTSService.js\";\nimport type { ToolProviderConfig } from \"./tools-config-normalizer.js\";\n\nexport type TTSLayoutMode =\n\t| \"reserved-row\"\n\t| \"expanding-row\"\n\t| \"floating-overlay\"\n\t| \"left-aligned\";\n\nconst VALID_TTS_LAYOUT_MODES = new Set<TTSLayoutMode>([\n\t\"reserved-row\",\n\t\"expanding-row\",\n\t\"floating-overlay\",\n\t\"left-aligned\",\n]);\n\nexport interface TTSHostToolbarLayout {\n\tmount: \"before-buttons\";\n\tcontrolsRow: {\n\t\treserveSpace: boolean;\n\t\texpandWhenToolActive: boolean;\n\t};\n}\n\nexport interface TTSRuntimeSettings {\n\tbackend?: \"browser\" | \"polly\" | \"google\" | \"server\";\n\tserverProvider?: \"polly\" | \"google\" | \"custom\";\n\tprovider?: \"polly\" | \"google\" | \"custom\";\n\tengine?: \"standard\" | \"neural\";\n\tsampleRate?: number;\n\tformat?: \"mp3\" | \"ogg\" | \"pcm\";\n\tspeechMarksMode?: \"word\" | \"word+sentence\";\n\tdefaultVoice?: string;\n\trate?: number;\n\tpitch?: number;\n\tapiEndpoint?: string;\n\tlanguage?: string;\n\ttransportMode?: \"pie\" | \"custom\";\n\tendpointMode?: \"synthesizePath\" | \"rootPost\";\n\tendpointValidationMode?: \"voices\" | \"endpoint\" | \"none\";\n\tincludeAuthOnAssetFetch?: boolean;\n\tvalidateEndpoint?: boolean;\n\tcache?: boolean;\n\tspeedRate?: \"slow\" | \"medium\" | \"fast\";\n\tlang_id?: string;\n\t/**\n\t * Optional inline TTS speed buttons.\n\t * - Omitted/non-array: default speed buttons are shown.\n\t * - Empty array: hide speed buttons.\n\t * - Arrays that sanitize to no valid values: default speed buttons are shown.\n\t */\n\tspeedOptions?: number[];\n\tlayoutMode?: TTSLayoutMode;\n}\n\nconst toRecord = (value: unknown): Record<string, unknown> =>\n\tvalue && typeof value === \"object\" ? (value as Record<string, unknown>) : {};\n\nconst isServerBackend = (\n\tbackend: TTSRuntimeSettings[\"backend\"],\n): backend is \"polly\" | \"google\" | \"server\" =>\n\tbackend === \"polly\" || backend === \"google\" || backend === \"server\";\n\nconst withDefault = <T>(value: T | undefined, fallback: T): T =>\n\tvalue === undefined ? fallback : value;\n\nexport const normalizeTTSLayoutMode = (\n\tvalue: unknown,\n\tfallback: TTSLayoutMode = \"left-aligned\",\n): TTSLayoutMode =>\n\ttypeof value === \"string\" &&\n\tVALID_TTS_LAYOUT_MODES.has(value as TTSLayoutMode)\n\t\t? (value as TTSLayoutMode)\n\t\t: fallback;\n\n/** Default inline TTS speed button multipliers (excluding 1.0×). */\nexport const DEFAULT_TTS_SPEED_OPTIONS = Object.freeze([0.8, 1.25]);\n\n/**\n * Resolves inline toolbar speed options from host config.\n * - Omitted/non-array: default speed buttons.\n * - Empty array: hide speed buttons.\n * - Arrays that sanitize to no valid values: default speed buttons.\n * - 1.0× is never shown as a discrete speed button.\n */\nexport const normalizeTTSSpeedOptions = (value: unknown): number[] => {\n\tif (!Array.isArray(value)) return [...DEFAULT_TTS_SPEED_OPTIONS];\n\tif (value.length === 0) return [];\n\tconst deduped = new Set<number>();\n\tfor (const entry of value) {\n\t\tif (typeof entry !== \"number\" || !Number.isFinite(entry) || entry <= 0) continue;\n\t\tconst rounded = Math.round(entry * 100) / 100;\n\t\tif (rounded === 1) continue;\n\t\tdeduped.add(rounded);\n\t}\n\treturn deduped.size ? Array.from(deduped) : [...DEFAULT_TTS_SPEED_OPTIONS];\n};\n\nexport const formatTTSSpeedOptionsAsText = (values: number[]): string =>\n\tvalues.join(\", \");\n\n/**\n * Parse comma/semicolon-separated multipliers from settings UI text.\n * - Empty or whitespace-only string → hide speed buttons (`[]`).\n * - Non-empty text with no parseable finite numbers → same as invalid-only array config: defaults.\n */\nexport const parseTTSSpeedOptionsFromText = (text: string): number[] => {\n\tconst trimmed = text.trim();\n\tif (!trimmed) return [];\n\tconst parts = trimmed\n\t\t.split(/[,;]+/)\n\t\t.map((p) => p.trim())\n\t\t.filter(Boolean);\n\tconst candidates = parts\n\t\t.map((p) => Number.parseFloat(p))\n\t\t.filter((n) => Number.isFinite(n));\n\tif (!candidates.length) return [...DEFAULT_TTS_SPEED_OPTIONS];\n\treturn normalizeTTSSpeedOptions(candidates);\n};\n\nconst applyRuntimeDefaults = (\n\tconfig: TTSRuntimeSettings,\n): TTSRuntimeSettings => {\n\tconst withLayoutDefaults: TTSRuntimeSettings = {\n\t\t...config,\n\t\tlayoutMode: normalizeTTSLayoutMode(config.layoutMode),\n\t};\n\tconst backend = config.backend || \"browser\";\n\tif (!isServerBackend(backend)) return withLayoutDefaults;\n\n\tconst withServerDefaults: TTSRuntimeSettings = {\n\t\t...withLayoutDefaults,\n\t\tapiEndpoint: withDefault(withLayoutDefaults.apiEndpoint, \"/api/tts\"),\n\t\ttransportMode: withDefault(withLayoutDefaults.transportMode, \"pie\"),\n\t\tendpointValidationMode: withDefault(\n\t\t\twithLayoutDefaults.endpointValidationMode,\n\t\t\t\"voices\",\n\t\t),\n\t\tvalidateEndpoint: withDefault(withLayoutDefaults.validateEndpoint, true),\n\t\tincludeAuthOnAssetFetch: withDefault(\n\t\t\twithLayoutDefaults.includeAuthOnAssetFetch,\n\t\t\tfalse,\n\t\t),\n\t\trate: withDefault(withLayoutDefaults.rate, 1.0),\n\t\tlanguage: withDefault(withLayoutDefaults.language, \"en-US\"),\n\t};\n\n\tif (backend === \"polly\") {\n\t\treturn {\n\t\t\t...withServerDefaults,\n\t\t\tdefaultVoice: withDefault(withServerDefaults.defaultVoice, \"Joanna\"),\n\t\t\tengine: withDefault(withServerDefaults.engine, \"neural\"),\n\t\t\tformat: withDefault(withServerDefaults.format, \"mp3\"),\n\t\t\tspeechMarksMode: withDefault(\n\t\t\t\twithServerDefaults.speechMarksMode,\n\t\t\t\t\"word+sentence\",\n\t\t\t),\n\t\t};\n\t}\n\n\tif (backend === \"google\") {\n\t\treturn {\n\t\t\t...withServerDefaults,\n\t\t\tdefaultVoice: withDefault(withServerDefaults.defaultVoice, \"en-US-Wavenet-A\"),\n\t\t};\n\t}\n\n\treturn withServerDefaults;\n};\n\nexport const resolveTTSRuntimeSettings = (\n\tconfig: ToolProviderConfig | undefined,\n): TTSRuntimeSettings => {\n\tconst configRecord = toRecord(config);\n\tconst settingsRecord = toRecord(config?.settings);\n\treturn applyRuntimeDefaults({\n\t\t...configRecord,\n\t\t...settingsRecord,\n\t} as TTSRuntimeSettings);\n};\n\nexport const resolveTTSBackend = (\n\tconfig: TTSRuntimeSettings,\n): NonNullable<TTSRuntimeSettings[\"backend\"]> => config.backend || \"browser\";\n\nexport const resolveRuntimeProvider = (\n\tconfig: TTSRuntimeSettings,\n\tbackend: NonNullable<TTSRuntimeSettings[\"backend\"]>,\n): TTSRuntimeSettings[\"serverProvider\"] => {\n\tif (backend === \"polly\" || backend === \"google\") return backend;\n\tif (backend === \"server\") {\n\t\treturn config.serverProvider || config.provider;\n\t}\n\treturn config.serverProvider || config.provider;\n};\n\nexport const resolveTransportMode = (\n\tconfig: TTSRuntimeSettings,\n\truntimeProvider: TTSRuntimeSettings[\"serverProvider\"],\n): NonNullable<TTSRuntimeSettings[\"transportMode\"]> =>\n\tconfig.transportMode || (runtimeProvider === \"custom\" ? \"custom\" : \"pie\");\n\nexport const buildRuntimeTTSConfig = (\n\tconfig: TTSRuntimeSettings,\n): Partial<TTSConfig> => {\n\tconst backend = resolveTTSBackend(config);\n\tconst runtimeProvider = resolveRuntimeProvider(config, backend);\n\tconst transportMode = resolveTransportMode(config, runtimeProvider);\n\treturn {\n\t\tvoice: config.defaultVoice,\n\t\trate: config.rate,\n\t\tpitch: config.pitch,\n\t\tproviderOptions: {\n\t\t\t...(config.language ? { locale: config.language } : {}),\n\t\t\t...(backend === \"polly\" && config.engine ? { engine: config.engine } : {}),\n\t\t\t...(backend === \"polly\" && typeof config.sampleRate === \"number\"\n\t\t\t\t? { sampleRate: config.sampleRate }\n\t\t\t\t: {}),\n\t\t\t...(backend === \"polly\" && config.format ? { format: config.format } : {}),\n\t\t\t...(backend === \"polly\"\n\t\t\t\t? {\n\t\t\t\t\t\tspeechMarkTypes:\n\t\t\t\t\t\t\tconfig.speechMarksMode === \"word+sentence\"\n\t\t\t\t\t\t\t\t? [\"word\", \"sentence\"]\n\t\t\t\t\t\t\t\t: [\"word\"],\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(transportMode === \"custom\" && typeof config.cache === \"boolean\"\n\t\t\t\t? { cache: config.cache }\n\t\t\t\t: {}),\n\t\t\t...(transportMode === \"custom\" && config.speedRate\n\t\t\t\t? { speedRate: config.speedRate }\n\t\t\t\t: {}),\n\t\t\t...(transportMode === \"custom\" && config.lang_id\n\t\t\t\t? { lang_id: config.lang_id }\n\t\t\t\t: {}),\n\t\t},\n\t\tapiEndpoint: config.apiEndpoint,\n\t\tprovider: runtimeProvider,\n\t\tlanguage: config.language,\n\t\ttransportMode,\n\t\tendpointMode: config.endpointMode,\n\t\tendpointValidationMode: config.endpointValidationMode,\n\t\tincludeAuthOnAssetFetch: config.includeAuthOnAssetFetch,\n\t\tvalidateEndpoint: config.validateEndpoint,\n\t} as Partial<TTSConfig>;\n};\n\nexport const resolveTTSLayoutMode = (\n\tconfig: TTSRuntimeSettings,\n): TTSLayoutMode => normalizeTTSLayoutMode(config.layoutMode);\n\nexport const resolveTTSHostToolbarLayout = (\n\tconfig: TTSRuntimeSettings,\n): TTSHostToolbarLayout => {\n\tconst layoutMode = resolveTTSLayoutMode(config);\n\tswitch (layoutMode) {\n\t\tcase \"reserved-row\":\n\t\t\treturn {\n\t\t\t\tmount: \"before-buttons\",\n\t\t\t\tcontrolsRow: {\n\t\t\t\t\treserveSpace: true,\n\t\t\t\t\texpandWhenToolActive: false,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"expanding-row\":\n\t\t\treturn {\n\t\t\t\tmount: \"before-buttons\",\n\t\t\t\tcontrolsRow: {\n\t\t\t\t\treserveSpace: false,\n\t\t\t\t\texpandWhenToolActive: true,\n\t\t\t\t},\n\t\t\t};\n\t\tcase \"floating-overlay\":\n\t\tcase \"left-aligned\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tmount: \"before-buttons\",\n\t\t\t\tcontrolsRow: {\n\t\t\t\t\treserveSpace: false,\n\t\t\t\t\texpandWhenToolActive: false,\n\t\t\t\t},\n\t\t\t};\n\t}\n};\n"]}
@@ -44,4 +44,3 @@ export declare class DesmosCalculatorProvider implements CalculatorProvider {
44
44
  */
45
45
  getCapabilities(): CalculatorProviderCapabilities;
46
46
  }
47
- //# sourceMappingURL=desmos-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"desmos-provider.js","sourceRoot":"","sources":["../../../src/tools/calculators/desmos-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"desmos-provider.js","sourceRoot":"","sources":["../../../src/tools/calculators/desmos-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Desmos Calculator Provider\n * Implementation of CalculatorProvider for Desmos calculators\n *\n * Supports: Basic, Scientific, and Graphing calculators\n * Based on Desmos API v1.10+\n */\n\nimport type {\n\tCalculationHistoryEntry,\n\tCalculator,\n\tCalculatorProvider,\n\tCalculatorProviderCapabilities,\n\tCalculatorProviderConfig,\n\tCalculatorState,\n\tCalculatorType,\n\tDesmosCalculatorConfig,\n} from \"@pie-players/pie-calculator\";\nimport { COMMON_LIBRARIES, libraryLoader } from \"../library-loader.js\";\n\n/**\n * Desmos Calculator Provider Implementation\n */\nexport class DesmosCalculatorProvider implements CalculatorProvider {\n\treadonly providerId = \"desmos\";\n\treadonly providerName = \"Desmos\";\n\treadonly supportedTypes: CalculatorType[] = [\n\t\t\"basic\",\n\t\t\"scientific\",\n\t\t\"graphing\",\n\t];\n\treadonly version = \"1.10\";\n\n\tprivate initialized = false;\n\tprivate apiKey?: string;\n\n\t/**\n\t * Get the configured API key\n\t */\n\tgetApiKey(): string | undefined {\n\t\treturn this.apiKey;\n\t}\n\n\t/**\n\t * Initialize Desmos library\n\t * @param config Optional configuration including API key\n\t */\n\tasync initialize(config?: { apiKey?: string }): Promise<void> {\n\t\tif (this.initialized) return;\n\n\t\t// SSR guard: Desmos calculators should NEVER run on the server\n\t\tif (typeof window === \"undefined\") {\n\t\t\tthrow new Error(\n\t\t\t\t\"Desmos calculators can only be initialized in the browser\",\n\t\t\t);\n\t\t}\n\n\t\t// Store API key from config, environment variable, or global\n\t\tthis.apiKey =\n\t\t\tconfig?.apiKey ||\n\t\t\t(typeof process !== \"undefined\" && process.env?.DESMOS_API_KEY) ||\n\t\t\t(typeof window !== \"undefined\" && (window as any).PIE_DESMOS_API_KEY);\n\n\t\t// Warn if no API key is provided (production usage requires it)\n\t\tif (!this.apiKey) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[DesmosProvider] No API key provided. Production usage requires a Desmos API key. \" +\n\t\t\t\t\t\"Obtain one from https://www.desmos.com/api or contact partnerships@desmos.com\",\n\t\t\t);\n\t\t}\n\n\t\t// Load Desmos library\n\t\tawait libraryLoader.loadScript(COMMON_LIBRARIES.desmos);\n\n\t\t// Verify Desmos API is available\n\t\tif (!(window as any).Desmos) {\n\t\t\tthrow new Error(\"Desmos API not loaded\");\n\t\t}\n\n\t\tthis.initialized = true;\n\t\tconsole.log(\n\t\t\t`[DesmosProvider] Initialized successfully${this.apiKey ? \" with API key\" : \" (no API key)\"}`,\n\t\t);\n\t}\n\n\t/**\n\t * Create a calculator instance\n\t */\n\tasync createCalculator(\n\t\ttype: CalculatorType,\n\t\tcontainer: HTMLElement,\n\t\tconfig?: CalculatorProviderConfig,\n\t): Promise<Calculator> {\n\t\tif (!this.initialized) {\n\t\t\tawait this.initialize();\n\t\t}\n\n\t\tif (!this.supportsType(type)) {\n\t\t\tthrow new Error(`Desmos does not support calculator type: ${type}`);\n\t\t}\n\n\t\treturn new DesmosCalculator(this, type, container, config);\n\t}\n\n\t/**\n\t * Check if type is supported\n\t */\n\tsupportsType(type: CalculatorType): boolean {\n\t\treturn this.supportedTypes.includes(type);\n\t}\n\n\t/**\n\t * Cleanup (no-op for Desmos)\n\t */\n\tdestroy(): void {\n\t\t// Desmos doesn't require global cleanup\n\t\tthis.initialized = false;\n\t}\n\n\t/**\n\t * Get provider capabilities\n\t */\n\tgetCapabilities(): CalculatorProviderCapabilities {\n\t\treturn {\n\t\t\tsupportsHistory: true,\n\t\t\tsupportsGraphing: true,\n\t\t\tsupportsExpressions: true,\n\t\t\tcanExport: true,\n\t\t\tmaxPrecision: 15, // JavaScript number precision\n\t\t\tinputMethods: [\"keyboard\", \"mouse\", \"touch\"],\n\t\t};\n\t}\n}\n\n/**\n * Desmos Calculator Instance\n */\nclass DesmosCalculator implements Calculator {\n\treadonly provider: CalculatorProvider;\n\treadonly type: CalculatorType;\n\n\tprivate desmosCalculator: any;\n\tprivate container: HTMLElement;\n\tprivate config?: CalculatorProviderConfig;\n\n\tconstructor(\n\t\tprovider: CalculatorProvider,\n\t\ttype: CalculatorType,\n\t\tcontainer: HTMLElement,\n\t\tconfig?: CalculatorProviderConfig,\n\t) {\n\t\tthis.provider = provider;\n\t\tthis.type = type;\n\t\tthis.container = container;\n\t\tthis.config = config;\n\n\t\tthis._initializeCalculator();\n\t}\n\n\t/**\n\t * Initialize Desmos calculator instance\n\t * Based on production implementation patterns\n\t */\n\tprivate _initializeCalculator(): void {\n\t\tconst Desmos = (window as any).Desmos;\n\n\t\t// Get Desmos-specific config or empty object\n\t\tconst desmosConfig = this.config?.desmos || {};\n\n\t\t// Determine API key (config overrides provider-level)\n\t\tconst apiKey =\n\t\t\tdesmosConfig.apiKey ||\n\t\t\t(this.provider as DesmosCalculatorProvider).getApiKey();\n\n\t\t// Apply restricted mode defaults if enabled\n\t\tconst restrictedDefaults = this._getRestrictedModeDefaults();\n\n\t\t// Merge order: type-specific defaults < restricted mode defaults < explicit config\n\t\t// This ensures explicit config can override restricted mode when needed\n\t\tconst options = {\n\t\t\t...this._getTypeSpecificDefaults(),\n\t\t\t...restrictedDefaults,\n\t\t\t...desmosConfig,\n\t\t\t...this._mapConfigToDesmos(this.config),\n\t\t};\n\n\t\t// Add API key if available\n\t\tif (apiKey) {\n\t\t\toptions.apiKey = apiKey;\n\t\t}\n\n\t\t// Create appropriate calculator type\n\t\tswitch (this.type) {\n\t\t\tcase \"basic\":\n\t\t\t\tthis.desmosCalculator = Desmos.FourFunctionCalculator(\n\t\t\t\t\tthis.container,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"scientific\":\n\t\t\t\tthis.desmosCalculator = Desmos.ScientificCalculator(\n\t\t\t\t\tthis.container,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"graphing\":\n\t\t\t\tthis.desmosCalculator = Desmos.GraphingCalculator(\n\t\t\t\t\tthis.container,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown Desmos calculator type: ${this.type}`);\n\t\t}\n\n\t\tconsole.log(\n\t\t\t`[DesmosCalculator] Created ${this.type} calculator with options:`,\n\t\t\toptions,\n\t\t);\n\t}\n\n\t/**\n\t * Get type-specific default options\n\t */\n\tprivate _getTypeSpecificDefaults(): any {\n\t\tconst defaults: any = {\n\t\t\tborder: false, // No border around calculator (production implementation pattern)\n\t\t};\n\n\t\tswitch (this.type) {\n\t\t\tcase \"basic\":\n\t\t\t\t// Basic calculator: no keypad, no graph paper (just the calculator itself)\n\t\t\t\t// Matches production FourFunctionCalculator setup\n\t\t\t\tdefaults.keypad = false;\n\t\t\t\tdefaults.graphpaper = false;\n\t\t\t\tbreak;\n\t\t\tcase \"scientific\":\n\t\t\t\t// Scientific calculator: minimal defaults, mostly controlled by config\n\t\t\t\tbreak;\n\t\t\tcase \"graphing\":\n\t\t\t\t// Graphing calculator: enable expressions, zoom buttons, topbar by default\n\t\t\t\tdefaults.expressions = true;\n\t\t\t\tdefaults.zoomButtons = true;\n\t\t\t\tdefaults.expressionsTopbar = true;\n\t\t\t\tdefaults.settingsMenu = true;\n\t\t\t\tdefaults.notes = true;\n\t\t\t\tdefaults.folders = true;\n\t\t\t\tdefaults.images = false; // Images disabled by default (production pattern)\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn defaults;\n\t}\n\n\t/**\n\t * Get restricted mode defaults (test mode options)\n\t * Based on production test mode configuration\n\t */\n\tprivate _getRestrictedModeDefaults(): any {\n\t\tif (!this.config?.restrictedMode) {\n\t\t\treturn {};\n\t\t}\n\n\t\t// Restricted mode defaults based on production test mode settings\n\t\tconst restricted: any = {\n\t\t\tborder: false,\n\t\t\tlinks: false,\n\t\t\tqwertyKeyboard: true,\n\t\t\tdegreeMode: true,\n\t\t\tdecimalToFraction: true,\n\t\t};\n\n\t\t// Type-specific restricted mode options\n\t\tif (this.type === \"graphing\") {\n\t\t\tObject.assign(restricted, {\n\t\t\t\timages: false,\n\t\t\t\tfolders: false,\n\t\t\t\tnotes: false,\n\t\t\t\trestrictedFunctions: true,\n\t\t\t\tplotSingleVariableImplicitEquations: false,\n\t\t\t\tplotImplicits: false,\n\t\t\t\tplotInequalities: false,\n\t\t\t\tsliders: false,\n\t\t\t\tsettingsMenu: false,\n\t\t\t\tzoomButtons: false,\n\t\t\t\tgeometryComputationFunctions: true,\n\t\t\t\tdistributions: true,\n\t\t\t});\n\t\t} else if (this.type === \"scientific\") {\n\t\t\tObject.assign(restricted, {\n\t\t\t\tfunctionDefinition: false,\n\t\t\t\tbrailleExpressionDownload: false,\n\t\t\t});\n\t\t}\n\n\t\treturn restricted;\n\t}\n\n\t/**\n\t * Map provider config to Desmos options\n\t */\n\tprivate _mapConfigToDesmos(config?: CalculatorProviderConfig): any {\n\t\tif (!config) return {};\n\n\t\tconst desmosOptions: any = {};\n\n\t\t// Map locale to Desmos language option\n\t\tif (config.locale) {\n\t\t\tdesmosOptions.language = config.locale;\n\t\t}\n\n\t\t// Theme mapping (Desmos may support this via CSS, not API)\n\t\t// Note: Desmos doesn't have a theme option in the API, but we keep this\n\t\t// for potential future use or CSS-based theming\n\n\t\treturn desmosOptions;\n\t}\n\n\t/**\n\t * Get current value/expression\n\t */\n\tgetValue(): string {\n\t\t// For graphing calculator, get all expressions\n\t\tif (this.type === \"graphing\") {\n\t\t\tconst state = this.desmosCalculator.getState();\n\t\t\treturn JSON.stringify(state.expressions.list);\n\t\t}\n\n\t\t// For basic/scientific, get current expression\n\t\tconst state = this.desmosCalculator.getState();\n\t\treturn state.expression || \"\";\n\t}\n\n\t/**\n\t * Set value/expression\n\t */\n\tsetValue(value: string): void {\n\t\tif (this.type === \"graphing\") {\n\t\t\ttry {\n\t\t\t\tconst expressions = JSON.parse(value);\n\t\t\t\tthis.desmosCalculator.setState({ expressions: { list: expressions } });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[DesmosCalculator] Invalid expression format:\", error);\n\t\t\t}\n\t\t} else {\n\t\t\t// Basic/Scientific calculators\n\t\t\tthis.desmosCalculator.setExpression({ latex: value });\n\t\t}\n\t}\n\n\t/**\n\t * Clear calculator\n\t */\n\tclear(): void {\n\t\tif (this.type === \"graphing\") {\n\t\t\tthis.desmosCalculator.setBlank();\n\t\t} else {\n\t\t\tthis.setValue(\"\");\n\t\t}\n\t}\n\n\t/**\n\t * Get calculation history (not natively supported by Desmos)\n\t */\n\tgetHistory(): CalculationHistoryEntry[] {\n\t\t// Desmos doesn't provide history natively\n\t\t// Would need to implement custom tracking\n\t\treturn [];\n\t}\n\n\t/**\n\t * Clear history\n\t */\n\tclearHistory(): void {\n\t\t// No-op - Desmos doesn't have history\n\t}\n\n\t/**\n\t * Resize calculator when container dimensions change\n\t * Matches production pattern: calculatorInstance.resize()\n\t */\n\tresize(): void {\n\t\tif (\n\t\t\tthis.desmosCalculator &&\n\t\t\ttypeof this.desmosCalculator.resize === \"function\"\n\t\t) {\n\t\t\tthis.desmosCalculator.resize();\n\t\t}\n\t}\n\n\t/**\n\t * Move keyboard focus to the primary input/expression field so keyboard\n\t * users can begin typing immediately after the calculator opens.\n\t */\n\tfocus(): void {\n\t\ttry {\n\t\t\tif (\n\t\t\t\tthis.type === \"graphing\" &&\n\t\t\t\ttypeof this.desmosCalculator?.focusFirstExpression === \"function\"\n\t\t\t) {\n\t\t\t\tthis.desmosCalculator.focusFirstExpression();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst target = this.container.querySelector<HTMLElement>(\n\t\t\t\t'.dcg-mq-editable-field[tabindex=\"0\"], textarea, [contenteditable=\"true\"], [tabindex]:not([tabindex=\"-1\"])',\n\t\t\t);\n\t\t\ttarget?.focus();\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"[DesmosCalculator] focus() failed:\", error);\n\t\t}\n\t}\n\n\t/**\n\t * Evaluate expression (for graphing calculator)\n\t */\n\tasync evaluate(expression: string): Promise<string> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\ttry {\n\t\t\t\t// Set expression and wait for computation\n\t\t\t\tthis.desmosCalculator.setExpression({ latex: expression });\n\n\t\t\t\t// For basic math, Desmos evaluates automatically\n\t\t\t\t// Get the result from state\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst result = this.getValue();\n\t\t\t\t\tresolve(result);\n\t\t\t\t}, 100); // Small delay for Desmos to compute\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Export calculator state\n\t */\n\texportState(): CalculatorState {\n\t\tconst state = this.desmosCalculator.getState();\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tprovider: \"desmos\",\n\t\t\tvalue: this.getValue(),\n\t\t\tproviderState: state,\n\t\t};\n\t}\n\n\t/**\n\t * Import calculator state\n\t */\n\timportState(state: CalculatorState): void {\n\t\tif (state.provider !== \"desmos\") {\n\t\t\tthrow new Error(`Cannot import state from provider: ${state.provider}`);\n\t\t}\n\n\t\tif (state.providerState) {\n\t\t\tthis.desmosCalculator.setState(state.providerState);\n\t\t} else if (state.value) {\n\t\t\tthis.setValue(state.value);\n\t\t}\n\t}\n\n\t/**\n\t * Destroy calculator\n\t */\n\tdestroy(): void {\n\t\tif (this.desmosCalculator) {\n\t\t\ttry {\n\t\t\t\tthis.desmosCalculator.destroy();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(\"[DesmosCalculator] Error during destroy:\", error);\n\t\t\t}\n\t\t\tthis.desmosCalculator = null;\n\t\t}\n\n\t\t// Clear the container to ensure Desmos releases all references\n\t\tif (this.container) {\n\t\t\t// Remove any Desmos-specific attributes\n\t\t\tthis.container.removeAttribute(\"data-desmos-id\");\n\n\t\t\t// Use modern API - more efficient and cleaner\n\t\t\tthis.container.replaceChildren();\n\t\t}\n\t}\n}\n\n"]}
@@ -12,4 +12,3 @@ export { DesmosCalculatorProvider } from "./calculators/desmos-provider.js";
12
12
  export { COMMON_LIBRARIES, LibraryLoaderImpl, libraryLoader, } from "./library-loader.js";
13
13
  export { ResponseDiscoveryServiceImpl, responseDiscovery, } from "./response-discovery.js";
14
14
  export * from "./types.js";
15
- //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tools/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sDAAsD;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,+CAA+C;AAC/C,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,qBAAqB,CAAC;AAC7B,iDAAiD;AACjD,OAAO,EACN,4BAA4B,EAC5B,iBAAiB,GACjB,MAAM,yBAAyB,CAAC;AACjC,2BAA2B;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tools/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sDAAsD;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,+CAA+C;AAC/C,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,qBAAqB,CAAC;AAC7B,iDAAiD;AACjD,OAAO,EACN,4BAA4B,EAC5B,iBAAiB,GACjB,MAAM,yBAAyB,CAAC;AACjC,2BAA2B;AAC3B,cAAc,YAAY,CAAC","sourcesContent":["/**\n * Client-only tool system exports\n *\n * This entry point exports only browser-safe code for use in custom elements.\n * It excludes server-side services like accommodationResolver, variantResolver, etc.\n *\n * Tools should import from '@pie-players/pie-assessment-toolkit/tools/client' instead of\n * '@pie-players/pie-assessment-toolkit' to ensure\n * they don't accidentally pull in server-side dependencies.\n */\n\n// Calculator providers (client-safe, have SSR guards)\nexport { DesmosCalculatorProvider } from \"./calculators/desmos-provider.js\";\n// Library loader (client-safe, has SSR guards)\nexport {\n\tCOMMON_LIBRARIES,\n\tLibraryLoaderImpl,\n\tlibraryLoader,\n} from \"./library-loader.js\";\n// Response discovery (client-safe, browser-only)\nexport {\n\tResponseDiscoveryServiceImpl,\n\tresponseDiscovery,\n} from \"./response-discovery.js\";\n// Core types (client-safe)\nexport * from \"./types.js\";\n"]}
@@ -1,3 +1,2 @@
1
1
  import type { ToolModuleLoader } from "../services/ToolRegistry.js";
2
2
  export declare const DEFAULT_TOOL_MODULE_LOADERS: Record<string, ToolModuleLoader>;
3
- //# sourceMappingURL=default-tool-module-loaders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-tool-module-loaders.js","sourceRoot":"","sources":["../../src/tools/default-tool-module-loaders.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,CAC5B,IAA4B,EACZ,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,SAAS,oBAAoB;IAC5B,IACC,OAAO,UAAU,KAAK,WAAW;QACjC,gBAAgB,IAAI,UAAU;QAC9B,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACpD,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,oBAAoB,CAC1B,GAAG,EAAE;IACJ,0IAA0I;IAC1I,2EAA2E;IAC3E,MAAM,CAAC,yCAAyC,CAAC,CAClD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAqC;IAC5E,6DAA6D;IAC7D,iEAAiE;IACjE,UAAU,EAAE,oBAAoB;IAChC,YAAY,EAAE,GAAG,EAAE,CAClB,oBAAoB,CACnB,GAAG,EAAE;IACJ,0IAA0I;IAC1I,2EAA2E;IAC3E,MAAM,CAAC,kCAAkC,CAAC,CAC3C;CACF,CAAC"}
1
+ {"version":3,"file":"default-tool-module-loaders.js","sourceRoot":"","sources":["../../src/tools/default-tool-module-loaders.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,CAC5B,IAA4B,EACZ,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,SAAS,oBAAoB;IAC5B,IACC,OAAO,UAAU,KAAK,WAAW;QACjC,gBAAgB,IAAI,UAAU;QAC9B,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACpD,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,oBAAoB,CAC1B,GAAG,EAAE;IACJ,0IAA0I;IAC1I,2EAA2E;IAC3E,MAAM,CAAC,yCAAyC,CAAC,CAClD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAqC;IAC5E,6DAA6D;IAC7D,iEAAiE;IACjE,UAAU,EAAE,oBAAoB;IAChC,YAAY,EAAE,GAAG,EAAE,CAClB,oBAAoB,CACnB,GAAG,EAAE;IACJ,0IAA0I;IAC1I,2EAA2E;IAC3E,MAAM,CAAC,kCAAkC,CAAC,CAC3C;CACF,CAAC","sourcesContent":["import type { ToolModuleLoader } from \"../services/ToolRegistry.js\";\n\nconst loadSideEffectModule = (\n\tload: () => Promise<unknown>,\n): Promise<void> => load().then(() => undefined);\n\n/**\n * Default lazy module loaders for built-in tools.\n *\n * Keeping this map near tool registrations avoids hard-coding module imports\n * in runtime components.\n */\nfunction loadCalculatorModule(): Promise<unknown> {\n\tif (\n\t\ttypeof globalThis !== \"undefined\" &&\n\t\t\"customElements\" in globalThis &&\n\t\tglobalThis.customElements?.get(\"pie-tool-calculator\")\n\t) {\n\t\treturn Promise.resolve();\n\t}\n\treturn loadSideEffectModule(\n\t\t() =>\n\t\t\t// biome-ignore lint/suspicious/noTsIgnore: module is optional; @ts-expect-error would fail in workspace builds where the symlink resolves\n\t\t\t// @ts-ignore Optional host module may be absent from toolkit package deps.\n\t\t\timport(\"@pie-players/pie-tool-calculator-desmos\"),\n\t);\n}\n\nexport const DEFAULT_TOOL_MODULE_LOADERS: Record<string, ToolModuleLoader> = {\n\t// Keep toolkit defaults limited to broadly expected modules.\n\t// Hosts can register additional optional tool loaders as needed.\n\tcalculator: loadCalculatorModule,\n\ttextToSpeech: () =>\n\t\tloadSideEffectModule(\n\t\t\t() =>\n\t\t\t\t// biome-ignore lint/suspicious/noTsIgnore: module is optional; @ts-expect-error would fail in workspace builds where the symlink resolves\n\t\t\t\t// @ts-ignore Optional host module may be absent from toolkit package deps.\n\t\t\t\timport(\"@pie-players/pie-tool-tts-inline\"),\n\t\t),\n};\n"]}