@pie-players/pie-assessment-toolkit 0.3.73 → 0.3.75
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.
- package/README.md +469 -318
- package/dist/attempt/AssessmentSession.d.ts +1 -5
- package/dist/attempt/AssessmentSession.js +0 -29
- package/dist/attempt/TestSession.d.ts +1 -20
- package/dist/attempt/TestSession.js +8 -99
- package/dist/components/ItemScope.custom-element.d.ts +1 -0
- package/dist/components/ItemScope.custom-element.js +1 -0
- package/dist/components/ItemToolBar.custom-element.d.ts +1 -0
- package/dist/components/ItemToolBar.custom-element.js +1 -1
- package/dist/components/PieAssessmentToolkit.custom-element.d.ts +1 -0
- package/dist/components/PieAssessmentToolkit.custom-element.js +13 -13
- package/dist/components/SectionToolBar.custom-element.d.ts +1 -0
- package/dist/components/SectionToolBar.custom-element.js +1 -1
- package/dist/components/chunks/ItemToolBar-7tt7v2xp.js +4 -0
- package/dist/components/chunks/ItemToolBar-97hx60z4.js +2 -0
- package/dist/components/chunks/ItemToolBar-bxwyhr5p.js +2 -0
- package/dist/components/chunks/ItemToolBar-jx38w99s.js +2 -0
- package/dist/components/chunks/ItemToolBar-rd2bb4p6.js +40 -0
- package/dist/components/chunks/ItemToolBar-vdkyn9f3.js +2 -0
- package/dist/components/chunks/sre-engine-jd8cc08x.js +1 -0
- package/dist/components/item-scope-element.d.ts +2 -0
- package/dist/components/item-scope-element.js +2 -0
- package/dist/context/assessment-toolkit-context.d.ts +32 -6
- package/dist/index.d.ts +23 -48
- package/dist/index.js +12 -37
- package/dist/policy/core/PolicySource.d.ts +1 -1
- package/dist/policy/core/ToolPolicyEngine.d.ts +85 -34
- package/dist/policy/core/ToolPolicyEngine.js +148 -46
- package/dist/policy/core/compose-decision.d.ts +28 -7
- package/dist/policy/core/compose-decision.js +75 -54
- package/dist/policy/core/decision-types.d.ts +65 -34
- package/dist/policy/core/feature-decision.d.ts +16 -9
- package/dist/policy/core/feature-decision.js +14 -8
- package/dist/policy/core/pnp-policy-inputs.d.ts +24 -33
- package/dist/policy/core/pnp-policy-inputs.js +28 -56
- package/dist/policy/core/provenance.d.ts +9 -4
- package/dist/policy/core/provenance.js +1 -1
- package/dist/policy/engine.d.ts +7 -23
- package/dist/policy/engine.js +5 -20
- package/dist/policy/sources/PnpPolicySource.d.ts +44 -61
- package/dist/policy/sources/PnpPolicySource.js +117 -118
- package/dist/runtime/SectionControllerBinding.d.ts +279 -0
- package/dist/runtime/SectionControllerBinding.js +450 -0
- package/dist/runtime/SectionRuntimeEngine.d.ts +26 -289
- package/dist/runtime/SectionRuntimeEngine.js +30 -372
- package/dist/runtime/adapter/SectionEngineAdapter.d.ts +19 -80
- package/dist/runtime/adapter/SectionEngineAdapter.js +19 -92
- package/dist/runtime/adapter/dom-event-bridge.d.ts +15 -30
- package/dist/runtime/adapter/dom-event-bridge.js +17 -44
- package/dist/runtime/adapter/subscriber-fanout.d.ts +1 -2
- package/dist/runtime/adapter/subscriber-fanout.js +1 -2
- package/dist/runtime/catalog-context.d.ts +19 -0
- package/dist/runtime/catalog-context.js +28 -0
- package/dist/runtime/composition-emit-scheduler.d.ts +9 -15
- package/dist/runtime/composition-emit-scheduler.js +9 -15
- package/dist/runtime/content-language.d.ts +32 -0
- package/dist/runtime/content-language.js +46 -0
- package/dist/runtime/content-region.d.ts +17 -0
- package/dist/runtime/content-region.js +29 -0
- package/dist/runtime/content-registration.d.ts +13 -0
- package/dist/runtime/content-registration.js +25 -0
- package/dist/runtime/core/SectionEngineCore.d.ts +2 -2
- package/dist/runtime/core/SectionEngineCore.js +2 -2
- package/dist/runtime/core/cohort.d.ts +1 -1
- package/dist/runtime/core/cohort.js +1 -1
- package/dist/runtime/core/engine-input.d.ts +18 -30
- package/dist/runtime/core/engine-input.js +11 -12
- package/dist/runtime/core/engine-output.d.ts +16 -40
- package/dist/runtime/core/engine-output.js +9 -21
- package/dist/runtime/core/engine-readiness.d.ts +5 -37
- package/dist/runtime/core/engine-readiness.js +8 -41
- package/dist/runtime/core/engine-resolver.d.ts +46 -74
- package/dist/runtime/core/engine-resolver.js +18 -43
- package/dist/runtime/core/engine-state.d.ts +28 -36
- package/dist/runtime/core/engine-state.js +18 -21
- package/dist/runtime/core/engine-transition.d.ts +14 -19
- package/dist/runtime/core/engine-transition.js +71 -51
- package/dist/runtime/engine.d.ts +16 -19
- package/dist/runtime/engine.js +12 -19
- package/dist/runtime/page-warnings.d.ts +13 -0
- package/dist/runtime/page-warnings.js +22 -0
- package/dist/runtime/policy-input-forwarding.d.ts +25 -0
- package/dist/runtime/policy-input-forwarding.js +25 -0
- package/dist/runtime/registration-events.d.ts +14 -0
- package/dist/runtime/runtime-event-claim.d.ts +8 -0
- package/dist/runtime/runtime-event-claim.js +15 -0
- package/dist/runtime/shell-event-bridge.d.ts +45 -0
- package/dist/runtime/shell-event-bridge.js +127 -0
- package/dist/runtime/shell-registration.d.ts +73 -0
- package/dist/runtime/shell-registration.js +95 -0
- package/dist/runtime/shell-scope.d.ts +68 -0
- package/dist/runtime/shell-scope.js +188 -0
- package/dist/runtime/tool-host-contract.d.ts +28 -10
- package/dist/runtime/tool-host-contract.js +31 -10
- package/dist/runtime/unclaimed-registration-watch.d.ts +7 -0
- package/dist/runtime/unclaimed-registration-watch.js +23 -0
- package/dist/services/ElementToolStateStore.d.ts +14 -10
- package/dist/services/ElementToolStateStore.js +37 -13
- package/dist/services/HighlightCoordinator.d.ts +22 -28
- package/dist/services/HighlightCoordinator.js +431 -327
- package/dist/services/RangeSerializer.d.ts +10 -1
- package/dist/services/RangeSerializer.js +87 -14
- package/dist/services/TTSService.d.ts +130 -69
- package/dist/services/TTSService.js +713 -570
- package/dist/services/ToolCoordinator.d.ts +43 -66
- package/dist/services/ToolCoordinator.js +164 -208
- package/dist/services/ToolRegistry.d.ts +78 -54
- package/dist/services/ToolRegistry.js +107 -105
- package/dist/services/ToolkitCoordinator.d.ts +261 -175
- package/dist/services/ToolkitCoordinator.js +667 -433
- package/dist/services/audio-handoff.d.ts +6 -7
- package/dist/services/audio-handoff.js +20 -14
- package/dist/services/catalog-owner.d.ts +11 -1
- package/dist/services/catalog-owner.js +25 -0
- package/dist/services/create-tools-config.d.ts +2 -2
- package/dist/services/framework-error-bus.d.ts +3 -6
- package/dist/services/framework-error-bus.js +3 -6
- package/dist/services/framework-error.d.ts +30 -8
- package/dist/services/framework-error.js +9 -7
- package/dist/services/interfaces.d.ts +158 -129
- package/dist/services/section-controller-types.d.ts +15 -0
- package/dist/services/section-session-assignment.d.ts +21 -0
- package/dist/services/section-session-assignment.js +82 -0
- package/dist/services/spoken-audio-cards.d.ts +0 -2
- package/dist/services/spoken-audio-cards.js +1 -3
- package/dist/services/tool-config-defaults.d.ts +3 -3
- package/dist/services/tool-config-defaults.js +3 -3
- package/dist/services/tool-config-validation.d.ts +14 -4
- package/dist/services/tool-config-validation.js +63 -71
- package/dist/services/tool-context.d.ts +0 -8
- package/dist/services/tool-context.js +29 -25
- package/dist/services/tool-icons.d.ts +4 -3
- package/dist/services/tool-icons.js +4 -3
- package/dist/services/tool-instance-id.d.ts +0 -1
- package/dist/services/tool-instance-id.js +0 -6
- package/dist/services/tool-providers/TTSToolProvider.d.ts +41 -80
- package/dist/services/tool-providers/TTSToolProvider.js +81 -40
- package/dist/services/tool-providers/ToolProviderApi.d.ts +10 -4
- package/dist/services/tool-providers/ToolProviderRegistry.d.ts +32 -28
- package/dist/services/tool-providers/ToolProviderRegistry.js +121 -107
- package/dist/services/tool-providers/index.d.ts +0 -9
- package/dist/services/tool-providers/index.js +2 -4
- package/dist/services/tool-request.d.ts +27 -12
- package/dist/services/tool-request.js +24 -14
- package/dist/services/toolbar-decided-tools.d.ts +15 -0
- package/dist/services/toolbar-decided-tools.js +28 -0
- package/dist/services/tools-config-normalizer.d.ts +37 -23
- package/dist/services/tools-config-normalizer.js +2 -10
- package/dist/services/tts/browser-provider.d.ts +38 -2
- package/dist/services/tts/browser-provider.js +276 -140
- package/dist/services/tts/catalog-span-alignment.d.ts +2 -17
- package/dist/services/tts/catalog-span-alignment.js +17 -142
- package/dist/services/tts/flat-tree.d.ts +71 -0
- package/dist/services/tts/flat-tree.js +269 -0
- package/dist/services/tts/generated-speech/assemble-plan.d.ts +3 -1
- package/dist/services/tts/generated-speech/assemble-plan.js +3 -1
- package/dist/services/tts/generated-speech/dom/build-dom-plan.d.ts +2 -0
- package/dist/services/tts/generated-speech/dom/build-dom-plan.js +1 -1
- package/dist/services/tts/generated-speech/math-speech-cache.d.ts +3 -1
- package/dist/services/tts/generated-speech/math-speech-cache.js +5 -1
- package/dist/services/tts/generated-speech/types.d.ts +0 -12
- package/dist/services/tts/highlight-pipeline/boundary-normalizer.js +12 -62
- package/dist/services/tts/highlight-pipeline/create-highlight-plan.js +38 -5
- package/dist/services/tts/highlight-pipeline/normalize-speech-chunks.js +3 -6
- package/dist/services/tts/highlight-pipeline/prose-boundary-resolver.js +6 -4
- package/dist/services/tts/highlight-pipeline/readable-region.js +3 -2
- package/dist/services/tts/highlight-pipeline/types.d.ts +5 -0
- package/dist/services/tts/highlight-pipeline/visible-map-range.d.ts +12 -0
- package/dist/services/tts/highlight-pipeline/visible-map-range.js +73 -7
- package/dist/services/tts/math-alignment/index.d.ts +0 -5
- package/dist/services/tts/math-alignment/index.js +5 -25
- package/dist/services/tts/math-alignment/speech-tokenizer.d.ts +9 -1
- package/dist/services/tts/math-alignment/speech-tokenizer.js +38 -36
- package/dist/services/tts/math-alignment/types.d.ts +4 -2
- package/dist/services/tts/math-aware-text-processing.d.ts +5 -1
- package/dist/services/tts/math-aware-text-processing.js +74 -18
- package/dist/services/tts/math-control-names.d.ts +21 -0
- package/dist/services/tts/math-control-names.js +142 -0
- package/dist/services/tts/math-speech.d.ts +16 -1
- package/dist/services/tts/math-speech.js +55 -19
- package/dist/services/tts/provider-options.d.ts +41 -0
- package/dist/services/tts/provider-options.js +1 -0
- package/dist/services/tts/sre-engine.d.ts +7 -0
- package/dist/services/tts/sre-engine.js +11 -0
- package/dist/services/tts/sre-locales.d.ts +14 -0
- package/dist/services/tts/sre-locales.js +57 -0
- package/dist/services/tts/ssml/spoken-text.d.ts +2 -26
- package/dist/services/tts/ssml/spoken-text.js +29 -0
- package/dist/services/tts/start-failure.d.ts +11 -0
- package/dist/services/tts/start-failure.js +19 -0
- package/dist/services/tts/text-processing.d.ts +9 -1
- package/dist/services/tts/text-processing.js +46 -34
- package/dist/services/tts/text-segmentation.d.ts +7 -0
- package/dist/services/tts/text-segmentation.js +47 -0
- package/dist/services/tts-runtime-config.d.ts +44 -18
- package/dist/services/tts-runtime-config.js +22 -93
- package/dist/tools/content-capability-resolution.d.ts +7 -9
- package/dist/tools/content-capability-resolution.js +8 -45
- package/dist/tools/registration.d.ts +58 -0
- package/dist/tools/registration.js +54 -0
- package/dist/tools/registrations/toolbar-registration-helpers.js +2 -2
- package/dist/tools/tool-surface-host.d.ts +6 -10
- package/dist/tools/tool-surface-host.js +44 -42
- package/dist/tools/tool-tag-map.d.ts +5 -15
- package/dist/tools/tool-tag-map.js +6 -20
- package/dist/utils/structural-equality.d.ts +11 -0
- package/dist/utils/structural-equality.js +47 -0
- package/package.json +24 -59
- package/dist/attempt/adapters/activity-to-test-attempt-session.d.ts +0 -49
- package/dist/attempt/adapters/activity-to-test-attempt-session.js +0 -138
- package/dist/components/chunks/ItemToolBar-byq80z42.js +0 -40
- package/dist/components/chunks/ItemToolBar-d36g3aw4.js +0 -49
- package/dist/context/runtime-context-consumer.d.ts +0 -13
- package/dist/context/runtime-context-consumer.js +0 -51
- package/dist/item-loader.d.ts +0 -44
- package/dist/item-loader.js +0 -61
- package/dist/policy/core/engine-context.d.ts +0 -29
- package/dist/policy/core/engine-context.js +0 -27
- package/dist/policy/core/policy-source-tag.d.ts +0 -31
- package/dist/policy/core/policy-source-tag.js +0 -28
- package/dist/policy/internal.d.ts +0 -25
- package/dist/policy/internal.js +0 -25
- package/dist/runtime/adapter/coordinator-bridge.d.ts +0 -92
- package/dist/runtime/adapter/coordinator-bridge.js +0 -126
- package/dist/runtime/adapter/framework-error-bridge.d.ts +0 -36
- package/dist/runtime/adapter/framework-error-bridge.js +0 -46
- package/dist/runtime/adapter/instrumentation-bridge.d.ts +0 -31
- package/dist/runtime/adapter/instrumentation-bridge.js +0 -38
- package/dist/runtime/core/engine-stage-derivation.d.ts +0 -18
- package/dist/runtime/core/engine-stage-derivation.js +0 -29
- package/dist/runtime/engine-context.d.ts +0 -39
- package/dist/runtime/engine-context.js +0 -31
- package/dist/runtime/internal.d.ts +0 -43
- package/dist/runtime/internal.js +0 -45
- package/dist/runtime/section-runtime-engine-host-context.d.ts +0 -80
- package/dist/runtime/section-runtime-engine-host-context.js +0 -95
- package/dist/runtime/stage-emit-gate.d.ts +0 -92
- package/dist/runtime/stage-emit-gate.js +0 -82
- package/dist/services/I18nService.d.ts +0 -47
- package/dist/services/I18nService.js +0 -84
- package/dist/services/ThemeProvider.d.ts +0 -95
- package/dist/services/ThemeProvider.js +0 -334
- package/dist/services/ToolConfigResolver.d.ts +0 -161
- package/dist/services/ToolConfigResolver.js +0 -229
- package/dist/services/catalog-media.d.ts +0 -56
- package/dist/services/catalog-media.js +0 -190
- package/dist/services/createDefaultToolRegistry.d.ts +0 -53
- package/dist/services/createDefaultToolRegistry.js +0 -45
- package/dist/services/defaultPersonalNeedsProfile.d.ts +0 -21
- package/dist/services/defaultPersonalNeedsProfile.js +0 -26
- package/dist/services/pnp-standard-features.d.ts +0 -238
- package/dist/services/pnp-standard-features.js +0 -338
- package/dist/services/tool-providers/CortexToolProvider.d.ts +0 -13
- package/dist/services/tool-providers/CortexToolProvider.js +0 -32
- package/dist/services/tool-providers/DesmosToolProvider.d.ts +0 -14
- package/dist/services/tool-providers/DesmosToolProvider.js +0 -32
- package/dist/services/tool-providers/GeoGebraToolProvider.d.ts +0 -16
- package/dist/services/tool-providers/GeoGebraToolProvider.js +0 -32
- package/dist/services/tool-providers/LazyCalculatorToolProvider.d.ts +0 -35
- package/dist/services/tool-providers/LazyCalculatorToolProvider.js +0 -95
- package/dist/services/tts/visual-line-ranges.d.ts +0 -18
- package/dist/services/tts/visual-line-ranges.js +0 -226
- package/dist/tools/client.d.ts +0 -12
- package/dist/tools/client.js +0 -14
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.js +0 -10
- package/dist/tools/internal.d.ts +0 -43
- package/dist/tools/internal.js +0 -41
- package/dist/tools/response-discovery.d.ts +0 -61
- package/dist/tools/response-discovery.js +0 -113
- package/dist/tools/types.d.ts +0 -337
- package/dist/tools/types.js +0 -12
- package/dist/tools/variant-resolver.d.ts +0 -41
- package/dist/tools/variant-resolver.js +0 -207
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine — pure core
|
|
2
|
+
* Section runtime engine — pure core.
|
|
3
3
|
*
|
|
4
4
|
* `SectionEngineCore` is a thin object oriented wrapper over the pure
|
|
5
5
|
* `transition()` function. It owns the current `SectionEngineState`,
|
|
6
6
|
* applies inputs serially, and fans out the resulting
|
|
7
7
|
* `SectionEngineOutput[]` to subscribers. There is no DOM, Svelte,
|
|
8
8
|
* coordinator, or timing dependency in this module — all I/O lives in
|
|
9
|
-
* the adapter layer
|
|
9
|
+
* the adapter layer.
|
|
10
10
|
*
|
|
11
11
|
* Lifetime model:
|
|
12
12
|
* - One instance per cohort logical lifetime. Cohort changes happen
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine — pure core
|
|
2
|
+
* Section runtime engine — pure core.
|
|
3
3
|
*
|
|
4
4
|
* `SectionEngineCore` is a thin object oriented wrapper over the pure
|
|
5
5
|
* `transition()` function. It owns the current `SectionEngineState`,
|
|
6
6
|
* applies inputs serially, and fans out the resulting
|
|
7
7
|
* `SectionEngineOutput[]` to subscribers. There is no DOM, Svelte,
|
|
8
8
|
* coordinator, or timing dependency in this module — all I/O lives in
|
|
9
|
-
* the adapter layer
|
|
9
|
+
* the adapter layer.
|
|
10
10
|
*
|
|
11
11
|
* Lifetime model:
|
|
12
12
|
* - One instance per cohort logical lifetime. Cohort changes happen
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine inputs
|
|
2
|
+
* Section runtime engine inputs.
|
|
3
3
|
*
|
|
4
|
-
* Inputs are the
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* without any DOM, Svelte, or coordinator wiring.
|
|
4
|
+
* Inputs are the closed union of events the adapter feeds into the pure
|
|
5
|
+
* transition function (`engine-transition.ts`). Every field is plain data, so
|
|
6
|
+
* the transition is testable without DOM, Svelte, or coordinator wiring.
|
|
8
7
|
*
|
|
9
8
|
* Adapter→core boundary contract:
|
|
10
|
-
* - The adapter never mutates engine state directly. It
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
*
|
|
14
|
-
* - Inputs carry
|
|
15
|
-
*
|
|
16
|
-
*
|
|
9
|
+
* - The adapter never mutates engine state directly. It constructs an input
|
|
10
|
+
* and calls `core.dispatch(input)`.
|
|
11
|
+
* - The transition switch is exhaustive over `kind`: a new input kind that
|
|
12
|
+
* it does not handle fails to type-check.
|
|
13
|
+
* - Inputs carry no live host references. Coordinator and controller handles
|
|
14
|
+
* live in the adapter; the core sees only readiness signals derived from
|
|
15
|
+
* them.
|
|
17
16
|
*/
|
|
18
17
|
import type { CohortKey } from "./cohort.js";
|
|
19
18
|
import type { EffectiveRuntime, RuntimeInputs } from "./engine-resolver.js";
|
|
20
19
|
import type { EngineReadinessSignals } from "./engine-readiness.js";
|
|
21
|
-
import type { FrameworkErrorModel } from "../../services/framework-error.js";
|
|
22
20
|
/**
|
|
23
21
|
* `initialize` is the first transition out of `idle`. It carries the
|
|
24
22
|
* cohort key and the resolved runtime/tools snapshot for the cohort.
|
|
@@ -60,7 +58,8 @@ export type EngineInputCohortChange = {
|
|
|
60
58
|
* the controller for the current cohort. Advances the phase from
|
|
61
59
|
* `booting-section` → `engine-ready` (assuming `composed` is already
|
|
62
60
|
* implied by `phase >= booting-section`, which the FSM treats as
|
|
63
|
-
* monotonic)
|
|
61
|
+
* monotonic), and on to `interactive` when the last readiness snapshot
|
|
62
|
+
* already satisfies it.
|
|
64
63
|
*/
|
|
65
64
|
export type EngineInputSectionControllerResolved = {
|
|
66
65
|
kind: "section-controller-resolved";
|
|
@@ -68,7 +67,8 @@ export type EngineInputSectionControllerResolved = {
|
|
|
68
67
|
/**
|
|
69
68
|
* `update-readiness-signals` carries the latest readiness snapshot
|
|
70
69
|
* from the host. The transition uses it to gate the move into
|
|
71
|
-
* `interactive
|
|
70
|
+
* `interactive`, to end the chain as `failed` when `runtimeError` is set
|
|
71
|
+
* before `interactive`, and to decide whether to emit `loading-complete`.
|
|
72
72
|
*
|
|
73
73
|
* The full signal set is sent every time so the transition does not
|
|
74
74
|
* have to reason about partial overlays.
|
|
@@ -76,7 +76,6 @@ export type EngineInputSectionControllerResolved = {
|
|
|
76
76
|
export type EngineInputUpdateReadinessSignals = {
|
|
77
77
|
kind: "update-readiness-signals";
|
|
78
78
|
signals: EngineReadinessSignals;
|
|
79
|
-
loadedCount: number;
|
|
80
79
|
itemCount: number;
|
|
81
80
|
/**
|
|
82
81
|
* Strict-mode gate. When `"strict"`, `interactive` only fires
|
|
@@ -86,26 +85,15 @@ export type EngineInputUpdateReadinessSignals = {
|
|
|
86
85
|
*/
|
|
87
86
|
mode: "progressive" | "strict";
|
|
88
87
|
};
|
|
89
|
-
/**
|
|
90
|
-
* `framework-error` is sent for every framework-error report (M3
|
|
91
|
-
* canonical channel). The transition records the latest error in
|
|
92
|
-
* state and emits a `framework-error` output so the adapter can fan
|
|
93
|
-
* out to subscribers and the DOM event.
|
|
94
|
-
*/
|
|
95
|
-
export type EngineInputFrameworkError = {
|
|
96
|
-
kind: "framework-error";
|
|
97
|
-
error: FrameworkErrorModel;
|
|
98
|
-
};
|
|
99
88
|
/**
|
|
100
89
|
* `dispose` tears the engine down. Emits `disposed` for the current
|
|
101
|
-
* cohort (if any) and moves to the terminal `disposed` phase.
|
|
102
|
-
* dispose
|
|
103
|
-
* a warning and is a no-op).
|
|
90
|
+
* cohort (if any) and moves to the terminal `disposed` phase. Every input
|
|
91
|
+
* after dispose is a no-op.
|
|
104
92
|
*/
|
|
105
93
|
export type EngineInputDispose = {
|
|
106
94
|
kind: "dispose";
|
|
107
95
|
};
|
|
108
|
-
export type SectionEngineInput = EngineInputInitialize | EngineInputUpdateRuntime | EngineInputCohortChange | EngineInputSectionControllerResolved | EngineInputUpdateReadinessSignals |
|
|
96
|
+
export type SectionEngineInput = EngineInputInitialize | EngineInputUpdateRuntime | EngineInputCohortChange | EngineInputSectionControllerResolved | EngineInputUpdateReadinessSignals | EngineInputDispose;
|
|
109
97
|
/**
|
|
110
98
|
* Convenience re-export so the adapter can import `RuntimeInputs`
|
|
111
99
|
* from a single place when it constructs `initialize` inputs.
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine inputs
|
|
2
|
+
* Section runtime engine inputs.
|
|
3
3
|
*
|
|
4
|
-
* Inputs are the
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* without any DOM, Svelte, or coordinator wiring.
|
|
4
|
+
* Inputs are the closed union of events the adapter feeds into the pure
|
|
5
|
+
* transition function (`engine-transition.ts`). Every field is plain data, so
|
|
6
|
+
* the transition is testable without DOM, Svelte, or coordinator wiring.
|
|
8
7
|
*
|
|
9
8
|
* Adapter→core boundary contract:
|
|
10
|
-
* - The adapter never mutates engine state directly. It
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
*
|
|
14
|
-
* - Inputs carry
|
|
15
|
-
*
|
|
16
|
-
*
|
|
9
|
+
* - The adapter never mutates engine state directly. It constructs an input
|
|
10
|
+
* and calls `core.dispatch(input)`.
|
|
11
|
+
* - The transition switch is exhaustive over `kind`: a new input kind that
|
|
12
|
+
* it does not handle fails to type-check.
|
|
13
|
+
* - Inputs carry no live host references. Coordinator and controller handles
|
|
14
|
+
* live in the adapter; the core sees only readiness signals derived from
|
|
15
|
+
* them.
|
|
17
16
|
*/
|
|
18
17
|
export {};
|
|
@@ -1,36 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine outputs
|
|
2
|
+
* Section runtime engine outputs.
|
|
3
3
|
*
|
|
4
|
-
* Outputs are the closed
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Outputs are the closed union of effects the transition function returns. The
|
|
5
|
+
* adapter walks each batch in order and hands it to the DOM-event bridge and the
|
|
6
|
+
* subscriber fan-out. Outputs carry only plain data, so the transition table is
|
|
7
|
+
* testable without DOM or coordinator wiring.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* is an output, **not** an FSM phase. The transition emits it from
|
|
14
|
-
* the `interactive` phase when the readiness signals indicate every
|
|
15
|
-
* item has finished loading. This mirrors today's
|
|
16
|
-
* `pie-loading-complete` DOM event semantics.
|
|
17
|
-
*
|
|
18
|
-
* Readiness alias output kinds (`readiness-change`,
|
|
19
|
-
* `interaction-ready`, `ready`) were removed in the broad
|
|
20
|
-
* architecture review compat sweep along with their DOM-event bridge
|
|
21
|
-
* event bridge. Stage and readiness changes now flow
|
|
22
|
-
* through `stage-change` (with `EngineReadinessDetail` available via
|
|
23
|
-
* `SectionEngineCore.getState()` / kernel `selectReadiness()`); the
|
|
24
|
-
* "all items loaded" signal flows through `loading-complete` only.
|
|
9
|
+
* Framework errors are not an output. The toolkit that owns the coordinator
|
|
10
|
+
* publishes each one once, as its `framework-error` event and `onFrameworkError`
|
|
11
|
+
* hook; the engine sees an error only through the readiness signals, and a
|
|
12
|
+
* fatal one before `interactive` ends the cohort's stage chain as `failed`.
|
|
25
13
|
*/
|
|
26
14
|
import type { Stage, StageStatus } from "@pie-players/pie-players-shared/pie";
|
|
27
15
|
import type { CohortKey } from "./cohort.js";
|
|
28
|
-
import type { FrameworkErrorModel } from "../../services/framework-error.js";
|
|
29
16
|
/**
|
|
30
|
-
* Stage transition. The adapter dispatches
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* skipped, or recorded as failed.
|
|
17
|
+
* Stage transition. The adapter dispatches it as `pie-stage-change` with the
|
|
18
|
+
* canonical detail. The status says whether the stage was entered, skipped, or
|
|
19
|
+
* recorded as failed.
|
|
34
20
|
*/
|
|
35
21
|
export type EngineOutputStageChange = {
|
|
36
22
|
kind: "stage-change";
|
|
@@ -39,23 +25,13 @@ export type EngineOutputStageChange = {
|
|
|
39
25
|
cohort: CohortKey | null;
|
|
40
26
|
};
|
|
41
27
|
/**
|
|
42
|
-
* Canonical `pie-loading-complete
|
|
43
|
-
*
|
|
44
|
-
*
|
|
28
|
+
* Canonical `pie-loading-complete`. One-shot per cohort, emitted when the
|
|
29
|
+
* readiness signals satisfy `allLoadingComplete`, so every one of `itemCount`
|
|
30
|
+
* items has loaded.
|
|
45
31
|
*/
|
|
46
32
|
export type EngineOutputLoadingComplete = {
|
|
47
33
|
kind: "loading-complete";
|
|
48
34
|
cohort: CohortKey;
|
|
49
35
|
itemCount: number;
|
|
50
|
-
loadedCount: number;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Framework error fan-out. Mirrors the M3 `framework-error` DOM event
|
|
54
|
-
* and the `subscribeFrameworkErrors` listener channel. Emitted on
|
|
55
|
-
* every `framework-error` input.
|
|
56
|
-
*/
|
|
57
|
-
export type EngineOutputFrameworkError = {
|
|
58
|
-
kind: "framework-error";
|
|
59
|
-
error: FrameworkErrorModel;
|
|
60
36
|
};
|
|
61
|
-
export type SectionEngineOutput = EngineOutputStageChange | EngineOutputLoadingComplete
|
|
37
|
+
export type SectionEngineOutput = EngineOutputStageChange | EngineOutputLoadingComplete;
|
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine outputs
|
|
2
|
+
* Section runtime engine outputs.
|
|
3
3
|
*
|
|
4
|
-
* Outputs are the closed
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Outputs are the closed union of effects the transition function returns. The
|
|
5
|
+
* adapter walks each batch in order and hands it to the DOM-event bridge and the
|
|
6
|
+
* subscriber fan-out. Outputs carry only plain data, so the transition table is
|
|
7
|
+
* testable without DOM or coordinator wiring.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* is an output, **not** an FSM phase. The transition emits it from
|
|
14
|
-
* the `interactive` phase when the readiness signals indicate every
|
|
15
|
-
* item has finished loading. This mirrors today's
|
|
16
|
-
* `pie-loading-complete` DOM event semantics.
|
|
17
|
-
*
|
|
18
|
-
* Readiness alias output kinds (`readiness-change`,
|
|
19
|
-
* `interaction-ready`, `ready`) were removed in the broad
|
|
20
|
-
* architecture review compat sweep along with their DOM-event bridge
|
|
21
|
-
* event bridge. Stage and readiness changes now flow
|
|
22
|
-
* through `stage-change` (with `EngineReadinessDetail` available via
|
|
23
|
-
* `SectionEngineCore.getState()` / kernel `selectReadiness()`); the
|
|
24
|
-
* "all items loaded" signal flows through `loading-complete` only.
|
|
9
|
+
* Framework errors are not an output. The toolkit that owns the coordinator
|
|
10
|
+
* publishes each one once, as its `framework-error` event and `onFrameworkError`
|
|
11
|
+
* hook; the engine sees an error only through the readiness signals, and a
|
|
12
|
+
* fatal one before `interactive` ends the cohort's stage chain as `failed`.
|
|
25
13
|
*/
|
|
26
14
|
export {};
|
|
@@ -1,48 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Readiness
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* As of M7 PR 7 the previous duplicates in
|
|
6
|
-
* `packages/section-player/src/components/shared/section-player-readiness.ts`
|
|
7
|
-
* have been deleted; section-player now consumes these helpers via
|
|
8
|
-
* `@pie-players/pie-assessment-toolkit/runtime/internal`.
|
|
9
|
-
*
|
|
10
|
-
* Type duplication note: the public DOM-event detail aliases
|
|
11
|
-
* (`SectionPlayerReadinessChangeDetail` /
|
|
12
|
-
* `SectionPlayerReadinessPhase`) still live in section-player's
|
|
13
|
-
* `contracts/public-events.ts` because that file is part of section-
|
|
14
|
-
* player's published custom-element contract. The toolkit core defines
|
|
15
|
-
* `EngineReadinessPhase` independently so it has zero section-player
|
|
16
|
-
* imports. The two definitions must stay structurally identical;
|
|
17
|
-
* that invariant is covered by the readiness assertions in this
|
|
18
|
-
* package's tests, which mirror the section-player suite.
|
|
2
|
+
* Readiness gating for the section runtime engine: which of the host's
|
|
3
|
+
* readiness signals open `interactive` and `loading-complete` under the
|
|
4
|
+
* section's readiness mode.
|
|
19
5
|
*/
|
|
20
|
-
/**
|
|
21
|
-
* Coarse readiness phase label, derived from the four readiness
|
|
22
|
-
* signals. Surfaced via the kernel's `selectReadiness()` /
|
|
23
|
-
* `getSnapshot().readiness` selectors; M6 stages own the stage-level
|
|
24
|
-
* transitions on `pie-stage-change` and use this phase as a
|
|
25
|
-
* convenience label only. The `readiness-change` DOM
|
|
26
|
-
* event that used to surface this directly was removed in the broad
|
|
27
|
-
* architecture review compat sweep alongside its
|
|
28
|
-
* event bridge.
|
|
29
|
-
*/
|
|
30
|
-
export type EngineReadinessPhase = "bootstrapping" | "interaction-ready" | "loading" | "ready" | "error";
|
|
31
6
|
export type EngineReadinessSignals = {
|
|
32
7
|
sectionReady: boolean;
|
|
33
8
|
interactionReady: boolean;
|
|
34
9
|
allLoadingComplete: boolean;
|
|
35
10
|
runtimeError: boolean;
|
|
36
11
|
};
|
|
37
|
-
export type
|
|
38
|
-
phase: EngineReadinessPhase;
|
|
12
|
+
export type EngineReadinessGates = {
|
|
39
13
|
interactionReady: boolean;
|
|
40
14
|
allLoadingComplete: boolean;
|
|
41
|
-
reason?: string;
|
|
42
15
|
};
|
|
43
|
-
export declare function
|
|
44
|
-
export declare function createReadinessDetail(args: {
|
|
45
|
-
mode: "progressive" | "strict";
|
|
46
|
-
signals: EngineReadinessSignals;
|
|
47
|
-
reason?: string;
|
|
48
|
-
}): EngineReadinessDetail;
|
|
16
|
+
export declare function resolveReadinessGates(mode: "progressive" | "strict", signals: EngineReadinessSignals): EngineReadinessGates;
|
|
@@ -1,46 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Readiness
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* As of M7 PR 7 the previous duplicates in
|
|
6
|
-
* `packages/section-player/src/components/shared/section-player-readiness.ts`
|
|
7
|
-
* have been deleted; section-player now consumes these helpers via
|
|
8
|
-
* `@pie-players/pie-assessment-toolkit/runtime/internal`.
|
|
9
|
-
*
|
|
10
|
-
* Type duplication note: the public DOM-event detail aliases
|
|
11
|
-
* (`SectionPlayerReadinessChangeDetail` /
|
|
12
|
-
* `SectionPlayerReadinessPhase`) still live in section-player's
|
|
13
|
-
* `contracts/public-events.ts` because that file is part of section-
|
|
14
|
-
* player's published custom-element contract. The toolkit core defines
|
|
15
|
-
* `EngineReadinessPhase` independently so it has zero section-player
|
|
16
|
-
* imports. The two definitions must stay structurally identical;
|
|
17
|
-
* that invariant is covered by the readiness assertions in this
|
|
18
|
-
* package's tests, which mirror the section-player suite.
|
|
2
|
+
* Readiness gating for the section runtime engine: which of the host's
|
|
3
|
+
* readiness signals open `interactive` and `loading-complete` under the
|
|
4
|
+
* section's readiness mode.
|
|
19
5
|
*/
|
|
20
|
-
export function
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (signals.allLoadingComplete)
|
|
24
|
-
return "ready";
|
|
25
|
-
if (signals.interactionReady)
|
|
26
|
-
return "interaction-ready";
|
|
27
|
-
if (signals.sectionReady)
|
|
28
|
-
return "loading";
|
|
29
|
-
return "bootstrapping";
|
|
30
|
-
}
|
|
31
|
-
export function createReadinessDetail(args) {
|
|
32
|
-
// Final ready must always be gated by section lifecycle and complete loading.
|
|
33
|
-
const finalReady = args.signals.sectionReady && args.signals.allLoadingComplete;
|
|
34
|
-
const interactionReady = args.mode === "strict" ? finalReady : args.signals.interactionReady;
|
|
35
|
-
const phase = resolveReadinessPhase({
|
|
36
|
-
...args.signals,
|
|
37
|
-
allLoadingComplete: finalReady,
|
|
38
|
-
interactionReady,
|
|
39
|
-
});
|
|
6
|
+
export function resolveReadinessGates(mode, signals) {
|
|
7
|
+
// Final ready is always gated by the section lifecycle and complete loading.
|
|
8
|
+
const allLoadingComplete = signals.sectionReady && signals.allLoadingComplete;
|
|
40
9
|
return {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
allLoadingComplete: finalReady,
|
|
44
|
-
reason: args.reason,
|
|
10
|
+
interactionReady: mode === "strict" ? allLoadingComplete : signals.interactionReady,
|
|
11
|
+
allLoadingComplete,
|
|
45
12
|
};
|
|
46
13
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Section runtime engine resolver
|
|
2
|
+
* Section runtime engine resolver.
|
|
3
3
|
*
|
|
4
4
|
* Canonical home of `resolveRuntime`, `resolveToolsConfig`, and their
|
|
5
|
-
* supporting helpers/types
|
|
6
|
-
*
|
|
7
|
-
* have been deleted; section-player now consumes these helpers via
|
|
8
|
-
* `@pie-players/pie-assessment-toolkit/runtime/internal`.
|
|
5
|
+
* supporting helpers/types; section-player consumes them through
|
|
6
|
+
* `@pie-players/pie-assessment-toolkit/runtime/engine`.
|
|
9
7
|
*
|
|
10
8
|
* What is NOT absorbed in this module:
|
|
11
9
|
* - `resolvePlayerRuntime` stays in section-player because it depends on
|
|
@@ -18,22 +16,26 @@
|
|
|
18
16
|
* `packages/section-player/src/components/shared/section-player-host-runtime.ts`)
|
|
19
17
|
* hands its local implementation in.
|
|
20
18
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* Each input has one tier. `assessmentId`, the tools and player config and the
|
|
20
|
+
* `on*` callbacks arrive on `runtime`. The primitive inputs (`nds-icons`,
|
|
21
|
+
* `locale`, `tool-config-strictness`) are element attributes; the resolver takes
|
|
22
|
+
* `toolConfigStrictness` beside `runtime`.
|
|
23
23
|
*/
|
|
24
24
|
import type { LoaderConfig } from "@pie-players/pie-players-shared/loader-config";
|
|
25
25
|
import type { LoadingCompleteDetail, StageChangeDetail } from "@pie-players/pie-players-shared/pie";
|
|
26
26
|
import type { FrameworkErrorModel } from "../../services/framework-error.js";
|
|
27
27
|
import type { ToolConfigStrictness } from "../../services/tool-config-validation.js";
|
|
28
|
-
export declare const DEFAULT_ASSESSMENT_ID = "section-demo-direct";
|
|
29
28
|
export declare const DEFAULT_PLAYER_TYPE = "iife";
|
|
30
|
-
export declare const DEFAULT_LAZY_INIT =
|
|
29
|
+
export declare const DEFAULT_LAZY_INIT = false;
|
|
31
30
|
export declare const DEFAULT_ISOLATION = "inherit";
|
|
32
31
|
export declare const DEFAULT_ENV: Record<string, unknown>;
|
|
33
32
|
export type PlayerOverrides = {
|
|
33
|
+
/** The host has already loaded the item bundles; the player loads none. */
|
|
34
|
+
hosted?: boolean;
|
|
34
35
|
loaderConfig?: LoaderConfig;
|
|
35
36
|
loaderOptions?: Record<string, unknown>;
|
|
36
|
-
|
|
37
|
+
/** The item player's `backend` config, passed through unread. */
|
|
38
|
+
backend?: Record<string, unknown> | null;
|
|
37
39
|
};
|
|
38
40
|
export type FrameworkErrorHandler = (model: FrameworkErrorModel) => void;
|
|
39
41
|
export type StageChangeHandler = (detail: StageChangeDetail) => void;
|
|
@@ -61,48 +63,34 @@ export type RuntimeConfig = {
|
|
|
61
63
|
isolation?: string;
|
|
62
64
|
env?: Record<string, unknown>;
|
|
63
65
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* markup (the default). Purely visual — no engine effect.
|
|
69
|
-
*/
|
|
70
|
-
ndsIcons?: boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Interface locale: a BCP-47 tag naming the language the player renders its own
|
|
73
|
-
* UI in. Purely presentational — no engine effect.
|
|
74
|
-
*
|
|
75
|
-
* Distinct from content language, which describes the authored item and
|
|
76
|
-
* travels on `env`. QTI 3's implementation guide states the independence
|
|
77
|
-
* directly: a candidate may choose an interface language which may or may not
|
|
78
|
-
* also be the language of the content.
|
|
66
|
+
* Content language: a BCP-47 tag naming the language the authored content is
|
|
67
|
+
* written in, which read-aloud speaks it in and catalog lookups select
|
|
68
|
+
* alternates by. A `lang` in the content's markup wins over it. Purely
|
|
69
|
+
* presentational — no engine effect.
|
|
79
70
|
*
|
|
80
|
-
* Unset
|
|
71
|
+
* Unset reads as `en-US` wherever the markup names no language.
|
|
81
72
|
*/
|
|
82
|
-
|
|
83
|
-
toolConfigStrictness?: ToolConfigStrictness;
|
|
73
|
+
contentLanguage?: string;
|
|
84
74
|
onFrameworkError?: FrameworkErrorHandler;
|
|
75
|
+
/** Called with each `pie-stage-change` detail. */
|
|
85
76
|
onStageChange?: StageChangeHandler;
|
|
77
|
+
/** Called with each `pie-loading-complete` detail. */
|
|
86
78
|
onLoadingComplete?: LoadingCompleteHandler;
|
|
87
79
|
};
|
|
88
80
|
export type RuntimeInputs = {
|
|
89
|
-
assessmentId?: string;
|
|
90
|
-
toolConfigStrictness?: ToolConfigStrictness;
|
|
91
|
-
onFrameworkError?: FrameworkErrorHandler;
|
|
92
|
-
onStageChange?: StageChangeHandler;
|
|
93
|
-
onLoadingComplete?: LoadingCompleteHandler;
|
|
94
81
|
runtime: RuntimeConfig | null;
|
|
82
|
+
toolConfigStrictness?: ToolConfigStrictness;
|
|
95
83
|
};
|
|
96
84
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* this so every entry point converges on the same handler.
|
|
85
|
+
* The id a section runs under: the host's `section-id`, else the section's own
|
|
86
|
+
* `identifier`, else one named after the assessment. The toolkit keys the
|
|
87
|
+
* section's controller by it, and the layout kernel its stage cohort.
|
|
101
88
|
*/
|
|
102
|
-
export declare function
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
89
|
+
export declare function resolveSectionId(args: {
|
|
90
|
+
sectionId?: string | null;
|
|
91
|
+
section?: unknown;
|
|
92
|
+
assessmentId?: string | null;
|
|
93
|
+
}): string;
|
|
106
94
|
export declare function resolveToolsConfig(args: {
|
|
107
95
|
runtime: RuntimeConfig | null;
|
|
108
96
|
}): {
|
|
@@ -111,20 +99,18 @@ export declare function resolveToolsConfig(args: {
|
|
|
111
99
|
};
|
|
112
100
|
};
|
|
113
101
|
export declare function resolveRuntime(args: {
|
|
114
|
-
assessmentId: string;
|
|
115
102
|
runtime: RuntimeConfig | null;
|
|
116
103
|
effectiveToolsConfig: unknown;
|
|
117
104
|
toolConfigStrictness?: ToolConfigStrictness;
|
|
118
|
-
onFrameworkError?: FrameworkErrorHandler;
|
|
119
|
-
onStageChange?: StageChangeHandler;
|
|
120
|
-
onLoadingComplete?: LoadingCompleteHandler;
|
|
121
105
|
}): {
|
|
122
|
-
assessmentId: string | undefined;
|
|
123
106
|
playerType: string;
|
|
124
107
|
player: {
|
|
125
|
-
|
|
108
|
+
/** The host has already loaded the item bundles; the player loads none. */
|
|
109
|
+
hosted?: boolean;
|
|
126
110
|
loaderConfig?: LoaderConfig;
|
|
127
111
|
loaderOptions?: Record<string, unknown>;
|
|
112
|
+
/** The item player's `backend` config, passed through unread. */
|
|
113
|
+
backend?: Record<string, unknown> | null;
|
|
128
114
|
} | null;
|
|
129
115
|
lazyInit: boolean;
|
|
130
116
|
accessibility: Record<string, unknown> | null;
|
|
@@ -132,39 +118,25 @@ export declare function resolveRuntime(args: {
|
|
|
132
118
|
createSectionController: unknown;
|
|
133
119
|
isolation: string;
|
|
134
120
|
env: Record<string, unknown>;
|
|
135
|
-
toolConfigStrictness:
|
|
136
|
-
onFrameworkError: FrameworkErrorHandler | undefined;
|
|
137
|
-
onStageChange: StageChangeHandler | undefined;
|
|
138
|
-
onLoadingComplete: LoadingCompleteHandler | undefined;
|
|
121
|
+
toolConfigStrictness: ToolConfigStrictness;
|
|
139
122
|
tools: unknown;
|
|
123
|
+
assessmentId?: string;
|
|
140
124
|
toolContextResolvers?: Record<string, unknown> | null;
|
|
141
125
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* markup (the default). Purely visual — no engine effect.
|
|
147
|
-
*/
|
|
148
|
-
ndsIcons?: boolean;
|
|
149
|
-
/**
|
|
150
|
-
* Interface locale: a BCP-47 tag naming the language the player renders its own
|
|
151
|
-
* UI in. Purely presentational — no engine effect.
|
|
126
|
+
* Content language: a BCP-47 tag naming the language the authored content is
|
|
127
|
+
* written in, which read-aloud speaks it in and catalog lookups select
|
|
128
|
+
* alternates by. A `lang` in the content's markup wins over it. Purely
|
|
129
|
+
* presentational — no engine effect.
|
|
152
130
|
*
|
|
153
|
-
*
|
|
154
|
-
* travels on `env`. QTI 3's implementation guide states the independence
|
|
155
|
-
* directly: a candidate may choose an interface language which may or may not
|
|
156
|
-
* also be the language of the content.
|
|
157
|
-
*
|
|
158
|
-
* Unset renders `en-US`. POSIX (`nl_NL`) and bare (`nl`) forms both resolve.
|
|
131
|
+
* Unset reads as `en-US` wherever the markup names no language.
|
|
159
132
|
*/
|
|
160
|
-
|
|
133
|
+
contentLanguage?: string;
|
|
134
|
+
onFrameworkError?: FrameworkErrorHandler;
|
|
135
|
+
/** Called with each `pie-stage-change` detail. */
|
|
136
|
+
onStageChange?: StageChangeHandler;
|
|
137
|
+
/** Called with each `pie-loading-complete` detail. */
|
|
138
|
+
onLoadingComplete?: LoadingCompleteHandler;
|
|
161
139
|
};
|
|
162
|
-
/**
|
|
163
|
-
* Effective runtime returned by `resolveRuntime`. The shape is exposed
|
|
164
|
-
* as `unknown` at the public boundary because consumers spread it into
|
|
165
|
-
* arbitrary host props; downstream call sites narrow with the specific
|
|
166
|
-
* keys they need.
|
|
167
|
-
*/
|
|
168
140
|
export type EffectiveRuntime = ReturnType<typeof resolveRuntime>;
|
|
169
141
|
/**
|
|
170
142
|
* Engine-side orchestrator that powers `resolveSectionPlayerRuntimeState`
|