@pie-players/pie-assessment-toolkit 0.2.9 → 0.2.11

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 (112) hide show
  1. package/dist/components/ItemToolBar.custom-element.js +425 -93
  2. package/dist/components/PieAssessmentToolkit.custom-element.js +200 -46
  3. package/dist/components/SectionToolBar.custom-element.js +162 -0
  4. package/dist/components/section-toolbar-element.d.ts +3 -0
  5. package/dist/components/section-toolbar-element.d.ts.map +1 -0
  6. package/dist/components/section-toolbar-element.js +2 -0
  7. package/dist/components/section-toolbar-element.js.map +1 -0
  8. package/dist/context/assessment-toolkit-context.d.ts +1 -1
  9. package/dist/context/assessment-toolkit-context.d.ts.map +1 -1
  10. package/dist/index.d.ts +5 -3
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/runtime/SectionRuntimeEngine.d.ts +57 -1
  15. package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -1
  16. package/dist/runtime/SectionRuntimeEngine.js +23 -0
  17. package/dist/runtime/SectionRuntimeEngine.js.map +1 -1
  18. package/dist/runtime/registration-events.d.ts +19 -0
  19. package/dist/runtime/registration-events.d.ts.map +1 -1
  20. package/dist/runtime/registration-events.js +3 -0
  21. package/dist/runtime/registration-events.js.map +1 -1
  22. package/dist/runtime/runtime-event-guards.d.ts +0 -1
  23. package/dist/runtime/runtime-event-guards.d.ts.map +1 -1
  24. package/dist/runtime/runtime-event-guards.js +0 -5
  25. package/dist/runtime/runtime-event-guards.js.map +1 -1
  26. package/dist/runtime/session-event-emitter-policy.d.ts +12 -0
  27. package/dist/runtime/session-event-emitter-policy.d.ts.map +1 -0
  28. package/dist/runtime/session-event-emitter-policy.js +57 -0
  29. package/dist/runtime/session-event-emitter-policy.js.map +1 -0
  30. package/dist/services/HighlightCoordinator.d.ts +9 -0
  31. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  32. package/dist/services/HighlightCoordinator.js +196 -55
  33. package/dist/services/HighlightCoordinator.js.map +1 -1
  34. package/dist/services/TTSService.d.ts +18 -0
  35. package/dist/services/TTSService.d.ts.map +1 -1
  36. package/dist/services/TTSService.js +343 -105
  37. package/dist/services/TTSService.js.map +1 -1
  38. package/dist/services/ToolRegistry.d.ts +40 -2
  39. package/dist/services/ToolRegistry.d.ts.map +1 -1
  40. package/dist/services/ToolRegistry.js +22 -1
  41. package/dist/services/ToolRegistry.js.map +1 -1
  42. package/dist/services/ToolkitCoordinator.d.ts +34 -1
  43. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  44. package/dist/services/ToolkitCoordinator.js +203 -2
  45. package/dist/services/ToolkitCoordinator.js.map +1 -1
  46. package/dist/services/createDefaultToolRegistry.d.ts +5 -11
  47. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -1
  48. package/dist/services/createDefaultToolRegistry.js +5 -48
  49. package/dist/services/createDefaultToolRegistry.js.map +1 -1
  50. package/dist/services/interfaces.d.ts +7 -2
  51. package/dist/services/interfaces.d.ts.map +1 -1
  52. package/dist/services/interfaces.js.map +1 -1
  53. package/dist/services/pnp-standard-features.d.ts +1 -1
  54. package/dist/services/section-controller-types.d.ts +5 -0
  55. package/dist/services/section-controller-types.d.ts.map +1 -1
  56. package/dist/services/tool-config-defaults.d.ts +14 -0
  57. package/dist/services/tool-config-defaults.d.ts.map +1 -0
  58. package/dist/services/tool-config-defaults.js +23 -0
  59. package/dist/services/tool-config-defaults.js.map +1 -0
  60. package/dist/services/tool-context.d.ts.map +1 -1
  61. package/dist/services/tool-context.js +50 -3
  62. package/dist/services/tool-context.js.map +1 -1
  63. package/dist/services/tool-instance-id.d.ts +1 -3
  64. package/dist/services/tool-instance-id.d.ts.map +1 -1
  65. package/dist/services/tool-instance-id.js +4 -10
  66. package/dist/services/tool-instance-id.js.map +1 -1
  67. package/dist/services/toolbar-items.d.ts +26 -0
  68. package/dist/services/toolbar-items.d.ts.map +1 -0
  69. package/dist/services/toolbar-items.js +10 -0
  70. package/dist/services/toolbar-items.js.map +1 -0
  71. package/dist/services/tools-config-normalizer.d.ts.map +1 -1
  72. package/dist/services/tools-config-normalizer.js +5 -6
  73. package/dist/services/tools-config-normalizer.js.map +1 -1
  74. package/dist/services/tts/browser-provider.d.ts.map +1 -1
  75. package/dist/services/tts/browser-provider.js +201 -34
  76. package/dist/services/tts/browser-provider.js.map +1 -1
  77. package/dist/services/tts/text-processing.d.ts +17 -0
  78. package/dist/services/tts/text-processing.d.ts.map +1 -0
  79. package/dist/services/tts/text-processing.js +144 -0
  80. package/dist/services/tts/text-processing.js.map +1 -0
  81. package/dist/tools/default-tool-module-loaders.d.ts.map +1 -1
  82. package/dist/tools/default-tool-module-loaders.js +1 -7
  83. package/dist/tools/default-tool-module-loaders.js.map +1 -1
  84. package/dist/tools/registrations/accessibility-tools.d.ts +7 -2
  85. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -1
  86. package/dist/tools/registrations/accessibility-tools.js +23 -15
  87. package/dist/tools/registrations/accessibility-tools.js.map +1 -1
  88. package/dist/tools/registrations/calculator.d.ts.map +1 -1
  89. package/dist/tools/registrations/calculator.js +18 -10
  90. package/dist/tools/registrations/calculator.js.map +1 -1
  91. package/dist/tools/registrations/interaction-tools.d.ts.map +1 -1
  92. package/dist/tools/registrations/interaction-tools.js +5 -4
  93. package/dist/tools/registrations/interaction-tools.js.map +1 -1
  94. package/dist/tools/registrations/measurement-tools.js +4 -4
  95. package/dist/tools/registrations/measurement-tools.js.map +1 -1
  96. package/dist/tools/registrations/subject-specific-tools.js +4 -4
  97. package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
  98. package/dist/tools/registrations/tts.d.ts.map +1 -1
  99. package/dist/tools/registrations/tts.js +161 -17
  100. package/dist/tools/registrations/tts.js.map +1 -1
  101. package/dist/tools/tool-tag-map.d.ts.map +1 -1
  102. package/dist/tools/tool-tag-map.js +2 -1
  103. package/dist/tools/tool-tag-map.js.map +1 -1
  104. package/package.json +12 -8
  105. package/src/components/ItemToolBar.svelte +275 -47
  106. package/src/components/PieAssessmentToolkit.svelte +217 -53
  107. package/src/components/SectionToolBar.svelte +58 -0
  108. package/dist/services/tts/provider-interface.d.ts +0 -131
  109. package/dist/services/tts/provider-interface.d.ts.map +0 -1
  110. package/dist/services/tts/provider-interface.js +0 -10
  111. package/dist/services/tts/provider-interface.js.map +0 -1
  112. package/src/components/PNPProvenanceViewer.svelte +0 -270
