@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.
- package/README.md +289 -5
- package/dist/components/ItemToolBar.custom-element.js +165 -92
- package/dist/components/PieAssessmentToolkit.custom-element.js +604 -107
- package/dist/components/SectionToolBar.custom-element.js +0 -36
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/policy/core/PolicySource.d.ts +64 -0
- package/dist/policy/core/PolicySource.d.ts.map +1 -0
- package/dist/policy/core/PolicySource.js +17 -0
- package/dist/policy/core/PolicySource.js.map +1 -0
- package/dist/policy/core/ToolPolicyEngine.d.ts +123 -0
- package/dist/policy/core/ToolPolicyEngine.d.ts.map +1 -0
- package/dist/policy/core/ToolPolicyEngine.js +217 -0
- package/dist/policy/core/ToolPolicyEngine.js.map +1 -0
- package/dist/policy/core/compose-decision.d.ts +37 -0
- package/dist/policy/core/compose-decision.d.ts.map +1 -0
- package/dist/policy/core/compose-decision.js +332 -0
- package/dist/policy/core/compose-decision.js.map +1 -0
- package/dist/policy/core/decision-types.d.ts +142 -0
- package/dist/policy/core/decision-types.d.ts.map +1 -0
- package/dist/policy/core/decision-types.js +13 -0
- package/dist/policy/core/decision-types.js.map +1 -0
- package/dist/policy/core/engine-context.d.ts +30 -0
- package/dist/policy/core/engine-context.d.ts.map +1 -0
- package/dist/policy/core/engine-context.js +28 -0
- package/dist/policy/core/engine-context.js.map +1 -0
- package/dist/policy/core/policy-source-tag.d.ts +32 -0
- package/dist/policy/core/policy-source-tag.d.ts.map +1 -0
- package/dist/policy/core/policy-source-tag.js +29 -0
- package/dist/policy/core/policy-source-tag.js.map +1 -0
- package/dist/policy/core/provenance.d.ts +163 -0
- package/dist/policy/core/provenance.d.ts.map +1 -0
- package/dist/policy/core/provenance.js +232 -0
- package/dist/policy/core/provenance.js.map +1 -0
- package/dist/policy/core/qti-inputs.d.ts +67 -0
- package/dist/policy/core/qti-inputs.d.ts.map +1 -0
- package/dist/policy/core/qti-inputs.js +139 -0
- package/dist/policy/core/qti-inputs.js.map +1 -0
- package/dist/policy/engine.d.ts +28 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +24 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/internal.d.ts +26 -0
- package/dist/policy/internal.d.ts.map +1 -0
- package/dist/policy/internal.js +26 -0
- package/dist/policy/internal.js.map +1 -0
- package/dist/policy/sources/QtiPolicySource.d.ts +146 -0
- package/dist/policy/sources/QtiPolicySource.d.ts.map +1 -0
- package/dist/policy/sources/QtiPolicySource.js +270 -0
- package/dist/policy/sources/QtiPolicySource.js.map +1 -0
- package/dist/runtime/SectionRuntimeEngine.d.ts +145 -0
- package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -1
- package/dist/runtime/SectionRuntimeEngine.js +164 -3
- package/dist/runtime/SectionRuntimeEngine.js.map +1 -1
- package/dist/runtime/adapter/SectionEngineAdapter.d.ts +144 -0
- package/dist/runtime/adapter/SectionEngineAdapter.d.ts.map +1 -0
- package/dist/runtime/adapter/SectionEngineAdapter.js +183 -0
- package/dist/runtime/adapter/SectionEngineAdapter.js.map +1 -0
- package/dist/runtime/adapter/coordinator-bridge.d.ts +93 -0
- package/dist/runtime/adapter/coordinator-bridge.d.ts.map +1 -0
- package/dist/runtime/adapter/coordinator-bridge.js +127 -0
- package/dist/runtime/adapter/coordinator-bridge.js.map +1 -0
- package/dist/runtime/adapter/dom-event-bridge.d.ts +63 -0
- package/dist/runtime/adapter/dom-event-bridge.d.ts.map +1 -0
- package/dist/runtime/adapter/dom-event-bridge.js +95 -0
- package/dist/runtime/adapter/dom-event-bridge.js.map +1 -0
- package/dist/runtime/adapter/framework-error-bridge.d.ts +37 -0
- package/dist/runtime/adapter/framework-error-bridge.d.ts.map +1 -0
- package/dist/runtime/adapter/framework-error-bridge.js +47 -0
- package/dist/runtime/adapter/framework-error-bridge.js.map +1 -0
- package/dist/runtime/adapter/instrumentation-bridge.d.ts +32 -0
- package/dist/runtime/adapter/instrumentation-bridge.d.ts.map +1 -0
- package/dist/runtime/adapter/instrumentation-bridge.js +39 -0
- package/dist/runtime/adapter/instrumentation-bridge.js.map +1 -0
- package/dist/runtime/adapter/subscriber-fanout.d.ts +35 -0
- package/dist/runtime/adapter/subscriber-fanout.d.ts.map +1 -0
- package/dist/runtime/adapter/subscriber-fanout.js +60 -0
- package/dist/runtime/adapter/subscriber-fanout.js.map +1 -0
- package/dist/runtime/core/SectionEngineCore.d.ts +52 -0
- package/dist/runtime/core/SectionEngineCore.d.ts.map +1 -0
- package/dist/runtime/core/SectionEngineCore.js +81 -0
- package/dist/runtime/core/SectionEngineCore.js.map +1 -0
- package/dist/runtime/core/cohort.d.ts +40 -0
- package/dist/runtime/core/cohort.d.ts.map +1 -0
- package/dist/runtime/core/cohort.js +49 -0
- package/dist/runtime/core/cohort.js.map +1 -0
- package/dist/runtime/core/engine-input.d.ts +114 -0
- package/dist/runtime/core/engine-input.d.ts.map +1 -0
- package/dist/runtime/core/engine-input.js +19 -0
- package/dist/runtime/core/engine-input.js.map +1 -0
- package/dist/runtime/core/engine-output.d.ts +62 -0
- package/dist/runtime/core/engine-output.d.ts.map +1 -0
- package/dist/runtime/core/engine-output.js +27 -0
- package/dist/runtime/core/engine-output.js.map +1 -0
- package/dist/runtime/core/engine-readiness.d.ts +49 -0
- package/dist/runtime/core/engine-readiness.d.ts.map +1 -0
- package/dist/runtime/core/engine-readiness.js +47 -0
- package/dist/runtime/core/engine-readiness.js.map +1 -0
- package/dist/runtime/core/engine-resolver.d.ts +172 -0
- package/dist/runtime/core/engine-resolver.d.ts.map +1 -0
- package/dist/runtime/core/engine-resolver.js +170 -0
- package/dist/runtime/core/engine-resolver.js.map +1 -0
- package/dist/runtime/core/engine-stage-derivation.d.ts +19 -0
- package/dist/runtime/core/engine-stage-derivation.d.ts.map +1 -0
- package/dist/runtime/core/engine-stage-derivation.js +30 -0
- package/dist/runtime/core/engine-stage-derivation.js.map +1 -0
- package/dist/runtime/core/engine-state.d.ts +83 -0
- package/dist/runtime/core/engine-state.d.ts.map +1 -0
- package/dist/runtime/core/engine-state.js +49 -0
- package/dist/runtime/core/engine-state.js.map +1 -0
- package/dist/runtime/core/engine-transition.d.ts +49 -0
- package/dist/runtime/core/engine-transition.d.ts.map +1 -0
- package/dist/runtime/core/engine-transition.js +261 -0
- package/dist/runtime/core/engine-transition.js.map +1 -0
- package/dist/runtime/engine-context.d.ts +40 -0
- package/dist/runtime/engine-context.d.ts.map +1 -0
- package/dist/runtime/engine-context.js +32 -0
- package/dist/runtime/engine-context.js.map +1 -0
- package/dist/runtime/engine.d.ts +24 -0
- package/dist/runtime/engine.d.ts.map +1 -0
- package/dist/runtime/engine.js +24 -0
- package/dist/runtime/engine.js.map +1 -0
- package/dist/runtime/internal.d.ts +44 -0
- package/dist/runtime/internal.d.ts.map +1 -0
- package/dist/runtime/internal.js +46 -0
- package/dist/runtime/internal.js.map +1 -0
- package/dist/runtime/runtime-id.d.ts +8 -0
- package/dist/runtime/runtime-id.d.ts.map +1 -0
- package/dist/runtime/runtime-id.js +10 -0
- package/dist/runtime/runtime-id.js.map +1 -0
- package/dist/runtime/section-runtime-engine-host-context.d.ts +74 -0
- package/dist/runtime/section-runtime-engine-host-context.d.ts.map +1 -0
- package/dist/runtime/section-runtime-engine-host-context.js +96 -0
- package/dist/runtime/section-runtime-engine-host-context.js.map +1 -0
- package/dist/runtime/stage-emit-gate.d.ts +93 -0
- package/dist/runtime/stage-emit-gate.d.ts.map +1 -0
- package/dist/runtime/stage-emit-gate.js +83 -0
- package/dist/runtime/stage-emit-gate.js.map +1 -0
- package/dist/services/ToolkitCoordinator.d.ts +280 -7
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
- package/dist/services/ToolkitCoordinator.js +412 -32
- package/dist/services/ToolkitCoordinator.js.map +1 -1
- package/dist/services/framework-error-bus.d.ts +73 -0
- package/dist/services/framework-error-bus.d.ts.map +1 -0
- package/dist/services/framework-error-bus.js +68 -0
- package/dist/services/framework-error-bus.js.map +1 -0
- package/dist/services/framework-error.d.ts +36 -1
- package/dist/services/framework-error.d.ts.map +1 -1
- package/dist/services/framework-error.js +37 -0
- package/dist/services/framework-error.js.map +1 -1
- package/dist/services/interfaces.d.ts +78 -0
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/interfaces.js.map +1 -1
- package/dist/services/section-controller-types.d.ts +20 -0
- package/dist/services/section-controller-types.d.ts.map +1 -1
- package/dist/services/tools-config-normalizer.d.ts +23 -0
- package/dist/services/tools-config-normalizer.d.ts.map +1 -1
- package/dist/services/tools-config-normalizer.js +13 -1
- package/dist/services/tools-config-normalizer.js.map +1 -1
- package/dist/tools/client.d.ts +0 -1
- package/dist/tools/client.d.ts.map +1 -1
- package/dist/tools/client.js +0 -2
- package/dist/tools/client.js.map +1 -1
- package/dist/tools/types.d.ts +0 -26
- package/dist/tools/types.d.ts.map +1 -1
- package/package.json +23 -7
- package/dist/runtime/runtime-event-guards.d.ts +0 -2
- package/dist/runtime/runtime-event-guards.d.ts.map +0 -1
- package/dist/runtime/runtime-event-guards.js +0 -4
- package/dist/runtime/runtime-event-guards.js.map +0 -1
- package/dist/tools/tool-coordinator.d.ts +0 -72
- package/dist/tools/tool-coordinator.d.ts.map +0 -1
- package/dist/tools/tool-coordinator.js +0 -194
- package/dist/tools/tool-coordinator.js.map +0 -1
- package/dist/types/events.d.ts +0 -157
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -11
- 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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAUxD,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,GAOpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,GACrB,MAAM,iCAAiC,CAAC;AA6BzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC1F,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,gEAAgE;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,EACN,cAAc,EACd,oBAAoB,EACpB,aAAa,GACb,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAOhE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AASxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAY1D,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;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EACN,8BAA8B,EAC9B,iCAAiC,GACjC,MAAM,2CAA2C,CAAC;AAOnD,OAAO,EACN,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,eAAe,GACf,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAOhE,OAAO,EACN,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,GACpB,MAAM,8BAA8B,CAAC;AACtC,mCAAmC;AACnC,OAAO,EACN,4BAA4B,EAC5B,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,GAC5B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
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"}
|