@pie-players/pie-assessment-toolkit 0.3.30 → 0.3.32

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 (179) hide show
  1. package/README.md +289 -5
  2. package/dist/components/ItemToolBar.custom-element.js +165 -92
  3. package/dist/components/PieAssessmentToolkit.custom-element.js +604 -107
  4. package/dist/components/SectionToolBar.custom-element.js +0 -36
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/policy/core/PolicySource.d.ts +64 -0
  9. package/dist/policy/core/PolicySource.d.ts.map +1 -0
  10. package/dist/policy/core/PolicySource.js +17 -0
  11. package/dist/policy/core/PolicySource.js.map +1 -0
  12. package/dist/policy/core/ToolPolicyEngine.d.ts +123 -0
  13. package/dist/policy/core/ToolPolicyEngine.d.ts.map +1 -0
  14. package/dist/policy/core/ToolPolicyEngine.js +217 -0
  15. package/dist/policy/core/ToolPolicyEngine.js.map +1 -0
  16. package/dist/policy/core/compose-decision.d.ts +37 -0
  17. package/dist/policy/core/compose-decision.d.ts.map +1 -0
  18. package/dist/policy/core/compose-decision.js +332 -0
  19. package/dist/policy/core/compose-decision.js.map +1 -0
  20. package/dist/policy/core/decision-types.d.ts +142 -0
  21. package/dist/policy/core/decision-types.d.ts.map +1 -0
  22. package/dist/policy/core/decision-types.js +13 -0
  23. package/dist/policy/core/decision-types.js.map +1 -0
  24. package/dist/policy/core/engine-context.d.ts +30 -0
  25. package/dist/policy/core/engine-context.d.ts.map +1 -0
  26. package/dist/policy/core/engine-context.js +28 -0
  27. package/dist/policy/core/engine-context.js.map +1 -0
  28. package/dist/policy/core/policy-source-tag.d.ts +32 -0
  29. package/dist/policy/core/policy-source-tag.d.ts.map +1 -0
  30. package/dist/policy/core/policy-source-tag.js +29 -0
  31. package/dist/policy/core/policy-source-tag.js.map +1 -0
  32. package/dist/policy/core/provenance.d.ts +163 -0
  33. package/dist/policy/core/provenance.d.ts.map +1 -0
  34. package/dist/policy/core/provenance.js +232 -0
  35. package/dist/policy/core/provenance.js.map +1 -0
  36. package/dist/policy/core/qti-inputs.d.ts +67 -0
  37. package/dist/policy/core/qti-inputs.d.ts.map +1 -0
  38. package/dist/policy/core/qti-inputs.js +139 -0
  39. package/dist/policy/core/qti-inputs.js.map +1 -0
  40. package/dist/policy/engine.d.ts +28 -0
  41. package/dist/policy/engine.d.ts.map +1 -0
  42. package/dist/policy/engine.js +24 -0
  43. package/dist/policy/engine.js.map +1 -0
  44. package/dist/policy/internal.d.ts +26 -0
  45. package/dist/policy/internal.d.ts.map +1 -0
  46. package/dist/policy/internal.js +26 -0
  47. package/dist/policy/internal.js.map +1 -0
  48. package/dist/policy/sources/QtiPolicySource.d.ts +146 -0
  49. package/dist/policy/sources/QtiPolicySource.d.ts.map +1 -0
  50. package/dist/policy/sources/QtiPolicySource.js +270 -0
  51. package/dist/policy/sources/QtiPolicySource.js.map +1 -0
  52. package/dist/runtime/SectionRuntimeEngine.d.ts +145 -0
  53. package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -1
  54. package/dist/runtime/SectionRuntimeEngine.js +164 -3
  55. package/dist/runtime/SectionRuntimeEngine.js.map +1 -1
  56. package/dist/runtime/adapter/SectionEngineAdapter.d.ts +144 -0
  57. package/dist/runtime/adapter/SectionEngineAdapter.d.ts.map +1 -0
  58. package/dist/runtime/adapter/SectionEngineAdapter.js +183 -0
  59. package/dist/runtime/adapter/SectionEngineAdapter.js.map +1 -0
  60. package/dist/runtime/adapter/coordinator-bridge.d.ts +93 -0
  61. package/dist/runtime/adapter/coordinator-bridge.d.ts.map +1 -0
  62. package/dist/runtime/adapter/coordinator-bridge.js +127 -0
  63. package/dist/runtime/adapter/coordinator-bridge.js.map +1 -0
  64. package/dist/runtime/adapter/dom-event-bridge.d.ts +63 -0
  65. package/dist/runtime/adapter/dom-event-bridge.d.ts.map +1 -0
  66. package/dist/runtime/adapter/dom-event-bridge.js +95 -0
  67. package/dist/runtime/adapter/dom-event-bridge.js.map +1 -0
  68. package/dist/runtime/adapter/framework-error-bridge.d.ts +37 -0
  69. package/dist/runtime/adapter/framework-error-bridge.d.ts.map +1 -0
  70. package/dist/runtime/adapter/framework-error-bridge.js +47 -0
  71. package/dist/runtime/adapter/framework-error-bridge.js.map +1 -0
  72. package/dist/runtime/adapter/instrumentation-bridge.d.ts +32 -0
  73. package/dist/runtime/adapter/instrumentation-bridge.d.ts.map +1 -0
  74. package/dist/runtime/adapter/instrumentation-bridge.js +39 -0
  75. package/dist/runtime/adapter/instrumentation-bridge.js.map +1 -0
  76. package/dist/runtime/adapter/subscriber-fanout.d.ts +35 -0
  77. package/dist/runtime/adapter/subscriber-fanout.d.ts.map +1 -0
  78. package/dist/runtime/adapter/subscriber-fanout.js +60 -0
  79. package/dist/runtime/adapter/subscriber-fanout.js.map +1 -0
  80. package/dist/runtime/core/SectionEngineCore.d.ts +52 -0
  81. package/dist/runtime/core/SectionEngineCore.d.ts.map +1 -0
  82. package/dist/runtime/core/SectionEngineCore.js +81 -0
  83. package/dist/runtime/core/SectionEngineCore.js.map +1 -0
  84. package/dist/runtime/core/cohort.d.ts +40 -0
  85. package/dist/runtime/core/cohort.d.ts.map +1 -0
  86. package/dist/runtime/core/cohort.js +49 -0
  87. package/dist/runtime/core/cohort.js.map +1 -0
  88. package/dist/runtime/core/engine-input.d.ts +114 -0
  89. package/dist/runtime/core/engine-input.d.ts.map +1 -0
  90. package/dist/runtime/core/engine-input.js +19 -0
  91. package/dist/runtime/core/engine-input.js.map +1 -0
  92. package/dist/runtime/core/engine-output.d.ts +62 -0
  93. package/dist/runtime/core/engine-output.d.ts.map +1 -0
  94. package/dist/runtime/core/engine-output.js +27 -0
  95. package/dist/runtime/core/engine-output.js.map +1 -0
  96. package/dist/runtime/core/engine-readiness.d.ts +49 -0
  97. package/dist/runtime/core/engine-readiness.d.ts.map +1 -0
  98. package/dist/runtime/core/engine-readiness.js +47 -0
  99. package/dist/runtime/core/engine-readiness.js.map +1 -0
  100. package/dist/runtime/core/engine-resolver.d.ts +172 -0
  101. package/dist/runtime/core/engine-resolver.d.ts.map +1 -0
  102. package/dist/runtime/core/engine-resolver.js +170 -0
  103. package/dist/runtime/core/engine-resolver.js.map +1 -0
  104. package/dist/runtime/core/engine-stage-derivation.d.ts +19 -0
  105. package/dist/runtime/core/engine-stage-derivation.d.ts.map +1 -0
  106. package/dist/runtime/core/engine-stage-derivation.js +30 -0
  107. package/dist/runtime/core/engine-stage-derivation.js.map +1 -0
  108. package/dist/runtime/core/engine-state.d.ts +83 -0
  109. package/dist/runtime/core/engine-state.d.ts.map +1 -0
  110. package/dist/runtime/core/engine-state.js +49 -0
  111. package/dist/runtime/core/engine-state.js.map +1 -0
  112. package/dist/runtime/core/engine-transition.d.ts +49 -0
  113. package/dist/runtime/core/engine-transition.d.ts.map +1 -0
  114. package/dist/runtime/core/engine-transition.js +261 -0
  115. package/dist/runtime/core/engine-transition.js.map +1 -0
  116. package/dist/runtime/engine-context.d.ts +40 -0
  117. package/dist/runtime/engine-context.d.ts.map +1 -0
  118. package/dist/runtime/engine-context.js +32 -0
  119. package/dist/runtime/engine-context.js.map +1 -0
  120. package/dist/runtime/engine.d.ts +24 -0
  121. package/dist/runtime/engine.d.ts.map +1 -0
  122. package/dist/runtime/engine.js +24 -0
  123. package/dist/runtime/engine.js.map +1 -0
  124. package/dist/runtime/internal.d.ts +44 -0
  125. package/dist/runtime/internal.d.ts.map +1 -0
  126. package/dist/runtime/internal.js +46 -0
  127. package/dist/runtime/internal.js.map +1 -0
  128. package/dist/runtime/runtime-id.d.ts +8 -0
  129. package/dist/runtime/runtime-id.d.ts.map +1 -0
  130. package/dist/runtime/runtime-id.js +10 -0
  131. package/dist/runtime/runtime-id.js.map +1 -0
  132. package/dist/runtime/section-runtime-engine-host-context.d.ts +74 -0
  133. package/dist/runtime/section-runtime-engine-host-context.d.ts.map +1 -0
  134. package/dist/runtime/section-runtime-engine-host-context.js +96 -0
  135. package/dist/runtime/section-runtime-engine-host-context.js.map +1 -0
  136. package/dist/runtime/stage-emit-gate.d.ts +93 -0
  137. package/dist/runtime/stage-emit-gate.d.ts.map +1 -0
  138. package/dist/runtime/stage-emit-gate.js +83 -0
  139. package/dist/runtime/stage-emit-gate.js.map +1 -0
  140. package/dist/services/ToolkitCoordinator.d.ts +280 -7
  141. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  142. package/dist/services/ToolkitCoordinator.js +412 -32
  143. package/dist/services/ToolkitCoordinator.js.map +1 -1
  144. package/dist/services/framework-error-bus.d.ts +73 -0
  145. package/dist/services/framework-error-bus.d.ts.map +1 -0
  146. package/dist/services/framework-error-bus.js +68 -0
  147. package/dist/services/framework-error-bus.js.map +1 -0
  148. package/dist/services/framework-error.d.ts +36 -1
  149. package/dist/services/framework-error.d.ts.map +1 -1
  150. package/dist/services/framework-error.js +37 -0
  151. package/dist/services/framework-error.js.map +1 -1
  152. package/dist/services/interfaces.d.ts +78 -0
  153. package/dist/services/interfaces.d.ts.map +1 -1
  154. package/dist/services/interfaces.js.map +1 -1
  155. package/dist/services/section-controller-types.d.ts +20 -0
  156. package/dist/services/section-controller-types.d.ts.map +1 -1
  157. package/dist/services/tools-config-normalizer.d.ts +23 -0
  158. package/dist/services/tools-config-normalizer.d.ts.map +1 -1
  159. package/dist/services/tools-config-normalizer.js +13 -1
  160. package/dist/services/tools-config-normalizer.js.map +1 -1
  161. package/dist/tools/client.d.ts +0 -1
  162. package/dist/tools/client.d.ts.map +1 -1
  163. package/dist/tools/client.js +0 -2
  164. package/dist/tools/client.js.map +1 -1
  165. package/dist/tools/types.d.ts +0 -26
  166. package/dist/tools/types.d.ts.map +1 -1
  167. package/package.json +23 -7
  168. package/dist/runtime/runtime-event-guards.d.ts +0 -2
  169. package/dist/runtime/runtime-event-guards.d.ts.map +0 -1
  170. package/dist/runtime/runtime-event-guards.js +0 -4
  171. package/dist/runtime/runtime-event-guards.js.map +0 -1
  172. package/dist/tools/tool-coordinator.d.ts +0 -72
  173. package/dist/tools/tool-coordinator.d.ts.map +0 -1
  174. package/dist/tools/tool-coordinator.js +0 -194
  175. package/dist/tools/tool-coordinator.js.map +0 -1
  176. package/dist/types/events.d.ts +0 -157
  177. package/dist/types/events.d.ts.map +0 -1
  178. package/dist/types/events.js +0 -11
  179. package/dist/types/events.js.map +0 -1