@@ -20,6 +20,15 @@ export interface ToolToolbarButtonDefinition {
20
20
  active?: boolean;
21
21
  }
22
22
  export interface ToolbarContext {
23
+ scope: {
24
+ level: ToolLevel;
25
+ scopeId: string;
26
+ assessmentId?: string;
27
+ sectionId?: string;
28
+ itemId?: string;
29
+ canonicalItemId?: string;
30
+ contentKind?: string;
31
+ };
23
32
  itemId: string;
24
33
  catalogId: string;
25
34
  language: string;
@@ -38,14 +47,19 @@ export interface ToolbarContext {
38
47
  ensureTTSReady: (() => Promise<void>) | null;
39
48
  componentOverrides?: ToolComponentOverrides;
40
49
  }
50
+ export interface ToolRenderElement {
51
+ element: HTMLElement | null;
52
+ mount: "before-buttons" | "after-buttons";
53
+ }
41
54
  export interface ToolToolbarRenderResult {
42
55
  toolId: string;
43
- inlineElement?: HTMLElement | null;
44
- overlayElement?: HTMLElement | null;
56
+ elements?: ToolRenderElement[];
45
57
  button?: ToolToolbarButtonDefinition | null;
46
58
  sync?: () => void;
47
59
  subscribeActive?: (callback: (active: boolean) => void) => (() => void);
48
60
  }
61
+ export type ToolActivation = "toolbar-toggle" | "selection-gateway";
62
+ export type ToolSingletonScope = "section";
49
63
  /**
50
64
  * Tool registration interface
51
65
  */
@@ -60,6 +74,16 @@ export interface ToolRegistration {
60
74
  icon: string | ((context: ToolContext) => string);
61
75
  /** Which levels this tool supports */
62
76
  supportedLevels: ToolLevel[];
77
+ /**
78
+ * Activation model for this tool.
79
+ * - toolbar-toggle: rendered as a toolbar button (default)
80
+ * - selection-gateway: rendered as a singleton selection-driven gateway
81
+ */
82
+ activation?: ToolActivation;
83
+ /**
84
+ * Optional singleton scope for activation models that mount exactly one instance.
85
+ */
86
+ singletonScope?: ToolSingletonScope;
63
87
  /**
64
88
  * PNP support IDs that enable this tool (optional)
65
89
  * Used by PNPToolResolver to determine if tool is allowed
@@ -156,6 +180,18 @@ export declare class ToolRegistry {
156
180
  * @returns Array of tool registrations that support this level
157
181
  */
158
182
  getToolsByLevel(level: ToolLevel): ToolRegistration[];
183
+ /**
184
+ * Resolve tool activation with backward-compatible defaults.
185
+ */
186
+ getToolActivation(toolId: string): ToolActivation;
187
+ /**
188
+ * Resolve singleton scope for a tool when present.
189
+ */
190
+ getToolSingletonScope(toolId: string): ToolSingletonScope | null;
191
+ /**
192
+ * Filter tool IDs by activation type.
193
+ */
194
+ filterToolIdsByActivation(toolIds: string[], activation: ToolActivation): string[];
159
195
  /**
160
196
  * Filter tools by visibility in a given context
161
197
  *
@@ -179,6 +215,8 @@ export declare class ToolRegistry {
179
215
  description: string;
180
216
  pnpSupportIds: string[];
181
217
  supportedLevels: ToolLevel[];
218
+ activation: ToolActivation;
219
+ singletonScope: ToolSingletonScope | null;
182
220
  }>;
183
221
  /**
184
222
  * Generate PNP support IDs from enabled tools
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/services/ToolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/services/ToolRegistry.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Central registry for all assessment tools. Manages tool metadata, visibility logic,
5
5
  * and button/instance creation. Supports dynamic registration and override by integrators.
6
6
  */
7
+ import { normalizeToolAlias } from "./tools-config-normalizer.js";
7
8
  /**
8
9
  * Tool Registry
9
10
  *
@@ -20,7 +21,7 @@ export class ToolRegistry {
20
21
  * Normalize a single tool alias to canonical toolId.
21
22
  */
22
23
  normalizeToolId(toolId) {
23
- return toolId === "tts" ? "textToSpeech" : toolId;
24
+ return normalizeToolAlias(toolId);
24
25
  }
25
26
  /**
26
27
  * Normalize a list of tool aliases to canonical toolIds.
@@ -146,6 +147,24 @@ export class ToolRegistry {
146
147
  getToolsByLevel(level) {
147
148
  return this.getAllTools().filter((tool) => tool.supportedLevels.includes(level));
148
149
  }
150
+ /**
151
+ * Resolve tool activation with backward-compatible defaults.
152
+ */
153
+ getToolActivation(toolId) {
154
+ return this.get(toolId)?.activation || "toolbar-toggle";
155
+ }
156
+ /**
157
+ * Resolve singleton scope for a tool when present.
158
+ */
159
+ getToolSingletonScope(toolId) {
160
+ return this.get(toolId)?.singletonScope || null;
161
+ }
162
+ /**
163
+ * Filter tool IDs by activation type.
164
+ */
165
+ filterToolIdsByActivation(toolIds, activation) {
166
+ return toolIds.filter((toolId) => this.getToolActivation(toolId) === activation);
167
+ }
149
168
  /**
150
169
  * Filter tools by visibility in a given context
151
170
  *
@@ -193,6 +212,8 @@ export class ToolRegistry {
193
212
  description: tool.description,
194
213
  pnpSupportIds: tool.pnpSupportIds || [],
195
214
  supportedLevels: tool.supportedLevels,
215
+ activation: tool.activation || "toolbar-toggle",
216
+ singletonScope: tool.singletonScope || null,
196
217
  }));
197
218
  }
198
219
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../src/services/ToolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../src/services/ToolRegistry.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ import { TTSService } from "./TTSService.js";
23
23
  import { ToolProviderRegistry } from "./tool-providers/index.js";
24
24
  import type { IToolProvider } from "./tool-providers/IToolProvider.js";
25
25
  import type { DesmosToolProviderConfig, MathJsToolProviderConfig, TIToolProviderConfig, TTSToolProviderConfig } from "./tool-providers/index.js";
26
- import type { SectionControllerContext, SectionControllerFactoryDefaults, SectionControllerHandle, SectionControllerPersistenceStrategy, SectionPersistenceFactoryDefaults } from "./section-controller-types.js";
26
+ import type { SectionControllerContext, SectionControllerFactoryDefaults, SectionControllerHandle, SectionControllerKey, SectionControllerPersistenceStrategy, SectionPersistenceFactoryDefaults } from "./section-controller-types.js";
27
27
  export type { SectionControllerContext, SectionControllerFactoryDefaults, SectionControllerHandle, SectionControllerKey, SectionControllerPersistenceStrategy, SectionPersistenceFactoryDefaults, } from "./section-controller-types.js";
28
28
  /**
29
29
  * Generic tool configuration
@@ -37,10 +37,17 @@ export interface ToolConfig {
37
37
  */
38
38
  export interface TTSToolConfig extends ToolConfig {
39
39
  backend?: "browser" | "polly" | "google" | "server";
40
+ provider?: "polly" | "google";
41
+ serverProvider?: "polly" | "google";
42
+ engine?: "standard" | "neural";
43
+ sampleRate?: number;
44
+ format?: "mp3" | "ogg" | "pcm";
45
+ speechMarksMode?: "word" | "word+sentence";
40
46
  defaultVoice?: string;
41
47
  rate?: number;
42
48
  pitch?: number;
43
49
  apiEndpoint?: string;
50
+ language?: string;
44
51
  authFetcher?: () => Promise<Partial<TTSToolProviderConfig>>;
45
52
  }
46
53
  /**
@@ -69,6 +76,7 @@ export interface ToolkitToolsConfig extends CanonicalToolsConfig {
69
76
  providers: ToolProvidersConfig & {
70
77
  tts?: TTSToolConfig;
71
78
  calculator?: CalculatorToolConfig;
79
+ annotationToolbar?: ToolConfig;
72
80
  };
73
81
  }
74
82
  /**
@@ -124,6 +132,17 @@ export interface ToolkitInitStatus {
124
132
  coordinator: boolean;
125
133
  providers: Record<string, boolean>;
126
134
  }
135
+ export interface SectionControllerLifecycleEvent {
136
+ type: "ready" | "disposed";
137
+ key: SectionControllerKey;
138
+ controller?: SectionControllerHandle;
139
+ }
140
+ export interface SectionEventSubscriptionArgs {
141
+ sectionId: string;
142
+ attemptId?: string;
143
+ listener: (event: unknown) => void;
144
+ eventTypes?: readonly string[];
145
+ }
127
146
  export interface ToolkitCoordinatorHooks {
128
147
  onError?: (error: Error, context: ToolkitErrorContext) => void;
129
148
  onTTSError?: (error: Error, context: ToolkitErrorContext) => void;
@@ -137,6 +156,11 @@ export interface ToolkitCoordinatorHooks {
137
156
  onTelemetry?: (eventName: string, payload?: Record<string, unknown>) => void | Promise<void>;
138
157
  loadToolState?: () => Record<string, Record<string, unknown>> | Promise<Record<string, Record<string, unknown>> | null | undefined> | null | undefined;
139
158
  saveToolState?: (state: Record<string, Record<string, unknown>>) => void | Promise<void>;
159
+ /**
160
+ * Provide section-level controller overrides only.
161
+ * Avoid instantiating per-item controller graphs here unless item lifecycle
162
+ * requirements explicitly demand it.
163
+ */
140
164
  createSectionController?: (context: SectionControllerContext, defaults: SectionControllerFactoryDefaults) => SectionControllerHandle | Promise<SectionControllerHandle>;
141
165
  createSectionPersistence?: (context: SectionControllerContext, defaults: SectionPersistenceFactoryDefaults) => SectionControllerPersistenceStrategy | Promise<SectionControllerPersistenceStrategy>;
142
166
  onSectionControllerReady?: (context: SectionControllerContext, controller: SectionControllerHandle) => void | Promise<void>;
@@ -198,13 +222,19 @@ export declare class ToolkitCoordinator {
198
222
  private coordinatorReadyNotified;
199
223
  private readonly providerInitPromises;
200
224
  private readonly sectionControllers;
225
+ private readonly sectionControllerKeys;
201
226
  private readonly sectionControllerInitPromises;
202
227
  private readonly sectionPersistenceStrategies;
228
+ private readonly sectionControllerLifecycleListeners;
229
+ private readonly sectionEventListenerIds;
230
+ private readonly sectionEventSubscriptions;
231
+ private nextSectionEventListenerId;
203
232
  /** Callback for floating tools changes */
204
233
  private floatingToolsChangeCallback;
205
234
  private static resolveConfig;
206
235
  constructor(config: ToolkitCoordinatorConfig);
207
236
  private emitTelemetry;
237
+ private emitSectionControllerLifecycle;
208
238
  private handleError;
209
239
  private getSectionControllerMapKey;
210
240
  private createDefaultSectionPersistence;
@@ -222,6 +252,9 @@ export declare class ToolkitCoordinator {
222
252
  sectionId: string;
223
253
  attemptId?: string;
224
254
  }): SectionControllerHandle | undefined;
255
+ subscribeSectionEvents(args: SectionEventSubscriptionArgs): () => void;
256
+ private resolveSectionControllerForSubscription;
257
+ onSectionControllerLifecycle(listener: (event: SectionControllerLifecycleEvent) => void): () => void;
225
258
  getOrCreateSectionController(args: {
226
259
  sectionId: string;
227
260
  attemptId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolkitCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/ToolkitCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolkitCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/ToolkitCoordinator.ts"],"names":[],"mappings":"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"}
@@ -66,8 +66,13 @@ export class ToolkitCoordinator {
66
66
  coordinatorReadyNotified = false;
67
67
  providerInitPromises = new Map();
68
68
  sectionControllers = new Map();
69
+ sectionControllerKeys = new Map();
69
70
  sectionControllerInitPromises = new Map();
70
71
  sectionPersistenceStrategies = new Map();
72
+ sectionControllerLifecycleListeners = new Set();
73
+ sectionEventListenerIds = new WeakMap();
74
+ sectionEventSubscriptions = new Map();
75
+ nextSectionEventListenerId = 1;
71
76
  /** Callback for floating tools changes */
72
77
  floatingToolsChangeCallback = null;
73
78
  static resolveConfig(config) {
@@ -81,6 +86,9 @@ export class ToolkitCoordinator {
81
86
  enabled: true,
82
87
  provider: "desmos",
83
88
  },
89
+ annotationToolbar: {
90
+ enabled: true,
91
+ },
84
92
  };
85
93
  return {
86
94
  ...config,
@@ -133,6 +141,16 @@ export class ToolkitCoordinator {
133
141
  console.warn("[ToolkitCoordinator] telemetry hook failed:", err);
134
142
  }
135
143
  }
144
+ emitSectionControllerLifecycle(event) {
145
+ for (const listener of this.sectionControllerLifecycleListeners) {
146
+ try {
147
+ listener(event);
148
+ }
149
+ catch (error) {
150
+ console.warn("[ToolkitCoordinator] section controller lifecycle listener failed:", error);
151
+ }
152
+ }
153
+ }
136
154
  handleError(error, context) {
137
155
  const normalized = error instanceof Error ? error : new Error(String(error));
138
156
  try {
@@ -244,11 +262,27 @@ export class ToolkitCoordinator {
244
262
  const ttsConfig = this.config.tools?.providers?.tts;
245
263
  if (ttsConfig?.enabled !== false) {
246
264
  const backend = ttsConfig?.backend || "browser";
265
+ const serverProvider = ttsConfig?.serverProvider ||
266
+ ttsConfig?.provider ||
267
+ (backend === "polly" || backend === "google" ? backend : undefined);
247
268
  void this.registerProvider("tts", {
248
269
  provider: new TTSToolProvider(backend),
249
270
  config: {
250
271
  backend,
251
272
  apiEndpoint: ttsConfig?.apiEndpoint,
273
+ serverProvider,
274
+ providerOptions: backend === "polly"
275
+ ? {
276
+ ...(ttsConfig?.engine ? { engine: ttsConfig.engine } : {}),
277
+ ...(typeof ttsConfig?.sampleRate === "number"
278
+ ? { sampleRate: ttsConfig.sampleRate }
279
+ : {}),
280
+ ...(ttsConfig?.format ? { format: ttsConfig.format } : {}),
281
+ speechMarkTypes: ttsConfig?.speechMarksMode === "word+sentence"
282
+ ? ["word", "sentence"]
283
+ : ["word"],
284
+ }
285
+ : undefined,
252
286
  voice: ttsConfig?.defaultVoice,
253
287
  rate: ttsConfig?.rate,
254
288
  pitch: ttsConfig?.pitch,
@@ -356,6 +390,93 @@ export class ToolkitCoordinator {
356
390
  };
357
391
  return this.sectionControllers.get(this.getSectionControllerMapKey(key));
358
392
  }
393
+ subscribeSectionEvents(args) {
394
+ const controllerEntry = this.resolveSectionControllerForSubscription({
395
+ sectionId: args.sectionId,
396
+ attemptId: args.attemptId,
397
+ });
398
+ const controller = controllerEntry?.controller;
399
+ const subscribe = controller?.subscribe;
400
+ if (!controller || !subscribe) {
401
+ return () => { };
402
+ }
403
+ const { mapKey } = controllerEntry;
404
+ let listenerId = this.sectionEventListenerIds.get(args.listener);
405
+ if (!listenerId) {
406
+ listenerId = this.nextSectionEventListenerId++;
407
+ this.sectionEventListenerIds.set(args.listener, listenerId);
408
+ }
409
+ const subscriptionKey = `${mapKey}::${listenerId}`;
410
+ const previousSubscription = this.sectionEventSubscriptions.get(subscriptionKey);
411
+ previousSubscription?.();
412
+ const eventTypeFilter = args.eventTypes
413
+ ? new Set(args.eventTypes)
414
+ : null;
415
+ const unsubscribeController = subscribe.call(controller, (event) => {
416
+ if (!eventTypeFilter) {
417
+ args.listener(event);
418
+ return;
419
+ }
420
+ const eventType = typeof event === "object" &&
421
+ event !== null &&
422
+ "type" in event &&
423
+ typeof event.type === "string"
424
+ ? event.type
425
+ : null;
426
+ if (!eventType || !eventTypeFilter.has(eventType)) {
427
+ return;
428
+ }
429
+ args.listener(event);
430
+ });
431
+ const detach = () => {
432
+ const current = this.sectionEventSubscriptions.get(subscriptionKey);
433
+ if (current !== detach) {
434
+ return;
435
+ }
436
+ this.sectionEventSubscriptions.delete(subscriptionKey);
437
+ unsubscribeController();
438
+ };
439
+ this.sectionEventSubscriptions.set(subscriptionKey, detach);
440
+ return detach;
441
+ }
442
+ resolveSectionControllerForSubscription(args) {
443
+ const explicitKey = {
444
+ assessmentId: this.assessmentId,
445
+ sectionId: args.sectionId,
446
+ attemptId: args.attemptId,
447
+ };
448
+ const explicitMapKey = this.getSectionControllerMapKey(explicitKey);
449
+ const explicitController = this.sectionControllers.get(explicitMapKey);
450
+ if (explicitController) {
451
+ return { mapKey: explicitMapKey, controller: explicitController };
452
+ }
453
+ if (args.attemptId !== undefined) {
454
+ return null;
455
+ }
456
+ const matches = [];
457
+ for (const [mapKey, key] of this.sectionControllerKeys.entries()) {
458
+ if (key.assessmentId !== this.assessmentId || key.sectionId !== args.sectionId) {
459
+ continue;
460
+ }
461
+ const controller = this.sectionControllers.get(mapKey);
462
+ if (!controller)
463
+ continue;
464
+ matches.push({ mapKey, controller });
465
+ }
466
+ if (matches.length === 1) {
467
+ return matches[0];
468
+ }
469
+ if (matches.length > 1) {
470
+ console.warn(`[ToolkitCoordinator] subscribeSectionEvents is ambiguous for section "${args.sectionId}" without attemptId; ${matches.length} controllers are active.`);
471
+ }
472
+ return null;
473
+ }
474
+ onSectionControllerLifecycle(listener) {
475
+ this.sectionControllerLifecycleListeners.add(listener);
476
+ return () => {
477
+ this.sectionControllerLifecycleListeners.delete(listener);
478
+ };
479
+ }
359
480
  async getOrCreateSectionController(args) {
360
481
  const key = {
361
482
  assessmentId: this.assessmentId,
@@ -365,6 +486,7 @@ export class ToolkitCoordinator {
365
486
  const mapKey = this.getSectionControllerMapKey(key);
366
487
  const existingController = this.sectionControllers.get(mapKey);
367
488
  if (existingController) {
489
+ this.sectionControllerKeys.set(mapKey, key);
368
490
  if (args.updateExisting !== false) {
369
491
  await existingController.updateInput?.(args.input);
370
492
  }
@@ -390,6 +512,12 @@ export class ToolkitCoordinator {
390
512
  await controller.initialize?.(args.input);
391
513
  await controller.hydrate?.();
392
514
  this.sectionControllers.set(mapKey, controller);
515
+ this.sectionControllerKeys.set(mapKey, key);
516
+ this.emitSectionControllerLifecycle({
517
+ type: "ready",
518
+ key,
519
+ controller,
520
+ });
393
521
  await this.hooks.onSectionControllerReady?.(context, controller);
394
522
  await this.emitTelemetry("section-controller-ready", {
395
523
  assessmentId: key.assessmentId,
@@ -422,6 +550,12 @@ export class ToolkitCoordinator {
422
550
  const controller = this.sectionControllers.get(mapKey);
423
551
  if (!controller)
424
552
  return;
553
+ const subscriptionPrefix = `${mapKey}::`;
554
+ for (const subscriptionKey of Array.from(this.sectionEventSubscriptions.keys())) {
555
+ if (!subscriptionKey.startsWith(subscriptionPrefix))
556
+ continue;
557
+ this.sectionEventSubscriptions.get(subscriptionKey)?.();
558
+ }
425
559
  const context = {
426
560
  key,
427
561
  coordinator: this,
@@ -449,6 +583,11 @@ export class ToolkitCoordinator {
449
583
  }
450
584
  finally {
451
585
  this.sectionControllers.delete(mapKey);
586
+ this.sectionControllerKeys.delete(mapKey);
587
+ this.emitSectionControllerLifecycle({
588
+ type: "disposed",
589
+ key,
590
+ });
452
591
  if (args.clearPersistence) {
453
592
  const strategy = this.sectionPersistenceStrategies.get(mapKey);
454
593
  await strategy?.clear?.(context);
@@ -484,12 +623,58 @@ export class ToolkitCoordinator {
484
623
  ?.backend ??
485
624
  "browser",
486
625
  });
626
+ const resolvedToolConfig = config ||
627
+ (this.config.tools?.providers?.tts || {});
628
+ const resolvedBackend = resolvedToolConfig.backend || "browser";
629
+ const runtimeProvider = resolvedToolConfig.serverProvider ||
630
+ resolvedToolConfig.provider ||
631
+ (resolvedBackend === "polly" || resolvedBackend === "google"
632
+ ? resolvedBackend
633
+ : undefined);
634
+ const runtimeTTSConfig = {
635
+ voice: resolvedToolConfig.defaultVoice,
636
+ rate: resolvedToolConfig.rate,
637
+ pitch: resolvedToolConfig.pitch,
638
+ providerOptions: {
639
+ ...(resolvedToolConfig.language
640
+ ? {
641
+ locale: resolvedToolConfig.language,
642
+ }
643
+ : {}),
644
+ ...(resolvedBackend === "polly" && resolvedToolConfig.engine
645
+ ? {
646
+ engine: resolvedToolConfig.engine,
647
+ }
648
+ : {}),
649
+ ...(resolvedBackend === "polly" &&
650
+ typeof resolvedToolConfig.sampleRate === "number"
651
+ ? {
652
+ sampleRate: resolvedToolConfig.sampleRate,
653
+ }
654
+ : {}),
655
+ ...(resolvedBackend === "polly" && resolvedToolConfig.format
656
+ ? {
657
+ format: resolvedToolConfig.format,
658
+ }
659
+ : {}),
660
+ ...(resolvedBackend === "polly"
661
+ ? {
662
+ speechMarkTypes: resolvedToolConfig.speechMarksMode === "word+sentence"
663
+ ? ["word", "sentence"]
664
+ : ["word"],
665
+ }
666
+ : {}),
667
+ },
668
+ apiEndpoint: resolvedToolConfig.apiEndpoint,
669
+ provider: runtimeProvider,
670
+ language: resolvedToolConfig.language,
671
+ };
487
672
  // Try to use TTS provider from registry if available
488
673
  if (this.toolProviderRegistry.has("tts")) {
489
674
  try {
490
675
  const ttsProvider = await this.ensureProviderReady("tts");
491
676
  const providerInstance = await ttsProvider.createInstance();
492
- await this.ttsService.initialize(providerInstance);
677
+ await this.ttsService.initialize(providerInstance, runtimeTTSConfig);
493
678
  this.ttsService.setCatalogResolver(this.catalogResolver);
494
679
  this.ttsInitialized = true;
495
680
  await this.hooks.onTTSReady?.();
@@ -506,7 +691,7 @@ export class ToolkitCoordinator {
506
691
  // Fallback to browser provider
507
692
  const provider = new BrowserTTSProvider();
508
693
  try {
509
- await this.ttsService.initialize(provider, config);
694
+ await this.ttsService.initialize(provider, runtimeTTSConfig);
510
695
  this.ttsService.setCatalogResolver(this.catalogResolver);
511
696
  this.ttsInitialized = true;
512
697
  await this.hooks.onTTSReady?.();
@@ -710,11 +895,27 @@ export class ToolkitCoordinator {
710
895
  if (ttsConfig?.enabled === false)
711
896
  return;
712
897
  const backend = ttsConfig?.backend || "browser";
898
+ const serverProvider = ttsConfig?.serverProvider ||
899
+ ttsConfig?.provider ||
900
+ (backend === "polly" || backend === "google" ? backend : undefined);
713
901
  await this.registerProvider("tts", {
714
902
  provider: new TTSToolProvider(backend),
715
903
  config: {
716
904
  backend,
717
905
  apiEndpoint: ttsConfig?.apiEndpoint,
906
+ serverProvider,
907
+ providerOptions: backend === "polly"
908
+ ? {
909
+ ...(ttsConfig?.engine ? { engine: ttsConfig.engine } : {}),
910
+ ...(typeof ttsConfig?.sampleRate === "number"
911
+ ? { sampleRate: ttsConfig.sampleRate }
912
+ : {}),
913
+ ...(ttsConfig?.format ? { format: ttsConfig.format } : {}),
914
+ speechMarkTypes: ttsConfig?.speechMarksMode === "word+sentence"
915
+ ? ["word", "sentence"]
916
+ : ["word"],
917
+ }
918
+ : undefined,
718
919
  voice: ttsConfig?.defaultVoice,
719
920
  rate: ttsConfig?.rate,
720
921
  pitch: ttsConfig?.pitch,