@pie-players/pie-assessment-toolkit 0.3.25 → 0.3.27

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 (55) hide show
  1. package/README.md +70 -17
  2. package/dist/components/ItemToolBar.custom-element.js +116 -9
  3. package/dist/components/PieAssessmentToolkit.custom-element.js +302 -7
  4. package/dist/index.d.ts +9 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +5 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/services/HighlightCoordinator.d.ts +3 -2
  9. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  10. package/dist/services/HighlightCoordinator.js +6 -3
  11. package/dist/services/HighlightCoordinator.js.map +1 -1
  12. package/dist/services/TTSService.d.ts +3 -0
  13. package/dist/services/TTSService.d.ts.map +1 -1
  14. package/dist/services/TTSService.js +66 -5
  15. package/dist/services/TTSService.js.map +1 -1
  16. package/dist/services/ToolRegistry.d.ts +10 -1
  17. package/dist/services/ToolRegistry.d.ts.map +1 -1
  18. package/dist/services/ToolRegistry.js.map +1 -1
  19. package/dist/services/ToolkitCoordinator.d.ts +37 -5
  20. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  21. package/dist/services/ToolkitCoordinator.js +114 -35
  22. package/dist/services/ToolkitCoordinator.js.map +1 -1
  23. package/dist/services/create-tools-config.d.ts +15 -0
  24. package/dist/services/create-tools-config.d.ts.map +1 -0
  25. package/dist/services/create-tools-config.js +13 -0
  26. package/dist/services/create-tools-config.js.map +1 -0
  27. package/dist/services/framework-error.d.ts +34 -0
  28. package/dist/services/framework-error.d.ts.map +1 -0
  29. package/dist/services/framework-error.js +43 -0
  30. package/dist/services/framework-error.js.map +1 -0
  31. package/dist/services/tool-config-validation.d.ts +31 -0
  32. package/dist/services/tool-config-validation.d.ts.map +1 -0
  33. package/dist/services/tool-config-validation.js +242 -0
  34. package/dist/services/tool-config-validation.js.map +1 -0
  35. package/dist/services/toolbar-items.d.ts +1 -0
  36. package/dist/services/toolbar-items.d.ts.map +1 -1
  37. package/dist/services/toolbar-items.js +28 -2
  38. package/dist/services/toolbar-items.js.map +1 -1
  39. package/dist/services/tts/visual-line-ranges.d.ts +19 -0
  40. package/dist/services/tts/visual-line-ranges.d.ts.map +1 -0
  41. package/dist/services/tts/visual-line-ranges.js +227 -0
  42. package/dist/services/tts/visual-line-ranges.js.map +1 -0
  43. package/dist/services/tts-runtime-config.d.ts +29 -0
  44. package/dist/services/tts-runtime-config.d.ts.map +1 -1
  45. package/dist/services/tts-runtime-config.js +101 -9
  46. package/dist/services/tts-runtime-config.js.map +1 -1
  47. package/dist/tools/registrations/accessibility-tools.js +1 -1
  48. package/dist/tools/registrations/accessibility-tools.js.map +1 -1
  49. package/dist/tools/registrations/measurement-tools.js +4 -4
  50. package/dist/tools/registrations/measurement-tools.js.map +1 -1
  51. package/dist/tools/registrations/tts.d.ts +1 -0
  52. package/dist/tools/registrations/tts.d.ts.map +1 -1
  53. package/dist/tools/registrations/tts.js +52 -21
  54. package/dist/tools/registrations/tts.js.map +1 -1
  55. package/package.json +7 -7