@@ -29,9 +29,6 @@ export default function SectionToolBar($$anchor, $$props) {
29
29
  size = $.prop($$props, 'size', 7, "md"),
30
30
  language = $.prop($$props, 'language', 7, "en-US"),
31
31
  toolRegistry = $.prop($$props, 'toolRegistry', 7, null),
32
- pnpResolver = $.prop($$props, 'pnpResolver', 7, null),
33
- assessment = $.prop($$props, 'assessment', 7, null),
34
- itemRef = $.prop($$props, 'itemRef', 7, null),
35
32
  item = $.prop($$props, 'item', 7, null),
36
33
  hostButtons = $.prop($$props, 'hostButtons', 23, () => []);
37
34
 
@@ -90,33 +87,6 @@ export default function SectionToolBar($$anchor, $$props) {
90
87
  $.flush();
91
88
  },
92
89
 
93
- get pnpResolver() {
94
- return pnpResolver();
95
- },
96
-
97
- set pnpResolver($$value) {
98
- pnpResolver($$value);
99
- $.flush();
100
- },
101
-
102
- get assessment() {
103
- return assessment();
104
- },
105
-
106
- set assessment($$value) {
107
- assessment($$value);
108
- $.flush();
109
- },
110
-
111
- get itemRef() {
112
- return itemRef();
113
- },
114
-
115
- set itemRef($$value) {
116
- itemRef($$value);
117
- $.flush();
118
- },
119
-
120
90
  get item() {
121
91
  return item();
122
92
  },
@@ -147,9 +117,6 @@ export default function SectionToolBar($$anchor, $$props) {
147
117
  $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'size', size()));
