@pie-players/pie-assessment-toolkit 0.2.3 → 0.2.4

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 (100) hide show
  1. package/README.md +159 -1
  2. package/dist/index.d.ts +16 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +9 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/player/AssessmentPlayer.d.ts +9 -0
  7. package/dist/player/AssessmentPlayer.d.ts.map +1 -1
  8. package/dist/player/AssessmentPlayer.js +13 -4
  9. package/dist/player/AssessmentPlayer.js.map +1 -1
  10. package/dist/services/AnnotationToolbarConfig.d.ts +134 -0
  11. package/dist/services/AnnotationToolbarConfig.d.ts.map +1 -0
  12. package/dist/services/AnnotationToolbarConfig.js +100 -0
  13. package/dist/services/AnnotationToolbarConfig.js.map +1 -0
  14. package/dist/services/HighlightCoordinator.d.ts +23 -10
  15. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  16. package/dist/services/HighlightCoordinator.js +87 -40
  17. package/dist/services/HighlightCoordinator.js.map +1 -1
  18. package/dist/services/PNPToolResolver.d.ts +171 -15
  19. package/dist/services/PNPToolResolver.d.ts.map +1 -1
  20. package/dist/services/PNPToolResolver.js +324 -32
  21. package/dist/services/PNPToolResolver.js.map +1 -1
  22. package/dist/services/RangeSerializer.d.ts +119 -0
  23. package/dist/services/RangeSerializer.d.ts.map +1 -0
  24. package/dist/services/RangeSerializer.js +199 -0
  25. package/dist/services/RangeSerializer.js.map +1 -0
  26. package/dist/services/TTSService.d.ts +4 -1
  27. package/dist/services/TTSService.d.ts.map +1 -1
  28. package/dist/services/TTSService.js +58 -3
  29. package/dist/services/TTSService.js.map +1 -1
  30. package/dist/services/ToolRegistry.d.ts +225 -0
  31. package/dist/services/ToolRegistry.d.ts.map +1 -0
  32. package/dist/services/ToolRegistry.js +248 -0
  33. package/dist/services/ToolRegistry.js.map +1 -0
  34. package/dist/services/ToolkitCoordinator.d.ts +22 -0
  35. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  36. package/dist/services/ToolkitCoordinator.js +44 -0
  37. package/dist/services/ToolkitCoordinator.js.map +1 -1
  38. package/dist/services/createDefaultToolRegistry.d.ts +72 -0
  39. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -0
  40. package/dist/services/createDefaultToolRegistry.js +147 -0
  41. package/dist/services/createDefaultToolRegistry.js.map +1 -0
  42. package/dist/services/interfaces.d.ts +8 -0
  43. package/dist/services/interfaces.d.ts.map +1 -1
  44. package/dist/services/interfaces.js.map +1 -1
  45. package/dist/services/pnp-provenance.d.ts +167 -0
  46. package/dist/services/pnp-provenance.d.ts.map +1 -0
  47. package/dist/services/pnp-provenance.js +230 -0
  48. package/dist/services/pnp-provenance.js.map +1 -0
  49. package/dist/services/pnp-standard-features.d.ts +240 -0
  50. package/dist/services/pnp-standard-features.d.ts.map +1 -0
  51. package/dist/services/pnp-standard-features.js +342 -0
  52. package/dist/services/pnp-standard-features.js.map +1 -0
  53. package/dist/services/tool-context.d.ts +150 -0
  54. package/dist/services/tool-context.d.ts.map +1 -0
  55. package/dist/services/tool-context.js +157 -0
  56. package/dist/services/tool-context.js.map +1 -0
  57. package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -1
  58. package/dist/services/tool-providers/ToolProviderRegistry.js +7 -7
  59. package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -1
  60. package/dist/tools/registrations/accessibility-tools.d.ts +43 -0
  61. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -0
  62. package/dist/tools/registrations/accessibility-tools.js +230 -0
  63. package/dist/tools/registrations/accessibility-tools.js.map +1 -0
  64. package/dist/tools/registrations/calculator.d.ts +21 -0
  65. package/dist/tools/registrations/calculator.d.ts.map +1 -0
  66. package/dist/tools/registrations/calculator.js +98 -0
  67. package/dist/tools/registrations/calculator.js.map +1 -0
  68. package/dist/tools/registrations/interaction-tools.d.ts +28 -0
  69. package/dist/tools/registrations/interaction-tools.d.ts.map +1 -0
  70. package/dist/tools/registrations/interaction-tools.js +124 -0
  71. package/dist/tools/registrations/interaction-tools.js.map +1 -0
  72. package/dist/tools/registrations/measurement-tools.d.ts +25 -0
  73. package/dist/tools/registrations/measurement-tools.d.ts.map +1 -0
  74. package/dist/tools/registrations/measurement-tools.js +112 -0
  75. package/dist/tools/registrations/measurement-tools.js.map +1 -0
  76. package/dist/tools/registrations/subject-specific-tools.d.ts +28 -0
  77. package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -0
  78. package/dist/tools/registrations/subject-specific-tools.js +118 -0
  79. package/dist/tools/registrations/subject-specific-tools.js.map +1 -0
  80. package/dist/tools/registrations/tts.d.ts +20 -0
  81. package/dist/tools/registrations/tts.d.ts.map +1 -0
  82. package/dist/tools/registrations/tts.js +86 -0
  83. package/dist/tools/registrations/tts.js.map +1 -0
  84. package/dist/tools/tool-tag-map.d.ts +24 -0
  85. package/dist/tools/tool-tag-map.d.ts.map +1 -0
  86. package/dist/tools/tool-tag-map.js +38 -0
  87. package/dist/tools/tool-tag-map.js.map +1 -0
  88. package/package.json +15 -7
  89. package/src/README.md +25 -11
  90. package/src/components/PNPProfileTester.example.svelte +188 -0
  91. package/src/components/PNPProfileTester.svelte +397 -0
  92. package/src/components/PNPProvenanceViewer.svelte +260 -0
  93. package/src/components/QuestionToolBar.svelte +160 -83
  94. package/src/components/ToolButton.svelte +146 -0
  95. package/src/components/ToolButtonGroup.svelte +109 -0
  96. package/src/reference-layout/ReferenceLayout.svelte +5 -13
  97. package/dist/services/PNPMapper.d.ts +0 -71
  98. package/dist/services/PNPMapper.d.ts.map +0 -1
  99. package/dist/services/PNPMapper.js +0 -98
  100. package/dist/services/PNPMapper.js.map +0 -1