@@ -33,6 +33,8 @@ import {
33
33
 
34
34
  import { connectAssessmentToolkitHostRuntimeContext } from "../context/runtime-context-consumer.js";
35
35
  import { ToolkitCoordinator } from "../services/ToolkitCoordinator.js";
36
+ import { formatFrameworkErrorForConsole, frameworkErrorFromUnknown } from "../services/framework-error.js";
37
+ import { normalizeAndValidateToolsConfig } from "../services/tool-config-validation.js";
36
38
 
37
39
  import {
38
40
  PIE_INTERNAL_CONTENT_LOADED_EVENT,
@@ -52,11 +54,12 @@ import {
52
54
  shouldEmitCanonicalSessionEvent
53
55
  } from "../runtime/session-event-emitter-policy.js";
54
56
 
57
+ var root_1 = $.from_html(`<div class="pie-assessment-toolkit-error svelte-vpe4u2" role="alert" aria-live="assertive"><div class="pie-assessment-toolkit-error-title svelte-vpe4u2"> </div> <div class="pie-assessment-toolkit-error-message svelte-vpe4u2"> </div> <pre class="pie-assessment-toolkit-error-details svelte-vpe4u2"> </pre></div>`);
55
58
  var root = $.from_html(`<div class="pie-assessment-toolkit-anchor svelte-vpe4u2" aria-hidden="true"></div> <!>`, 1);
56
59
 
57
60
  const $$css = {
58
61
  hash: 'svelte-vpe4u2',
59
- code: '.pie-assessment-toolkit-anchor.svelte-vpe4u2 {display:none;}'
62
+ code: '.pie-assessment-toolkit-anchor.svelte-vpe4u2 {display:none;}.pie-assessment-toolkit-error.svelte-vpe4u2 {margin:0.75rem;padding:0.75rem 1rem;border-radius:0.5rem;border:1px solid color-mix(in srgb, #dc2626 40%, transparent);background:color-mix(in srgb, #dc2626 12%, transparent);color:#7f1d1d;font-size:0.9rem;}.pie-assessment-toolkit-error-title.svelte-vpe4u2 {font-weight:600;margin-bottom:0.25rem;}.pie-assessment-toolkit-error-message.svelte-vpe4u2 {margin-bottom:0.5rem;}.pie-assessment-toolkit-error-details.svelte-vpe4u2 {margin:0;white-space:pre-wrap;word-break:break-word;}'
60
63
  };
61
64
 
62
65
  export default function PieAssessmentToolkit($$anchor, $$props) {
@@ -81,12 +84,18 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
81
84
  view = $.prop($$props, 'view', 7, "candidate"),
82
85
  env = $.prop($$props, 'env', 23, () => ({})),
83
86
  lazyInit = $.prop($$props, 'lazyInit', 7, true),
87
+ toolConfigStrictness = $.prop($$props, 'toolConfigStrictness', 7, "error"),
84
88
  tools = $.prop($$props, 'tools', 23, () => ({})),
89
+ toolRegistry = $.prop($$props, 'toolRegistry', 7, null),
85
90
  accessibility = $.prop($$props, 'accessibility', 23, () => ({})),
86
91
  player = $.prop($$props, 'player', 7, null),
87
92
  playerType = $.prop($$props, 'playerType', 7, ""),
88
93
  coordinator = $.prop($$props, 'coordinator', 7, null),
89
94
  createSectionController = $.prop($$props, 'createSectionController', 7, null),
95
+ frameworkErrorCallback = $.prop($$props, 'frameworkErrorHook', 7, null),
96
+ onFrameworkError = $.prop($$props, 'onFrameworkError', 7, null),
97
+ onframeworkerror = $.prop($$props, 'onframeworkerror', 7, null),
98
+ errorRenderer = $.prop($$props, 'errorRenderer', 7, null),
90
99
  isolation = $.prop($$props, 'isolation', 7, "inherit");
91
100
 
92
101
  let anchor = $.state(null);
@@ -100,10 +109,16 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
100
109
  let compositionVersion = $.state(0);
101
110
  let compositionModel = $.state(null);
102
111
  let runtimeError = $.state(null);
112
+ let frameworkErrorModel = $.state(null);
113
+ let frameworkErrorTitle = $.state("Unable to initialize assessment toolkit.");
114
+ let frameworkErrorDetails = $.state($.proxy([]));
115
+ let deliveredFrameworkErrorKey = $.state("");
116
+ let lastOwnedBootstrapFailureKey = $.state("");
103
117
  let lastCompositionRevisionKey = $.state("");
104
118
  let pendingCompositionModel = null;
105
119
  let pendingCompositionEmit = false;
106
120
  let compositionEmitRaf = null;
121
+ let pendingCrossBoundaryEvents = [];
107
122
  const sessionEmitPolicyState = createSessionEmitPolicyState();
108
123
 
109
124
  function getHostElement() {
@@ -121,11 +136,123 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
121
136
  const host = $.derived(() => getHostElement());
122
137
 
123
138
  function emit(name, detail) {
124
- if (!$.get(host)) return;
139
+ if (!$.get(host)) {
140
+ pendingCrossBoundaryEvents = [...pendingCrossBoundaryEvents, { name, detail }];
141
+
142
+ return;
143
+ }
125
144
 
126
145
  dispatchCrossBoundaryEvent($.get(host), name, detail);
127
146
  }
128
147
 
148
+ $.user_effect(() => {
149
+ if (!$.get(host)) return;
150
+ if (pendingCrossBoundaryEvents.length === 0) return;
151
+
152
+ const queued = pendingCrossBoundaryEvents;
153
+
154
+ pendingCrossBoundaryEvents = [];
155
+
156
+ queueMicrotask(() => {
157
+ const resolvedHost = $.get(host);
158
+
159
+ if (!resolvedHost) {
160
+ pendingCrossBoundaryEvents = [...queued, ...pendingCrossBoundaryEvents];
161
+
162
+ return;
163
+ }
164
+
165
+ for (const event of queued) {
166
+ dispatchCrossBoundaryEvent(resolvedHost, event.name, event.detail);
167
+ }
168
+ });
169
+ });
170
+
171
+ function applyErrorRenderer(model) {
172
+ if (!errorRenderer()) {
173
+ return {
174
+ title: "Unable to initialize assessment toolkit.",
175
+ details: model.details.length > 0 ? model.details : [model.message]
176
+ };
177
+ }
178
+
179
+ try {
180
+ const rendered = errorRenderer()(model) || {};
181
+
182
+ return {
183
+ title: typeof rendered.title === "string" && rendered.title.trim().length > 0
184
+ ? rendered.title
185
+ : "Unable to initialize assessment toolkit.",
186
+
187
+ details: Array.isArray(rendered.details) && rendered.details.length > 0
188
+ ? rendered.details.map((detail) => String(detail))
189
+ : model.details.length > 0 ? model.details : [model.message]
190
+ };
191
+ } catch(rendererError) {
192
+ const message = rendererError instanceof Error && rendererError.message.trim().length > 0
193
+ ? rendererError.message
194
+ : String(rendererError || "Unknown renderer error");
195
+
196
+ return {
197
+ title: "Unable to initialize assessment toolkit.",
198
+ details: [...model.details, `Error renderer failed: ${message}`]
199
+ };
200
+ }
201
+ }
202
+
203
+ function reportFrameworkError(args) {
204
+ const model = frameworkErrorFromUnknown({
205
+ kind: args.kind,
206
+ source: args.source,
207
+ error: args.error,
208
+ recoverable: args.recoverable
209
+ });
210
+
211
+ console.error(formatFrameworkErrorForConsole(model), model.cause);
212
+
213
+ const rendered = applyErrorRenderer(model);
214
+
215
+ $.set(frameworkErrorModel, model, true);
216
+ $.set(frameworkErrorTitle, rendered.title, true);
217
+ $.set(frameworkErrorDetails, rendered.details, true);
218
+ emit("framework-error", model);
219
+ emit("runtime-error", { runtimeId, error: args.error, frameworkError: model });
220
+
221
+ const frameworkErrorHook = frameworkErrorCallback() ?? onFrameworkError() ?? onframeworkerror();
222
+
223
+ if (frameworkErrorHook) {
224
+ try {
225
+ frameworkErrorHook(model);
226
+ $.set(deliveredFrameworkErrorKey, `${model.kind}|${model.source}|${model.message}`);
227
+ } catch(hookError) {
228
+ console.error(`[pie-framework:runtime-init:pie-assessment-toolkit] framework error hook failed`, hookError);
229
+ }
230
+ }
231
+
232
+ return model;
233
+ }
234
+
235
+ $.user_effect(() => {
236
+ if (!$.get(frameworkErrorModel)) {
237
+ return;
238
+ }
239
+
240
+ const frameworkErrorKey = `${$.get(frameworkErrorModel).kind}|${$.get(frameworkErrorModel).source}|${$.get(frameworkErrorModel).message}`;
241
+
242
+ if ($.get(deliveredFrameworkErrorKey) === frameworkErrorKey) return;
243
+
244
+ const frameworkErrorHook = frameworkErrorCallback() ?? onFrameworkError() ?? onframeworkerror();
245
+
246
+ if (!frameworkErrorHook) return;
247
+
248
+ try {
249
+ frameworkErrorHook($.get(frameworkErrorModel));
250
+ $.set(deliveredFrameworkErrorKey, frameworkErrorKey);
251
+ } catch(hookError) {
252
+ console.error(`[pie-framework:runtime-init:pie-assessment-toolkit] framework error hook failed`, hookError);
253
+ }
254
+ });
255
+
129
256
  function hashString(input) {
130
257
  let hash = 5381;
131
258
 
@@ -265,13 +392,40 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
265
392
  throw new Error("pie-assessment-toolkit requires createSectionController when no coordinator hook provides one");
266
393
  }
267
394
 
268
- function buildOwnedCoordinator() {
395
+ function validateToolsConfigForBootstrap() {
396
+ return normalizeAndValidateToolsConfig(tools(), {
397
+ strictness: toolConfigStrictness(),
398
+ source: "pie-assessment-toolkit.bootstrap",
399
+ toolRegistry: toolRegistry()
400
+ }).config;
401
+ }
402
+
403
+ function getOwnedBootstrapFailureKey() {
404
+ let toolsSignature = "";
405
+
406
+ try {
407
+ toolsSignature = JSON.stringify(tools() || {});
408
+ } catch {
409
+ toolsSignature = "[unserializable-tools]";
410
+ }
411
+
412
+ return [
413
+ assessmentId() || "",
414
+ String(toolConfigStrictness() || "error"),
415
+ toolsSignature
416
+ ].join("|");
417
+ }
418
+
419
+ function buildOwnedCoordinator(validatedTools) {
269
420
  const fallbackAssessmentId = assessmentId() || section()?.identifier || `assessment-${Math.random().toString(16).slice(2)}`;
270
421
 
271
422
  return new ToolkitCoordinator({
272
423
  assessmentId: fallbackAssessmentId,
273
424
  lazyInit: lazyInit(),
274
- tools: tools(),
425
+ toolConfigStrictness: toolConfigStrictness(),
426
+ deferToolConfigValidation: true,
427
+ tools: validatedTools,
428
+ toolRegistry: toolRegistry(),
275
429
  accessibility: accessibility()
276
430
  });
277
431
  }
@@ -285,6 +439,8 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
285
439
  });
286
440
 
287
441
  $.user_effect(() => {
442
+ if (!$.get(host)) return;
443
+
288
444
  if (coordinator()) {
289
445
  if ($.get(ownedCoordinator)) {
290
446
  $.set(ownedCoordinator, null);
@@ -302,7 +458,31 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
302
458
  }
303
459
 
304
460
  if (!$.get(ownedCoordinator)) {
305
- $.set(ownedCoordinator, buildOwnedCoordinator(), true);
461
+ const failureKey = getOwnedBootstrapFailureKey();
462
+
463
+ if ($.get(lastOwnedBootstrapFailureKey) === failureKey) {
464
+ return;
465
+ }
466
+
467
+ try {
468
+ const validatedTools = validateToolsConfigForBootstrap();
469
+
470
+ $.set(ownedCoordinator, buildOwnedCoordinator(validatedTools), true);
471
+ $.set(lastOwnedBootstrapFailureKey, "");
472
+ $.set(frameworkErrorModel, null);
473
+ $.set(frameworkErrorTitle, "Unable to initialize assessment toolkit.");
474
+ $.set(frameworkErrorDetails, [], true);
475
+ } catch(error) {
476
+ $.set(runtimeError, error, true);
477
+ $.set(ownedCoordinator, null);
478
+ $.set(lastOwnedBootstrapFailureKey, failureKey, true);
479
+
480
+ reportFrameworkError({
481
+ kind: "coordinator-init",
482
+ source: "pie-assessment-toolkit",
483
+ error
484
+ });
485
+ }
306
486
  }
307
487
  });
308
488
 
@@ -615,7 +795,12 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
615
795
  }).catch((error) => {
616
796
  $.set(runtimeError, error, true);
617
797
  sectionEngine.reportSectionError({ source: "section-runtime", error, timestamp: Date.now() });
618
- emit("runtime-error", { runtimeId, error });
798
+
799
+ reportFrameworkError({
800
+ kind: "runtime-init",
801
+ source: "pie-assessment-toolkit",
802
+ error
803
+ });
619
804
  });
620
805
 
621
806
  return () => {
@@ -781,6 +966,13 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
781
966
 
782
967
  void sectionEngine.dispose().catch((error) => {
783
968
  $.set(runtimeError, error, true);
969
+
970
+ reportFrameworkError({
971
+ kind: "runtime-dispose",
972
+ source: "pie-assessment-toolkit",
973
+ error,
974
+ recoverable: true
975
+ });
784
976
  });
785
977
  };
786
978
  });