148
118
  $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'language', language()));
149
119
  $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'toolRegistry', toolRegistry()));
150
- $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'pnpResolver', pnpResolver()));
151
- $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'assessment', assessment()));
152
- $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'itemRef', itemRef()));
153
120
  $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'item', item()));
154
121
  $.template_effect(() => $.set_custom_element_data(pie_item_toolbar, 'hostButtons', hostButtons()));
155
122
  $.append($$anchor, pie_item_toolbar);
@@ -166,9 +133,6 @@ __pieDefineSafely('pie-section-toolbar', $.create_custom_element(
166
133
  size: { attribute: 'size', type: 'String' },
167
134
  language: { attribute: 'language', type: 'String' },
168
135
  toolRegistry: { type: 'Object' },
169
- pnpResolver: { type: 'Object' },
170
- assessment: { type: 'Object' },
171
- itemRef: { type: 'Object' },
172
136
  item: { type: 'Object' },
173
137
  hostButtons: { type: 'Object' }
174
138
  },
package/dist/index.d.ts CHANGED
@@ -43,11 +43,12 @@ export { SSMLExtractor } from "./services/SSMLExtractor.js";
43
43
  export type { FontSize, ThemeConfig } from "./services/ThemeProvider.js";
44
44
  export { ThemeProvider } from "./services/ThemeProvider.js";
45
45
  export { ToolCoordinator, ZIndexLayer } from "./services/ToolCoordinator.js";
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";
46
+ export type { AnswerEliminatorToolConfig, ProviderLifecycleContext, SectionControllerContext, SectionControllerEvent, SectionControllerEventType, SectionItemEvent, SectionItemEventType, SectionControllerFactoryDefaults, SectionControllerHandle, SectionControllerKey, SectionScopedEvent, SectionScopedEventType, SectionSessionPersistenceConfig, SectionItemEventSubscriptionArgs, SectionScopedEventSubscriptionArgs, SectionEventSubscriptionArgs, SectionSessionPersistenceStrategy, SectionControllerLoadedRenderable, SectionControllerRuntimeState, SectionControllerSessionState, SectionPersistenceFactoryDefaults, ToolConfig, ToolkitCoordinatorConfig, ToolkitCoordinatorHooks, ToolkitErrorContext, ToolkitInitStatus, ToolkitServiceBundle, ToolkitToolsConfig, TTSToolConfig, } from "./services/ToolkitCoordinator.js";
47
47
  export { ToolkitCoordinator } from "./services/ToolkitCoordinator.js";
48
48
  export type { CanonicalToolsConfig, ToolPlacementConfig, ToolPlacementLevel, ToolPolicyConfig, ToolProvidersConfig, } from "./services/tools-config-normalizer.js";
49
49
  export type { FrameworkErrorKind, FrameworkErrorModel, FrameworkErrorSeverity, } from "./services/framework-error.js";
50
50
  export { formatFrameworkErrorForConsole, frameworkErrorFromToolConfigDiagnostics, frameworkErrorFromUnknown, toFrameworkErrorModel, } from "./services/framework-error.js";
51
+ export type { FrameworkErrorListener, } from "./services/framework-error-bus.js";
51
52
  export type { ToolConfigDiagnostic, ToolConfigDiagnosticSeverity, ToolConfigStrictness, ToolConfigValidationOptions, ToolConfigValidationResult, } from "./services/tool-config-validation.js";
52
53
  export type { ToolbarButtonItem, ToolbarItem, ToolbarItemBase, ToolbarLinkItem, } from "./services/toolbar-items.js";
53
54
  export { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem, isValidToolbarItemShape, } from "./services/toolbar-items.js";
@@ -70,5 +71,4 @@ export type { AssessmentSession, AssessmentSectionSessionState, AssessmentSessio
70
71
  export { createNewAssessmentSession, getAssessmentSessionStorageKey, loadAssessmentSession, saveAssessmentSession, setCurrentSectionPosition, upsertSectionSession, } from "./attempt/AssessmentSession.js";
71
72
  export type { ActivitySessionPatchPayload, MapActivityToTestAttemptSessionArgs, PieBackendActivityDefinition, PieBackendActivityItemRef, PieBackendActivitySession, } from "./attempt/adapters/activity-to-test-attempt-session.js";
72
73
  export { buildActivitySessionItemUpdate, buildActivitySessionPatchFromTestAttemptSession, mapActivityToTestAttemptSession, toItemSessionsRecord, } from "./attempt/adapters/activity-to-test-attempt-session.js";
73
- export type { AssessmentCompletedEvent, AssessmentPausedEvent, AssessmentResumedEvent, AssessmentStartedEvent, AssessmentToolkitEvents, CanNavigateChangedEvent, InteractionEvent, InteractionType, ItemChangedEvent, ItemMetadata, LoadCompleteEvent, LocaleChangedEvent, LocaleLoadingCompleteEvent, LocaleLoadingErrorEvent, LocaleLoadingStartEvent, NavigationRequestEvent, PlayerErrorEvent, SessionChangedEvent, StateRestoredEvent, StateSavedEvent, SyncFailedEvent, ToolActivatedEvent, ToolDeactivatedEvent, ToolStateChangedEvent, } from "./types/events.js";
74
74
  //# sourceMappingURL=index.d.ts.map
@@ -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":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EACX,mCAAmC,EACnC,mCAAmC,EACnC,+BAA+B,EAC/B,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAChB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACN,mCAAmC,EACnC,mCAAmC,EACnC,+BAA+B,EAC/B,6BAA6B,GAC7B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACN,0CAA0C,EAC1C,0CAA0C,EAC1C,sCAAsC,EACtC,oCAAoC,GACpC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,iCAAiC,EACjC,uCAAuC,EACvC,oCAAoC,EACpC,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,GACrB,MAAM,iCAAiC,CAAC;AAMzC,YAAY,EACX,+BAA+B,EAC/B,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,SAAS,GACT,MAAM,0BAA0B,CAAC;AAOlC,YAAY,EACX,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,eAAe,GACf,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EACN,cAAc,EACd,oBAAoB,EACpB,aAAa,GACb,MAAM,oCAAoC,CAAC;AAE5C,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,YAAY,EACX,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,YAAY,EACX,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,gBAAgB,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EACX,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,SAAS,GACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EACN,8BAA8B,EAC9B,iCAAiC,GACjC,MAAM,2CAA2C,CAAC;AACnD,YAAY,EACX,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,UAAU,GACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,eAAe,GACf,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACX,kBAAkB,EAClB,oBAAoB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,YAAY,EACX,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACN,4BAA4B,EAC5B,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,GAC5B,MAAM,qCAAqC,CAAC;AAE7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE7E,YAAY,EACX,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,gCAAgC,EAChC,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,gCAAgC,EAChC,kCAAkC,EAClC,4BAA4B,EAC5B,iCAAiC,EACjC,iCAAiC,EACjC,6BAA6B,EAC7B,6BAA6B,EAC7B,iCAAiC,EACjC,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EACX,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACnB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACX,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,8BAA8B,EAC9B,uCAAuC,EACvC,yBAAyB,EACzB,qBAAqB,GACrB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACX,sBAAsB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACX,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACX,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,eAAe,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,sCAAsC,EACtC,+BAA+B,GAC/B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACX,oBAAoB,EACpB,cAAc,GACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GACf,MAAM,gCAAgC,CAAC;AAExC,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACN,6BAA6B,EAC7B,KAAK,uBAAuB,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EACX,oBAAoB,EACpB,aAAa,EACb,kBAAkB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,GACzB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACX,YAAY,EACZ,0BAA0B,EAC1B,gBAAgB,EAChB,UAAU,EACV,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAM9B,YAAY,EACX,qBAAqB,EACrB,QAAQ,EACR,eAAe,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,aAAa,GACb,MAAM,kBAAkB,CAAC;AAM1B,YAAY,EACX,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,mBAAmB,EACnB,kCAAkC,EAClC,2BAA2B,EAC3B,sBAAsB,EACtB,4BAA4B,EAC5B,+BAA+B,EAC/B,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,qCAAqC,EACrC,iBAAiB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACX,iBAAiB,EACjB,6BAA6B,EAC7B,gCAAgC,EAChC,4BAA4B,GAC5B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACX,2BAA2B,EAC3B,mCAAmC,EACnC,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EACN,8BAA8B,EAC9B,+CAA+C,EAC/C,+BAA+B,EAC/B,oBAAoB,GACpB,MAAM,wDAAwD,CAAC"}
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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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Custom `PolicySource` extension point (M8 — see
3
+ * `.cursor/plans/m8-design.md` § 5).
4
+ *
5
+ * Custom sources run in step 6 of the composition pipeline — *after*
6
+ * placement membership, provider veto, host policy, and QTI gates.
7
+ * That ordering is deliberate: custom rules can only further *narrow*
8
+ * the candidate set or add advisory provenance entries; they cannot
9
+ * promote a tool that the host already removed.
10
+ *
11
+ * Sources MUST be pure with respect to `decide(...)`: given the same
12
+ * `(candidates, context)` input they should produce the same
13
+ * `(refinedCandidates, decisions)` output. Side-effects are reserved
14
+ * for the engine's own subscription bus (`onPolicyChange`).
15
+ */
16
+ import type { ToolPolicyDecisionRequest } from "./decision-types.js";
17
+ import type { ToolPolicyDecisionRule, ToolPolicyResolutionDecision, ToolPolicySourceType } from "./provenance.js";
18
+ export interface PolicySourceDecisionContext {
19
+ request: ToolPolicyDecisionRequest;
20
+ /**
21
+ * Snapshot of the candidate set as it enters this source. Sources
22
+ * SHOULD treat this as read-only and return a fresh array via
23
+ * `result.refinedCandidates`. Mutating `candidates` in place is
24
+ * not supported and will be flagged in tests.
25
+ */
26
+ candidates: readonly string[];
27
+ }
28
+ export interface PolicySourceProvenanceEntry {
29
+ rule: ToolPolicyDecisionRule;
30
+ featureId: string;
31
+ action: ToolPolicyResolutionDecision["action"];
32
+ sourceType: ToolPolicySourceType;
33
+ reason: string;
34
+ value?: unknown;
35
+ /**
36
+ * Custom precedence value used for the decision log. Defaults to
37
+ * `100 + sourceIndex` (engine-assigned) when `undefined`. Sources
38
+ * MAY override only if they know what they are doing — overriding
39
+ * to a value `<= 6` lets the source masquerade as a QTI rule and
40
+ * is generally a bug.
41
+ */
42
+ precedence?: number;
43
+ }
44
+ export interface PolicySourceResult {
45
+ /**
46
+ * Refined candidate set. MUST be a subset of `context.candidates`.
47
+ * Returning a superset is unsupported and will be normalized away
48
+ * by the engine (with an `tool-policy.placementMissing` diagnostic
49
+ * for any added IDs).
50
+ */
51
+ refinedCandidates: string[];
52
+ /**
53
+ * Provenance entries to append to the decision log. Each entry is
54
+ * recorded under `featureId` whether or not it survives — sources
55
+ * MAY emit advisory entries for blocked tools to document why.
56
+ */
57
+ decisions?: PolicySourceProvenanceEntry[];
58
+ }
59
+ export interface PolicySource {
60
+ /** Stable identifier — used for `custom.${id}` source tags. */
61
+ readonly id: string;
62
+ refine(context: PolicySourceDecisionContext): PolicySourceResult;
63
+ }
64
+ //# sourceMappingURL=PolicySource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicySource.d.ts","sourceRoot":"","sources":["../../../src/policy/core/PolicySource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EACX,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,yBAAyB,CAAC;IACnC;;;;;OAKG;IACH,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC3C,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC/C,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAClC;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,2BAA2B,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,MAAM,CAAC,OAAO,EAAE,2BAA2B,GAAG,kBAAkB,CAAC;CACjE"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Custom `PolicySource` extension point (M8 — see
3
+ * `.cursor/plans/m8-design.md` § 5).
4
+ *
5
+ * Custom sources run in step 6 of the composition pipeline — *after*
6
+ * placement membership, provider veto, host policy, and QTI gates.
7
+ * That ordering is deliberate: custom rules can only further *narrow*
8
+ * the candidate set or add advisory provenance entries; they cannot
9
+ * promote a tool that the host already removed.
10
+ *
11
+ * Sources MUST be pure with respect to `decide(...)`: given the same
12
+ * `(candidates, context)` input they should produce the same
13
+ * `(refinedCandidates, decisions)` output. Side-effects are reserved
14
+ * for the engine's own subscription bus (`onPolicyChange`).
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=PolicySource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicySource.js","sourceRoot":"","sources":["../../../src/policy/core/PolicySource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Tool Policy Engine — facade class (M8 — see
3
+ * `.cursor/plans/m8-design.md` § 2).
4
+ *
5
+ * Wraps `composeDecision(...)` with engine-instance state:
6
+ * - bound inputs (`tools`, `assessment`, `currentItemRef`, ...)
7
+ * - registered custom `PolicySource`s
8
+ * - `onPolicyChange` subscriber bus
9
+ * - `dispose()` clean-up
10
+ *
11
+ * The class has no DOM dependency and no Svelte runes. It is safe to
12
+ * instantiate inside a worker, in a Node test, or inside a CE
13
+ * connectedCallback. The Svelte context glue (`TOOL_POLICY_ENGINE_KEY`)
14
+ * lives in `engine-context.ts`.
15
+ *
16
+ * PR 1 ships the engine *without callers*. PR 2 wires it into
17
+ * `ToolkitCoordinator`. PR 3 switches `<pie-item-toolbar>` over.
18
+ */
19
+ import type { AssessmentEntity, AssessmentItemRef } from "@pie-players/pie-players-shared/types";
20
+ import type { CanonicalToolsConfig, ToolPlacementLevel } from "../../services/tools-config-normalizer.js";
21
+ import type { ToolRegistry } from "../../services/ToolRegistry.js";
22
+ import type { ToolPolicyDecision, ToolPolicyDecisionRequest } from "./decision-types.js";
23
+ import type { PolicySource } from "./PolicySource.js";
24
+ export type QtiEnforcementMode = "on" | "off";
25
+ export interface ToolPolicyEngineInputs {
26
+ tools?: CanonicalToolsConfig | null;
27
+ assessment?: AssessmentEntity | null;
28
+ currentItemRef?: AssessmentItemRef | null;
29
+ /**
30
+ * Explicit override. When omitted (or `undefined`), the engine
31
+ * defaults to {@link resolveDefaultQtiEnforcement} over the bound
32
+ * `assessment` and `currentItemRef`: `"on"` if they carry any QTI
33
+ * 6-level precedence material (PNP, district policy, test
34
+ * administration, item-level required/restricted/parameters),
35
+ * `"off"` otherwise. See `.cursor/plans/m8-design.md` F2.
36
+ *
37
+ * Hosts that want to force a mode (test fixtures, demos that
38
+ * intentionally bypass QTI gates) pass `"on"` or `"off"`
39
+ * explicitly. Embedded under `<pie-section-player-*>` the same
40
+ * override flows through `runtime.tools.qtiEnforcement` (see the
41
+ * M5 mirror rule).
42
+ */
43
+ qtiEnforcement?: QtiEnforcementMode;
44
+ }
45
+ export interface ToolPolicyEngineArgs {
46
+ toolRegistry: ToolRegistry;
47
+ inputs?: ToolPolicyEngineInputs;
48
+ customSources?: readonly PolicySource[];
49
+ /** Stable context label used in provenance trails. Defaults to "tool-policy". */
50
+ contextId?: string;
51
+ }
52
+ export interface ToolPolicyChangeEvent {
53
+ /** What changed in this update. */
54
+ reason: "inputs" | "policy-source-added" | "policy-source-removed" | "qti-enforcement" | "disposed";
55
+ /** Snapshot of the engine's inputs after the change. */
56
+ inputs: Readonly<ResolvedEngineInputs>;
57
+ }
58
+ export interface ResolvedEngineInputs {
59
+ tools: CanonicalToolsConfig;
60
+ assessment: AssessmentEntity | null;
61
+ currentItemRef: AssessmentItemRef | null;
62
+ qtiEnforcement: QtiEnforcementMode;
63
+ }
64
+ export type ToolPolicyChangeListener = (event: ToolPolicyChangeEvent) => void;
65
+ export declare class ToolPolicyEngine {
66
+ private readonly toolRegistry;
67
+ private readonly contextId;
68
+ private readonly qtiSource;
69
+ private readonly customSources;
70
+ private readonly listeners;
71
+ private tools;
72
+ private assessment;
73
+ private currentItemRef;
74
+ private qtiEnforcement;
75
+ private disposed;
76
+ constructor(args: ToolPolicyEngineArgs);
77
+ /**
78
+ * Resolve the visible tool set for a given placement level and
79
+ * scope.
80
+ *
81
+ * `visibleTools` and `diagnostics` are deterministic with respect
82
+ * to the engine's currently-bound inputs — calling `decide(...)`
83
+ * twice with identical inputs returns structurally equal
84
+ * `visibleTools` and `diagnostics`. The returned `provenance`
85
+ * carries call-time `evaluatedAt` timestamps generated by
86
+ * `ToolPolicyProvenanceBuilder` (one per `decide(...)`); two
87
+ * back-to-back calls therefore produce different `evaluatedAt`
88
+ * values even though the policy decision itself is identical.
89
+ * Hosts that want timestamp-stable provenance should reuse a
90
+ * cached `ToolPolicyDecision` rather than re-call `decide(...)`.
91
+ */
92
+ decide(request: ToolPolicyDecisionRequest): ToolPolicyDecision;
93
+ /**
94
+ * Convenience wrapper for hosts that just want the visible tool
95
+ * IDs. Equivalent to `decide(...).visibleTools.map(e => e.toolId)`.
96
+ */
97
+ getVisibleToolIds(level: ToolPlacementLevel, scopeId: string): string[];
98
+ /**
99
+ * Apply a partial input update.
100
+ *
101
+ * Each key is value-diffed via `Object.is` before storing, so callers
102
+ * may safely re-push the same reference (e.g. on Svelte effect
103
+ * re-runs caused by unrelated tracked reads): no-op patches do not
104
+ * fire `onPolicyChange` listeners. This contract is relied on by
105
+ * `PieAssessmentToolkit.svelte`'s prop-forwarding effect and by the
106
+ * coordinator's `getFloatingTools()` / `decideToolPolicy()` lockstep
107
+ * tests.
108
+ *
109
+ * `qtiEnforcement` is stored on its own field and always emits with
110
+ * a distinct `"qti-enforcement"` reason when no other key changed,
111
+ * so PR 4's auto-on flip can target that reason without a separate
112
+ * event channel.
113
+ */
114
+ updateInputs(patch: Partial<ToolPolicyEngineInputs>): void;
115
+ registerPolicySource(source: PolicySource): () => void;
116
+ onPolicyChange(listener: ToolPolicyChangeListener): () => void;
117
+ getInputs(): Readonly<ResolvedEngineInputs>;
118
+ dispose(): void;
119
+ private snapshotInputs;
120
+ private emit;
121
+ private assertNotDisposed;
122
+ }
123
+ //# sourceMappingURL=ToolPolicyEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolPolicyEngine.d.ts","sourceRoot":"","sources":["../../../src/policy/core/ToolPolicyEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EACX,oBAAoB,EACpB,kBAAkB,EAClB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,KAAK,EACX,kBAAkB,EAClB,yBAAyB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACtC,KAAK,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACrC,mCAAmC;IACnC,MAAM,EACH,QAAQ,GACR,qBAAqB,GACrB,uBAAuB,GACvB,iBAAiB,GACjB,UAAU,CAAC;IACd,wDAAwD;IACxD,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzC,cAAc,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAQ9E,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IAEjE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,oBAAoB;IAkBtC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB;IAmB9D;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAOvE;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAuC1D,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,IAAI;IAqBtD,cAAc,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAO9D,SAAS,IAAI,QAAQ,CAAC,oBAAoB,CAAC;IAI3C,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,iBAAiB;CAKzB"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Tool Policy Engine — facade class (M8 — see
3
+ * `.cursor/plans/m8-design.md` § 2).
4
+ *
5
+ * Wraps `composeDecision(...)` with engine-instance state:
6
+ * - bound inputs (`tools`, `assessment`, `currentItemRef`, ...)
7
+ * - registered custom `PolicySource`s
8
+ * - `onPolicyChange` subscriber bus
9
+ * - `dispose()` clean-up
10
+ *
11
+ * The class has no DOM dependency and no Svelte runes. It is safe to
12
+ * instantiate inside a worker, in a Node test, or inside a CE
13
+ * connectedCallback. The Svelte context glue (`TOOL_POLICY_ENGINE_KEY`)
14
+ * lives in `engine-context.ts`.
15
+ *
16
+ * PR 1 ships the engine *without callers*. PR 2 wires it into
17
+ * `ToolkitCoordinator`. PR 3 switches `<pie-item-toolbar>` over.
18
+ */
19
+ import { normalizeToolsConfig } from "../../services/tools-config-normalizer.js";
20
+ import { composeDecision } from "./compose-decision.js";
21
+ import { resolveDefaultQtiEnforcement } from "./qti-inputs.js";
22
+ import { QtiPolicySource } from "../sources/QtiPolicySource.js";
23
+ const DEFAULT_TOOLS = normalizeToolsConfig({
24
+ policy: { allowed: [], blocked: [] },
25
+ placement: { section: [], item: [], passage: [] },
26
+ providers: {},
27
+ });
28
+ export class ToolPolicyEngine {
29
+ toolRegistry;
30
+ contextId;
31
+ qtiSource;
32
+ customSources;
33
+ listeners = new Set();
34
+ tools;
35
+ assessment;
36
+ currentItemRef;
37
+ qtiEnforcement;
38
+ disposed = false;
39
+ constructor(args) {
40
+ this.toolRegistry = args.toolRegistry;
41
+ this.contextId = args.contextId ?? "tool-policy";
42
+ this.qtiSource = new QtiPolicySource(this.toolRegistry);
43
+ this.customSources = args.customSources ? [...args.customSources] : [];
44
+ const inputs = args.inputs ?? {};
45
+ this.tools = inputs.tools ?? DEFAULT_TOOLS;
46
+ this.assessment = inputs.assessment ?? null;
47
+ this.currentItemRef = inputs.currentItemRef ?? null;
48
+ this.qtiEnforcement =
49
+ inputs.qtiEnforcement ??
50
+ resolveDefaultQtiEnforcement({
51
+ assessment: this.assessment,
52
+ currentItemRef: this.currentItemRef,
53
+ });
54
+ }
55
+ /**
56
+ * Resolve the visible tool set for a given placement level and
57
+ * scope.
58
+ *
59
+ * `visibleTools` and `diagnostics` are deterministic with respect
60
+ * to the engine's currently-bound inputs — calling `decide(...)`
61
+ * twice with identical inputs returns structurally equal
62
+ * `visibleTools` and `diagnostics`. The returned `provenance`
63
+ * carries call-time `evaluatedAt` timestamps generated by
64
+ * `ToolPolicyProvenanceBuilder` (one per `decide(...)`); two
65
+ * back-to-back calls therefore produce different `evaluatedAt`
66
+ * values even though the policy decision itself is identical.
67
+ * Hosts that want timestamp-stable provenance should reuse a
68
+ * cached `ToolPolicyDecision` rather than re-call `decide(...)`.
69
+ */
70
+ decide(request) {
71
+ this.assertNotDisposed();
72
+ const requestContextId = request.scope.scopeId
73
+ ? `${this.contextId}:${request.level}:${request.scope.scopeId}`
74
+ : `${this.contextId}:${request.level}`;
75
+ return composeDecision({
76
+ request,
77
+ tools: this.tools,
78
+ qti: {
79
+ source: this.qtiSource,
80
+ assessment: this.assessment ?? undefined,
81
+ currentItemRef: this.currentItemRef ?? undefined,
82
+ enforcement: this.qtiEnforcement,
83
+ },
84
+ customSources: this.customSources,
85
+ contextId: requestContextId,
86
+ });
87
+ }
88
+ /**
89
+ * Convenience wrapper for hosts that just want the visible tool
90
+ * IDs. Equivalent to `decide(...).visibleTools.map(e => e.toolId)`.
91
+ */
92
+ getVisibleToolIds(level, scopeId) {
93
+ return this.decide({
94
+ level,
95
+ scope: { level, scopeId },
96
+ }).visibleTools.map((entry) => entry.toolId);
97
+ }
98
+ /**
99
+ * Apply a partial input update.
100
+ *
101
+ * Each key is value-diffed via `Object.is` before storing, so callers
102
+ * may safely re-push the same reference (e.g. on Svelte effect
103
+ * re-runs caused by unrelated tracked reads): no-op patches do not
104
+ * fire `onPolicyChange` listeners. This contract is relied on by
105
+ * `PieAssessmentToolkit.svelte`'s prop-forwarding effect and by the
106
+ * coordinator's `getFloatingTools()` / `decideToolPolicy()` lockstep
107
+ * tests.
108
+ *
109
+ * `qtiEnforcement` is stored on its own field and always emits with
110
+ * a distinct `"qti-enforcement"` reason when no other key changed,
111
+ * so PR 4's auto-on flip can target that reason without a separate
112
+ * event channel.
113
+ */
114
+ updateInputs(patch) {
115
+ this.assertNotDisposed();
116
+ let changed = false;
117
+ let qtiChanged = false;
118
+ if ("tools" in patch) {
119
+ const next = patch.tools ?? DEFAULT_TOOLS;
120
+ if (!Object.is(this.tools, next)) {
121
+ this.tools = next;
122
+ changed = true;
123
+ }
124
+ }
125
+ if ("assessment" in patch) {
126
+ const next = patch.assessment ?? null;
127
+ if (!Object.is(this.assessment, next)) {
128
+ this.assessment = next;
129
+ changed = true;
130
+ }
131
+ }
132
+ if ("currentItemRef" in patch) {
133
+ const next = patch.currentItemRef ?? null;
134
+ if (!Object.is(this.currentItemRef, next)) {
135
+ this.currentItemRef = next;
136
+ changed = true;
137
+ }
138
+ }
139
+ if ("qtiEnforcement" in patch && patch.qtiEnforcement) {
140
+ if (this.qtiEnforcement !== patch.qtiEnforcement) {
141
+ this.qtiEnforcement = patch.qtiEnforcement;
142
+ qtiChanged = true;
143
+ }
144
+ }
145
+ if (changed || qtiChanged) {
146
+ this.emit({
147
+ reason: qtiChanged && !changed ? "qti-enforcement" : "inputs",
148
+ inputs: this.snapshotInputs(),
149
+ });
150
+ }
151
+ }
152
+ registerPolicySource(source) {
153
+ this.assertNotDisposed();
154
+ this.customSources.push(source);
155
+ this.emit({
156
+ reason: "policy-source-added",
157
+ inputs: this.snapshotInputs(),
158
+ });
159
+ return () => {
160
+ const idx = this.customSources.indexOf(source);
161
+ if (idx !== -1) {
162
+ this.customSources.splice(idx, 1);
163
+ if (!this.disposed) {
164
+ this.emit({
165
+ reason: "policy-source-removed",
166
+ inputs: this.snapshotInputs(),
167
+ });
168
+ }
169
+ }
170
+ };
171
+ }
172
+ onPolicyChange(listener) {
173
+ this.listeners.add(listener);
174
+ return () => {
175
+ this.listeners.delete(listener);
176
+ };
177
+ }
178
+ getInputs() {
179
+ return this.snapshotInputs();
180
+ }
181
+ dispose() {
182
+ if (this.disposed)
183
+ return;
184
+ this.disposed = true;
185
+ this.emit({
186
+ reason: "disposed",
187
+ inputs: this.snapshotInputs(),
188
+ });
189
+ this.listeners.clear();
190
+ this.customSources.length = 0;
191
+ }
192
+ snapshotInputs() {
193
+ return Object.freeze({
194
+ tools: this.tools,
195
+ assessment: this.assessment,
196
+ currentItemRef: this.currentItemRef,
197
+ qtiEnforcement: this.qtiEnforcement,
198
+ });
199
+ }
200
+ emit(event) {
201
+ for (const listener of Array.from(this.listeners)) {
202
+ try {
203
+ listener(event);
204
+ }
205
+ catch {
206
+ // Subscriber errors must not break the engine. Hosts that
207
+ // want error telemetry should wrap their listener.
208
+ }
209
+ }
210
+ }
211
+ assertNotDisposed() {
212
+ if (this.disposed) {
213
+ throw new Error("ToolPolicyEngine has been disposed.");
214
+ }
215
+ }
216
+ }
217
+ //# sourceMappingURL=ToolPolicyEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolPolicyEngine.js","sourceRoot":"","sources":["../../../src/policy/core/ToolPolicyEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Compose-decision pipeline (M8 — see `.cursor/plans/m8-design.md` § 3).
3
+ *
4
+ * Pure function: given a decision request, the host's tools config,
5
+ * an optional QTI source, and the registered custom sources, returns
6
+ * a `ToolPolicyDecision`. The function performs no I/O, holds no
7
+ * mutable state, and never reaches into Svelte / DOM — that is the
8
+ * `ToolPolicyEngine` class's job.
9
+ *
10
+ * The six steps below mirror the design doc exactly. The tests in
11
+ * `tests/policy/compose-decision.test.ts` lock the orchestration in.
12
+ */
13
+ import type { AssessmentEntity, AssessmentItemRef } from "@pie-players/pie-players-shared/types";
14
+ import { type CanonicalToolsConfig } from "../../services/tools-config-normalizer.js";
15
+ import type { ToolPolicyDecision, ToolPolicyDecisionRequest } from "./decision-types.js";
16
+ import type { PolicySource } from "./PolicySource.js";
17
+ import type { QtiPolicySource } from "../sources/QtiPolicySource.js";
18
+ export interface ComposeDecisionInputs {
19
+ request: ToolPolicyDecisionRequest;
20
+ tools: CanonicalToolsConfig;
21
+ qti: {
22
+ source: QtiPolicySource | null;
23
+ assessment?: AssessmentEntity;
24
+ currentItemRef?: AssessmentItemRef;
25
+ /**
26
+ * "on" applies the QTI 6-level precedence; "off" skips step 5
27
+ * entirely. Defaults to "on" when an assessment is present
28
+ * and the source is non-null (see M8 design Q5).
29
+ */
30
+ enforcement: "on" | "off";
31
+ };
32
+ customSources: readonly PolicySource[];
33
+ /** Stable identifier used as the provenance `contextId`. */
34
+ contextId: string;
35
+ }
36
+ export declare function composeDecision(inputs: ComposeDecisionInputs): ToolPolicyDecision;
37
+ //# sourceMappingURL=compose-decision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-decision.d.ts","sourceRoot":"","sources":["../../../src/policy/core/compose-decision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAEX,kBAAkB,EAClB,yBAAyB,EAIzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,yBAAyB,CAAC;IACnC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,GAAG,EAAE;QACJ,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;QAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;QAC9B,cAAc,CAAC,EAAE,iBAAiB,CAAC;QACnC;;;;WAIG;QACH,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;KAC1B,CAAC;IACF,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,eAAe,CAC9B,MAAM,EAAE,qBAAqB,GAC3B,kBAAkB,CAgTpB"}