@@ -2,19 +2,49 @@
2
2
  * PNP Tool Resolver
3
3
  *
4
4
  * Resolves tool availability from QTI 3.0 Personal Needs Profile (PNP) and
5
- * assessment settings. Implements precedence hierarchy for tool configuration.
5
+ * assessment settings. Implements a precedence hierarchy for tool configuration
6
+ * based on common assessment platform governance patterns.
6
7
  *
7
- * Precedence (highest to lowest):
8
- * 1. District block (absolute veto)
9
- * 2. Test administration override
10
- * 3. Item restriction (per-item block)
11
- * 4. Item requirement (forces enable)
12
- * 5. District requirement
13
- * 6. PNP supports (student needs)
8
+ * PRECEDENCE HIERARCHY (highest to lowest):
9
+ * ==========================================
10
+ *
11
+ * Standards-Based (QTI 3.0):
12
+ * - PNP supports (#6): Student's documented accessibility needs (accessibilityInfo.accessFeature)
13
+ * - Item-level settings (#3, #4): Per-item accessibility requirements/restrictions
14
+ *
15
+ * Implementation-Specific (Common Practice):
16
+ * - District policy (#1, #5): Institutional governance and legal compliance
17
+ * - Test administration (#2): Session-level operational control
18
+ *
19
+ * The hierarchy itself is NOT defined by QTI 3.0 standards but follows common
20
+ * patterns in K-12 assessment platforms, aligning with US IEP/504 accommodation
21
+ * hierarchies where legal requirements and institutional policies take precedence.
22
+ *
23
+ * Precedence Order:
24
+ * 1. District block (absolute veto) - Legal/policy requirements
25
+ * 2. Test administration override - Proctor/administrator operational control
26
+ * 3. Item restriction (per-item block) - Content author can disable for specific items
27
+ * 4. Item requirement (forces enable) - Required by IEP/504 or content needs
28
+ * 5. District requirement - Institutional accessibility requirements
29
+ * 6. PNP supports (student needs) - QTI 3.0 standard student preferences
30
+ *
31
+ * Governance Context:
32
+ * - Institutional veto (district) trumps individual preferences (legal compliance)
33
+ * - Session control (test admin) enables operational flexibility
34
+ * - Content restrictions (item) prevent tools that invalidate assessment
35
+ * - Required accommodations (IEP/504) ensure legal compliance
36
+ * - Student preferences (PNP) are honored when not overridden
37
+ *
38
+ * References:
39
+ * - QTI 3.0: https://www.imsglobal.org/spec/qti/v3p0
40
+ * - IMS AfA 3.0: https://www.imsglobal.org/spec/afa/v3p0
41
+ * - Common assessment platform governance patterns (not standardized)
14
42
  *
15
43
  * Part of PIE Assessment Toolkit.
16
44
  */
17
- import type { AssessmentEntity, AssessmentItemRef } from "@pie-players/pie-players-shared/types";
45
+ import type { AssessmentEntity, AssessmentItemRef, PersonalNeedsProfile } from "@pie-players/pie-players-shared/types";
46
+ import type { ToolRegistry } from "./ToolRegistry";
47
+ import { type PNPResolutionProvenance } from "./pnp-provenance";
18
48
  /**
19
49
  * Resolved tool configuration with source tracking
20
50
  */
@@ -26,25 +56,72 @@ export interface ResolvedToolConfig {
26
56
  settings?: any;
27
57
  source: "district" | "item" | "pnp" | "settings";
28
58
  }
59
+ /**
60
+ * Resolution result with provenance tracking
61
+ */
62
+ export interface ToolResolutionResult {
63
+ /** Resolved tool configurations */
64
+ tools: ResolvedToolConfig[];
65
+ /** Complete provenance trail (for debugging/display) */
66
+ provenance: PNPResolutionProvenance;
67
+ }
29
68
  /**
30
69
  * Resolves tool availability from QTI 3.0 assessment structure
31
70
  */
32
71
  export declare class PNPToolResolver {
72
+ private toolRegistry;
73
+ private enableProvenance;
74
+ /**
75
+ * Create a PNPToolResolver
76
+ *
77
+ * @param toolRegistry Tool registry for PNP support mapping
78
+ * @param enableProvenance Enable detailed provenance tracking (default: true)
79
+ */
80
+ constructor(toolRegistry: ToolRegistry, enableProvenance?: boolean);
33
81
  /**
34
82
  * Resolve all tools from QTI 3.0 assessment + optional item context
35
83
  *
36
84
  * @param assessment QTI 3.0 assessment with personalNeedsProfile
37
85
  * @param currentItemRef Current item for item-specific requirements (optional)
38
- * @returns Array of resolved tool configurations
86
+ * @returns Array of resolved tool configurations (for backward compatibility)
87
+ *
88
+ * @deprecated Use resolveToolsWithProvenance() to get provenance tracking
39
89
  *
40
90
  * @example
41
- * const resolver = new PNPToolResolver();
91
+ * const resolver = new PNPToolResolver(registry);
42
92
  * const tools = resolver.resolveTools(assessment, itemRef);
43
93
  * tools.forEach(tool => {
44
94
  * console.log(`${tool.id}: ${tool.enabled ? 'enabled' : 'disabled'}`);
45
95
  * });
46
96
  */
47
97
  resolveTools(assessment: AssessmentEntity, currentItemRef?: AssessmentItemRef): ResolvedToolConfig[];
98
+ /**
99
+ * Resolve all tools with full provenance tracking
100
+ *
101
+ * Returns both resolved tools and complete provenance trail showing:
102
+ * - All configuration sources consulted
103
+ * - Decision steps at each precedence level
104
+ * - Reasons for enabling/blocking each feature
105
+ * - Human-readable explanations
106
+ *
107
+ * @param assessment QTI 3.0 assessment with personalNeedsProfile
108
+ * @param currentItemRef Current item for item-specific requirements (optional)
109
+ * @returns Resolution result with tools and provenance
110
+ *
111
+ * @example
112
+ * const resolver = new PNPToolResolver(registry);
113
+ * const result = resolver.resolveToolsWithProvenance(assessment, itemRef);
114
+ *
115
+ * // Use resolved tools
116
+ * result.tools.forEach(tool => console.log(tool.id, tool.enabled));
117
+ *
118
+ * // Display provenance to user
119
+ * console.log(result.provenance.summary);
120
+ * result.provenance.features.forEach((trail, featureId) => {
121
+ * console.log(`${featureId}: ${trail.explanation}`);
122
+ * });
123
+ */
124
+ resolveToolsWithProvenance(assessment: AssessmentEntity, currentItemRef?: AssessmentItemRef): ToolResolutionResult;
48
125
  /**
49
126
  * Resolve availability of a single PNP support
50
127
  *
@@ -52,9 +129,14 @@ export declare class PNPToolResolver {
52
129
  *
53
130
  * @param supportId PNP support identifier
54
131
  * @param context Resolution context with all configuration sources
132
+ * @param provenanceBuilder Provenance tracking (optional)
55
133
  * @returns Resolved config or null if blocked/disabled
56
134
  */
57
135
  private resolveSupport;
136
+ /**
137
+ * Create empty provenance when tracking is disabled
138
+ */
139
+ private createEmptyProvenance;
58
140
  /**
59
141
  * Build resolved tool configuration
60
142
  *
@@ -69,7 +151,7 @@ export declare class PNPToolResolver {
69
151
  /**
70
152
  * Check if a specific tool is enabled
71
153
  *
72
- * @param toolId PIE tool identifier (e.g., 'pie-tool-calculator')
154
+ * @param toolId Toolkit tool identifier (e.g., 'calculator')
73
155
  * @param assessment Assessment with PNP
74
156
  * @param itemRef Optional item context
75
157
  * @returns true if tool is enabled
@@ -78,7 +160,7 @@ export declare class PNPToolResolver {
78
160
  /**
79
161
  * Check if a tool is required (cannot be disabled)
80
162
  *
81
- * @param toolId PIE tool identifier
163
+ * @param toolId Toolkit tool identifier
82
164
  * @param assessment Assessment with PNP
83
165
  * @param itemRef Optional item context
84
166
  * @returns true if tool is required or always available
@@ -95,7 +177,7 @@ export declare class PNPToolResolver {
95
177
  *
96
178
  * @example
97
179
  * const autoActivate = resolver.getAutoActivateTools(assessment);
98
- * // Returns: ['pie-tool-text-to-speech', 'pie-tool-line-reader']
180
+ * // Returns: ['textToSpeech', 'lineReader']
99
181
  */
100
182
  getAutoActivateTools(assessment: AssessmentEntity): string[];
101
183
  /**
@@ -106,6 +188,80 @@ export declare class PNPToolResolver {
106
188
  * @returns Array of PIE tool IDs that are enabled
107
189
  */
108
190
  getEnabledTools(assessment: AssessmentEntity, itemRef?: AssessmentItemRef): string[];
191
+ /**
192
+ * Get allowed tool IDs (Pass 1 of two-pass visibility model)
193
+ *
194
+ * Returns tool IDs that pass orchestrator-level checks (PNP + policies + settings).
195
+ * This is the first gate - tools still need to pass Pass 2 (relevance check).
196
+ *
197
+ * This is the primary method to use with ToolRegistry.filterVisibleInContext()
198
+ *
199
+ * @param assessment Assessment with PNP
200
+ * @param itemRef Optional item context
201
+ * @returns Array of allowed tool IDs (Pass 1)
202
+ *
203
+ * @example
204
+ * // Two-pass visibility model
205
+ * const allowedToolIds = resolver.getAllowedToolIds(assessment, itemRef);
206
+ * const visibleTools = toolRegistry.filterVisibleInContext(allowedToolIds, context);
207
+ */
208
+ getAllowedToolIds(assessment: AssessmentEntity, itemRef?: AssessmentItemRef): string[];
209
+ /**
210
+ * Resolve tools with a test/override PNP profile
211
+ *
212
+ * FOR TESTING/DEVELOPMENT ONLY
213
+ *
214
+ * Allows direct injection of a PNP profile for testing accessibility configurations
215
+ * without modifying the assessment entity. The override profile replaces the
216
+ * assessment's personalNeedsProfile entirely.
217
+ *
218
+ * Use cases:
219
+ * - Development/testing UI for trying different profiles
220
+ * - Automated testing with various accessibility configurations
221
+ * - Preview tools with profile simulation
222
+ * - Accessibility team testing and validation
223
+ *
224
+ * @param assessment Base assessment (settings, policies, etc.)
225
+ * @param overrideProfile PNP profile to inject (replaces assessment.personalNeedsProfile)
226
+ * @param itemRef Optional item context
227
+ * @returns Resolution result with tools and provenance
228
+ *
229
+ * @example
230
+ * // Test with low vision profile
231
+ * const testProfile = {
232
+ * supports: ['magnification', 'textToSpeech', 'highContrastDisplay']
233
+ * };
234
+ * const result = resolver.resolveWithOverride(assessment, testProfile);
235
+ *
236
+ * @example
237
+ * // Test with null profile (no accessibility features)
238
+ * const result = resolver.resolveWithOverride(assessment, null);
239
+ */
240
+ resolveWithOverride(assessment: AssessmentEntity, overrideProfile: PersonalNeedsProfile | null, itemRef?: AssessmentItemRef): ToolResolutionResult;
241
+ /**
242
+ * Get allowed tool IDs with full provenance tracking
243
+ *
244
+ * Returns both tool IDs and complete resolution provenance for debugging,
245
+ * auditing, and displaying to users.
246
+ *
247
+ * @param assessment Assessment with PNP
248
+ * @param itemRef Optional item context
249
+ * @returns Object with tool IDs and provenance
250
+ *
251
+ * @example
252
+ * const result = resolver.getAllowedToolIdsWithProvenance(assessment, itemRef);
253
+ *
254
+ * // Use tool IDs
255
+ * const visibleTools = toolRegistry.filterVisibleInContext(result.toolIds, context);
256
+ *
257
+ * // Display provenance to user
258
+ * console.log('Resolution Summary:', result.provenance.summary);
259
+ * console.log('Explanation for calculator:', result.provenance.features.get('calculator')?.explanation);
260
+ */
261
+ getAllowedToolIdsWithProvenance(assessment: AssessmentEntity, itemRef?: AssessmentItemRef): {
262
+ toolIds: string[];
263
+ provenance: PNPResolutionProvenance;
264
+ };
109
265
  /**
110
266
  * Get all required tools
111
267
  *
@@ -117,7 +273,7 @@ export declare class PNPToolResolver {
117
273
  /**
118
274
  * Get tool configuration settings
119
275
  *
120
- * @param toolId PIE tool identifier
276
+ * @param toolId Toolkit tool identifier
121
277
  * @param assessment Assessment with PNP
122
278
  * @param itemRef Optional item context
123
279
  * @returns Tool-specific settings or null if not found
@@ -1 +1 @@
1
- {"version":3,"file":"PNPToolResolver.d.ts","sourceRoot":"","sources":["../../src/services/PNPToolResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EAIjB,MAAM,uCAAuC,CAAC;AAG/C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;CACjD;AAaD;;GAEG;AACH,qBAAa,eAAe;IAC3B;;;;;;;;;;;;;OAaG;IACH,YAAY,CACX,UAAU,EAAE,gBAAgB,EAC5B,cAAc,CAAC,EAAE,iBAAiB,GAChC,kBAAkB,EAAE;IAgCvB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAsDtB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;;;;;OAOG;IACH,aAAa,CACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO;IAKV;;;;;;;OAOG;IACH,cAAc,CACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO;IAMV;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,EAAE;IAS5D;;;;;;OAMG;IACH,eAAe,CACd,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GACzB,MAAM,EAAE;IAKX;;;;;;OAMG;IACH,gBAAgB,CACf,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GACzB,MAAM,EAAE;IAOX;;;;;;;OAOG;IACH,eAAe,CACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GACzB,GAAG,GAAG,IAAI;CAKb"}
1
+ {"version":3,"file":"PNPToolResolver.d.ts","sourceRoot":"","sources":["../../src/services/PNPToolResolver.ts"],"names":[],"mappings":"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"}