@@ -857,6 +1049,15 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
857
1049
  $.flush();
858
1050
  },
859
1051
 
1052
+ get toolConfigStrictness() {
1053
+ return toolConfigStrictness();
1054
+ },
1055
+
1056
+ set toolConfigStrictness($$value) {
1057
+ toolConfigStrictness($$value);
1058
+ $.flush();
1059
+ },
1060
+
860
1061
  get tools() {
861
1062
  return tools();
862
1063
  },
@@ -866,6 +1067,15 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
866
1067
  $.flush();
867
1068
  },
868
1069
 
1070
+ get toolRegistry() {
1071
+ return toolRegistry();
1072
+ },
1073
+
1074
+ set toolRegistry($$value) {
1075
+ toolRegistry($$value);
1076
+ $.flush();
1077
+ },
1078
+
869
1079
  get accessibility() {
870
1080
  return accessibility();
871
1081
  },
@@ -911,6 +1121,42 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
911
1121
  $.flush();
912
1122
  },
913
1123
 
1124
+ get frameworkErrorHook() {
1125
+ return frameworkErrorCallback();
1126
+ },
1127
+
1128
+ set frameworkErrorHook($$value) {
1129
+ frameworkErrorCallback($$value);
1130
+ $.flush();
1131
+ },
1132
+
1133
+ get onFrameworkError() {
1134
+ return onFrameworkError();
1135
+ },
1136
+
1137
+ set onFrameworkError($$value) {
1138
+ onFrameworkError($$value);
1139
+ $.flush();
1140
+ },
1141
+
1142
+ get onframeworkerror() {
1143
+ return onframeworkerror();
1144
+ },
1145
+
1146
+ set onframeworkerror($$value) {
1147
+ onframeworkerror($$value);
1148
+ $.flush();
1149
+ },
1150
+
1151
+ get errorRenderer() {
1152
+ return errorRenderer();
1153
+ },
1154
+
1155
+ set errorRenderer($$value) {
1156
+ errorRenderer($$value);
1157
+ $.flush();
1158
+ },
1159
+
914
1160
  get isolation() {
915
1161
  return isolation();
916
1162
  },
@@ -928,7 +1174,50 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
928
1174
 
929
1175
  var node = $.sibling(div, 2);
930
1176
 
931
- $.slot(node, $$props, 'default', {}, null);
1177
+ {
1178
+ var consequent = ($$anchor) => {
1179
+ var div_1 = root_1();
1180
+ var div_2 = $.child(div_1);
1181
+ var text = $.child(div_2, true);
1182
+
1183
+ $.reset(div_2);
1184
+
1185
+ var div_3 = $.sibling(div_2, 2);
1186
+ var text_1 = $.child(div_3, true);
1187
+
1188
+ $.reset(div_3);
1189
+
1190
+ var pre = $.sibling(div_3, 2);
1191
+ var text_2 = $.child(pre, true);
1192
+
1193
+ $.reset(pre);
1194
+ $.reset(div_1);
1195
+
1196
+ $.template_effect(
1197
+ ($0) => {
1198
+ $.set_text(text, $.get(frameworkErrorTitle));
1199
+ $.set_text(text_1, $.get(frameworkErrorModel).message);
1200
+ $.set_text(text_2, $0);
1201
+ },
1202
+ [() => $.get(frameworkErrorDetails).join("\n")]
1203
+ );
1204
+
1205
+ $.append($$anchor, div_1);
1206
+ };
1207
+
1208
+ var alternate = ($$anchor) => {
1209
+ var fragment_1 = $.comment();
1210
+ var node_1 = $.first_child(fragment_1);
1211
+
1212
+ $.slot(node_1, $$props, 'default', {}, null);
1213
+ $.append($$anchor, fragment_1);
1214
+ };
1215
+
1216
+ $.if(node, ($$render) => {
1217
+ if ($.get(frameworkErrorModel) && !$.get(frameworkErrorModel).recoverable) $$render(consequent); else $$render(alternate, -1);
1218
+ });
1219
+ }
1220
+
932
1221
  $.append($$anchor, fragment);
933
1222
 
934
1223
  return $.pop($$exports);
@@ -944,12 +1233,18 @@ __pieDefineSafely('pie-assessment-toolkit', $.create_custom_element(
944
1233
  view: { attribute: 'view', type: 'String' },
945
1234
  env: { attribute: 'env', type: 'Object' },
946
1235
  lazyInit: { attribute: 'lazy-init', type: 'Boolean' },
1236
+ toolConfigStrictness: { attribute: 'tool-config-strictness', type: 'String' },
947
1237
  tools: { attribute: 'tools', type: 'Object' },
1238
+ toolRegistry: { type: 'Object' },
948
1239
  accessibility: { attribute: 'accessibility', type: 'Object' },
949
1240
  player: { attribute: 'player', type: 'Object' },
950
1241
  playerType: { attribute: 'player-type', type: 'String' },
951
1242
  coordinator: { type: 'Object' },
952
1243
  createSectionController: { type: 'Object' },
1244
+ frameworkErrorHook: { type: 'Object' },
1245
+ onFrameworkError: { type: 'Object' },
1246
+ onframeworkerror: { type: 'Object' },
1247
+ errorRenderer: { type: 'Object' },
953
1248
  isolation: { attribute: 'isolation', type: 'String' }
954
1249
  },
955
1250
  ['default'],
package/dist/index.d.ts CHANGED
@@ -28,6 +28,8 @@ export { ToolRegistry } from "./services/ToolRegistry.js";
28
28
  export type { AssessmentToolContext, BaseToolContext, ElementToolContext, ItemToolContext, PassageToolContext, RubricToolContext, SectionToolContext, ToolContext, ToolLevel, } from "./services/tool-context.js";
29
29
  export { extractTextContent, hasChoiceInteraction, hasMathContent, hasReadableText, isAssessmentContext, isElementContext, isItemContext, isPassageContext, isRubricContext, isSectionContext, } from "./services/tool-context.js";
30
30
  export { DEFAULT_TOOL_PLACEMENT, DEFAULT_TOOL_ORDER, createPackagedToolRegistry, PACKAGED_TOOL_PLACEMENT, registerPackagedTools, } from "./services/createDefaultToolRegistry.js";
31
+ export type { CreateToolsConfigArgs } from "./services/create-tools-config.js";
32
+ export { createToolsConfig } from "./services/create-tools-config.js";
31
33
  export { DEFAULT_PERSONAL_NEEDS_PROFILE, createDefaultPersonalNeedsProfile, } from "./services/defaultPersonalNeedsProfile.js";
32
34
  export type { ToolComponentFactory, ToolComponentFactoryMap, ToolComponentOverrides, ToolTagMap, } from "./tools/tool-tag-map.js";
33
35
  export { createToolElement, DEFAULT_TOOL_TAG_MAP, resolveToolTag, toToolIdFromTag, } from "./tools/tool-tag-map.js";
@@ -44,14 +46,20 @@ export { ToolCoordinator, ZIndexLayer } from "./services/ToolCoordinator.js";
44
46
  export type { AnswerEliminatorToolConfig, ProviderLifecycleContext, SectionControllerContext, SectionControllerEvent, SectionControllerEventType, SectionItemEvent, SectionItemEventType, SectionControllerFactoryDefaults, SectionControllerHandle, SectionControllerKey, SectionScopedEvent, SectionScopedEventType, SectionSessionPersistenceConfig, SectionItemEventSubscriptionArgs, SectionScopedEventSubscriptionArgs, SectionEventSubscriptionArgs, SectionSessionPersistenceStrategy, SectionControllerRuntimeState, SectionControllerSessionState, SectionPersistenceFactoryDefaults, ToolConfig, ToolkitCoordinatorConfig, ToolkitCoordinatorHooks, ToolkitErrorContext, ToolkitInitStatus, ToolkitServiceBundle, ToolkitToolsConfig, TTSToolConfig, } from "./services/ToolkitCoordinator.js";
45
47
  export { ToolkitCoordinator } from "./services/ToolkitCoordinator.js";
46
48
  export type { CanonicalToolsConfig, ToolPlacementConfig, ToolPlacementLevel, ToolPolicyConfig, ToolProvidersConfig, } from "./services/tools-config-normalizer.js";
49
+ export type { FrameworkErrorKind, FrameworkErrorModel, FrameworkErrorSeverity, } from "./services/framework-error.js";
50
+ export { formatFrameworkErrorForConsole, frameworkErrorFromToolConfigDiagnostics, frameworkErrorFromUnknown, toFrameworkErrorModel, } from "./services/framework-error.js";
51
+ export type { ToolConfigDiagnostic, ToolConfigDiagnosticSeverity, ToolConfigStrictness, ToolConfigValidationOptions, ToolConfigValidationResult, } from "./services/tool-config-validation.js";
47
52
  export type { ToolbarButtonItem, ToolbarItem, ToolbarItemBase, ToolbarLinkItem, } from "./services/toolbar-items.js";
48
- export { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem, } from "./services/toolbar-items.js";
53
+ export { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem, isValidToolbarItemShape, } from "./services/toolbar-items.js";
49
54
  export { normalizeToolsConfig, normalizeToolAlias, normalizeToolList, parseToolList, resolveToolsForLevel, } from "./services/tools-config-normalizer.js";
55
+ export { frameworkErrorFromToolConfigValidation, normalizeAndValidateToolsConfig, } from "./services/tool-config-validation.js";
50
56
  export type { ParsedToolInstanceId, ToolScopeLevel, } from "./services/tool-instance-id.js";
51
57
  export { createScopedToolId, parseScopedToolId, toOverlayToolId, } from "./services/tool-instance-id.js";
52
58
  export type { TTSConfig } from "./services/TTSService.js";
53
59
  export { PlaybackState, TTSService } from "./services/TTSService.js";
54
60
  export { BrowserTTSProvider } from "./services/tts/browser-provider.js";
61
+ export type { TTSHostToolbarLayout, TTSLayoutMode, TTSRuntimeSettings, } from "./services/tts-runtime-config.js";
62
+ export { DEFAULT_TTS_SPEED_OPTIONS, formatTTSSpeedOptionsAsText, normalizeTTSLayoutMode, normalizeTTSSpeedOptions, parseTTSSpeedOptionsFromText, resolveTTSHostToolbarLayout, resolveTTSLayoutMode, resolveTTSRuntimeSettings, } from "./services/tts-runtime-config.js";
55
63
  export type { ITTSProvider, ITTSProviderImplementation, TTSSpeechSegment, TTSFeature, TTSProviderCapabilities, } from "@pie-players/pie-tts";
56
64
  export type { CreateLoadItemOptions, LoadItem, LoadItemOptions, } from "./item-loader.js";
57
65
  export { createFetchItemLoader, createLoadItem, ItemLoadError, } from "./item-loader.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,6 +25,7 @@ export { I18nService } from "./services/I18nService.js";
25
25
  export { ToolRegistry } from "./services/ToolRegistry.js";
26
26
  export { extractTextContent, hasChoiceInteraction, hasMathContent, hasReadableText, isAssessmentContext, isElementContext, isItemContext, isPassageContext, isRubricContext, isSectionContext, } from "./services/tool-context.js";
27
27
  export { DEFAULT_TOOL_PLACEMENT, DEFAULT_TOOL_ORDER, createPackagedToolRegistry, PACKAGED_TOOL_PLACEMENT, registerPackagedTools, } from "./services/createDefaultToolRegistry.js";
28
+ export { createToolsConfig } from "./services/create-tools-config.js";
28
29
  export { DEFAULT_PERSONAL_NEEDS_PROFILE, createDefaultPersonalNeedsProfile, } from "./services/defaultPersonalNeedsProfile.js";
29
30
  export { createToolElement, DEFAULT_TOOL_TAG_MAP, resolveToolTag, toToolIdFromTag, } from "./tools/tool-tag-map.js";
30
31
  export { PnpToolResolver } from "./services/PNPToolResolver.js";
@@ -36,11 +37,14 @@ export { ThemeProvider } from "./services/ThemeProvider.js";
36
37
  // Tool Coordinator
37
38
  export { ToolCoordinator, ZIndexLayer } from "./services/ToolCoordinator.js";
38
39
  export { ToolkitCoordinator } from "./services/ToolkitCoordinator.js";
39
- export { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem, } from "./services/toolbar-items.js";
40
+ export { formatFrameworkErrorForConsole, frameworkErrorFromToolConfigDiagnostics, frameworkErrorFromUnknown, toFrameworkErrorModel, } from "./services/framework-error.js";
41
+ export { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem, isValidToolbarItemShape, } from "./services/toolbar-items.js";
40
42
  export { normalizeToolsConfig, normalizeToolAlias, normalizeToolList, parseToolList, resolveToolsForLevel, } from "./services/tools-config-normalizer.js";
43
+ export { frameworkErrorFromToolConfigValidation, normalizeAndValidateToolsConfig, } from "./services/tool-config-validation.js";
41
44
  export { createScopedToolId, parseScopedToolId, toOverlayToolId, } from "./services/tool-instance-id.js";
42
45
  export { PlaybackState, TTSService } from "./services/TTSService.js";
43
46
  export { BrowserTTSProvider } from "./services/tts/browser-provider.js";
47
+ export { DEFAULT_TTS_SPEED_OPTIONS, formatTTSSpeedOptionsAsText, normalizeTTSLayoutMode, normalizeTTSSpeedOptions, parseTTSSpeedOptionsFromText, resolveTTSHostToolbarLayout, resolveTTSLayoutMode, resolveTTSRuntimeSettings, } from "./services/tts-runtime-config.js";
44
48
  export { createFetchItemLoader, createLoadItem, ItemLoadError, } from "./item-loader.js";
45
49
  export { createMemoryStorage, createTestAttemptSessionIdentifier, createNewTestAttemptSession, getBrowserLocalStorage, getOrCreateAnonymousDeviceId, getTestAttemptSessionStorageKey, loadTestAttemptSession, saveTestAttemptSession, setCurrentPosition, upsertItemSessionFromPieSessionChange, upsertVisitedItem, } from "./attempt/TestSession.js";
46
50
  export { createNewAssessmentSession, getAssessmentSessionStorageKey, loadAssessmentSession, saveAssessmentSession, setCurrentSectionPosition, upsertSectionSession, } from "./attempt/AssessmentSession.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -92,9 +92,10 @@ export declare class HighlightCoordinator implements HighlightCoordinatorApi {
92
92
  */
93
93
  highlightTTSWord(textNode: Text, startOffset: number, endOffset: number): void;
94
94
  /**
95
- * Highlight a sentence for TTS (temporary)
95
+ * Highlight the coarse TTS read-along band (temporary).
96
+ * Usually one Range per visual line; CSS layer `tts-sentence` for compatibility.
96
97
  *
97
- * @param ranges Array of ranges that make up the sentence
98
+ * @param ranges Line (or sentence) ranges to paint with `--pie-tts-line-highlight`
98
99
  */
99
100
  highlightTTSSentence(ranges: Range[]): void;
100
101
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HighlightCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/HighlightCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HighlightCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/HighlightCoordinator.ts"],"names":[],"mappings":"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"}
@@ -233,6 +233,7 @@ export class HighlightCoordinator {
233
233
  const vars = this.resolveAdaptiveTTSStyle(sourceEl);
234
234
  document.documentElement.style.setProperty("--pie-tts-word-highlight", vars.wordHighlight);
235
235
  document.documentElement.style.setProperty("--pie-tts-sentence-highlight", vars.sentenceHighlight);
236
+ document.documentElement.style.setProperty("--pie-tts-line-highlight", vars.sentenceHighlight);
236
237
  document.documentElement.style.setProperty("--pie-tts-word-underline", vars.wordUnderline);
237
238
  document.documentElement.style.setProperty("--pie-tts-word-shadow", vars.wordShadow);
238
239
  }
@@ -278,8 +279,9 @@ export class HighlightCoordinator {
278
279
  color: inherit;
279
280
  }
280
281
 
282
+ /* tts-sentence registry id: coarse read-along band (visual line boxes in layout) */
281
283
  ::highlight(tts-sentence) {
282
- background-color: var(--pie-tts-sentence-highlight, color-mix(in srgb, var(--pie-missing, #ffeb3b) 38%, transparent));
284
+ background-color: var(--pie-tts-line-highlight, var(--pie-tts-sentence-highlight, color-mix(in srgb, var(--pie-missing, #ffeb3b) 38%, transparent)));
283
285
  color: inherit;
284
286
  }
285
287
 
@@ -339,9 +341,10 @@ export class HighlightCoordinator {
339
341
  this.ttsWordHighlight.add(range);
340
342
  }
341
343
  /**
342
- * Highlight a sentence for TTS (temporary)
344
+ * Highlight the coarse TTS read-along band (temporary).
345
+ * Usually one Range per visual line; CSS layer `tts-sentence` for compatibility.
343
346
  *
344
- * @param ranges Array of ranges that make up the sentence
347
+ * @param ranges Line (or sentence) ranges to paint with `--pie-tts-line-highlight`
345
348
  */
346
349
  highlightTTSSentence(ranges) {
347
350
  if (!this.ttsSentenceHighlight)