@pie-players/pie-assessment-toolkit 0.3.36 → 0.3.38
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 +0 -4
- package/dist/components/ItemToolBar.custom-element.js +6 -4
- package/dist/components/PieAssessmentToolkit.custom-element.js +34 -39
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/policy/core/PolicySource.d.ts +2 -2
- package/dist/policy/core/PolicySource.js +1 -1
- package/dist/policy/core/ToolPolicyEngine.d.ts +15 -17
- package/dist/policy/core/ToolPolicyEngine.d.ts.map +1 -1
- package/dist/policy/core/ToolPolicyEngine.js +21 -21
- package/dist/policy/core/ToolPolicyEngine.js.map +1 -1
- package/dist/policy/core/compose-decision.d.ts +5 -5
- package/dist/policy/core/compose-decision.d.ts.map +1 -1
- package/dist/policy/core/compose-decision.js +40 -38
- package/dist/policy/core/compose-decision.js.map +1 -1
- package/dist/policy/core/decision-types.d.ts +10 -10
- package/dist/policy/core/decision-types.d.ts.map +1 -1
- package/dist/policy/core/{qti-inputs.d.ts → pnp-policy-inputs.d.ts} +23 -23
- package/dist/policy/core/pnp-policy-inputs.d.ts.map +1 -0
- package/dist/policy/core/{qti-inputs.js → pnp-policy-inputs.js} +25 -25
- package/dist/policy/core/pnp-policy-inputs.js.map +1 -0
- package/dist/policy/core/policy-source-tag.d.ts +6 -6
- package/dist/policy/core/policy-source-tag.js +3 -3
- package/dist/policy/core/provenance.d.ts +11 -11
- package/dist/policy/core/provenance.d.ts.map +1 -1
- package/dist/policy/core/provenance.js +4 -4
- package/dist/policy/engine.d.ts +5 -5
- package/dist/policy/engine.d.ts.map +1 -1
- package/dist/policy/engine.js +2 -2
- package/dist/policy/internal.d.ts +4 -4
- package/dist/policy/internal.d.ts.map +1 -1
- package/dist/policy/internal.js +4 -4
- package/dist/policy/internal.js.map +1 -1
- package/dist/policy/sources/{QtiPolicySource.d.ts → PnpPolicySource.d.ts} +25 -25
- package/dist/policy/sources/PnpPolicySource.d.ts.map +1 -0
- package/dist/policy/sources/{QtiPolicySource.js → PnpPolicySource.js} +28 -27
- package/dist/policy/sources/PnpPolicySource.js.map +1 -0
- package/dist/services/I18nService.d.ts +0 -1
- package/dist/services/I18nService.d.ts.map +1 -1
- package/dist/services/I18nService.js +0 -1
- package/dist/services/I18nService.js.map +1 -1
- package/dist/services/PNPToolResolver.d.ts.map +1 -1
- package/dist/services/PNPToolResolver.js +14 -15
- package/dist/services/PNPToolResolver.js.map +1 -1
- package/dist/services/ToolkitCoordinator.d.ts +63 -50
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
- package/dist/services/ToolkitCoordinator.js +118 -74
- package/dist/services/ToolkitCoordinator.js.map +1 -1
- package/dist/services/interfaces.d.ts +24 -16
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/interfaces.js.map +1 -1
- package/dist/services/pnp-provenance.d.ts +1 -1
- package/dist/services/pnp-provenance.d.ts.map +1 -1
- package/dist/services/pnp-provenance.js +1 -0
- package/dist/services/pnp-provenance.js.map +1 -1
- package/dist/services/section-controller-types.d.ts +125 -0
- package/dist/services/section-controller-types.d.ts.map +1 -1
- package/dist/services/tools-config-normalizer.d.ts +14 -15
- package/dist/services/tools-config-normalizer.d.ts.map +1 -1
- package/dist/services/tools-config-normalizer.js +5 -5
- package/dist/services/tools-config-normalizer.js.map +1 -1
- package/package.json +7 -7
- package/dist/core/TypedEventBus.d.ts +0 -48
- package/dist/core/TypedEventBus.d.ts.map +0 -1
- package/dist/core/TypedEventBus.js +0 -63
- package/dist/core/TypedEventBus.js.map +0 -1
- package/dist/policy/core/qti-inputs.d.ts.map +0 -1
- package/dist/policy/core/qti-inputs.js.map +0 -1
- package/dist/policy/sources/QtiPolicySource.d.ts.map +0 -1
- package/dist/policy/sources/QtiPolicySource.js.map +0 -1
package/README.md
CHANGED
|
@@ -755,10 +755,6 @@ The persistence strategy works with the same `SectionControllerSessionState` sha
|
|
|
755
755
|
|
|
756
756
|
## Implementation Status
|
|
757
757
|
|
|
758
|
-
### ✅ Core Infrastructure
|
|
759
|
-
|
|
760
|
-
- **TypedEventBus**: Generic type-safe `EventTarget` wrapper exported as a building block. The toolkit's own production events are emitted via DOM `CustomEvent`s on `<pie-assessment-toolkit>` and via `ToolkitCoordinator.subscribe*` helpers, not through this bus. Hosts and downstream packages may still use it to compose their own typed event maps.
|
|
761
|
-
|
|
762
758
|
### ✅ Toolkit Services
|
|
763
759
|
|
|
764
760
|
- **ToolkitCoordinator**: ⭐ NEW - Centralized service orchestration
|
|
@@ -92,7 +92,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
92
92
|
|
|
93
93
|
// Bumped from `coordinator.onPolicyChange(...)` so the engine-driven
|
|
94
94
|
// `policyDecision` / `policyInputs` derivations rerun on input
|
|
95
|
-
// changes (`updateAssessment`, `
|
|
95
|
+
// changes (`updateAssessment`, `setPnpEnforcement`, custom source
|
|
96
96
|
// register / remove). The decision itself is computed by the
|
|
97
97
|
// coordinator's policy engine — this counter is just the reactive
|
|
98
98
|
// fanout that lets Svelte know the engine answer may have changed.
|
|
@@ -177,7 +177,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
177
177
|
// (M8 PR 3). When the toolbar is mounted under
|
|
178
178
|
// `<pie-assessment-toolkit>` the coordinator owns the engine and
|
|
179
179
|
// applies `placement → policy.allowed → policy.blocked →
|
|
180
|
-
// providers →
|
|
180
|
+
// providers → PNP/profile policy` plus any custom `PolicySource`s the host has
|
|
181
181
|
// registered. The toolbar trusts that decision verbatim — the
|
|
182
182
|
// `tools=` prop is *not* applied as a downstream filter.
|
|
183
183
|
//
|
|
@@ -191,7 +191,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
191
191
|
const policyDecision = $.derived(() => {
|
|
192
192
|
// Read `policyChangeVersion` so we re-derive whenever the
|
|
193
193
|
// coordinator emits a policy change (assessment binding,
|
|
194
|
-
//
|
|
194
|
+
// PNP enforcement override, custom source registration).
|
|
195
195
|
void $.get(policyChangeVersion);
|
|
196
196
|
|
|
197
197
|
const coord = $.get(runtimeContext)?.toolkitCoordinator;
|
|
@@ -235,7 +235,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
235
235
|
return !!($.get(effectiveItem) && config && typeof config === 'object');
|
|
236
236
|
});
|
|
237
237
|
|
|
238
|
-
//
|
|
238
|
+
// PNP/profile inputs (`assessment`, `currentItemRef`) live on the
|
|
239
239
|
// coordinator after M8 PR 2; the toolbar reads them through
|
|
240
240
|
// `getPolicyInputs()` so it can build the correct Pass-2 context
|
|
241
241
|
// without re-binding props. Standalone (no-coordinator) usage
|
|
@@ -1121,6 +1121,8 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
1121
1121
|
if (shellConfig?.draggable !== false) {
|
|
1122
1122
|
controlsEl.appendChild(createShellControlButton('Move tool left', '←', () => moveBy(-24, 0)));
|
|
1123
1123
|
controlsEl.appendChild(createShellControlButton('Move tool right', '→', () => moveBy(24, 0)));
|
|
1124
|
+
controlsEl.appendChild(createShellControlButton('Move tool up', '↑', () => moveBy(0, -24)));
|
|
1125
|
+
controlsEl.appendChild(createShellControlButton('Move tool down', '↓', () => moveBy(0, 24)));
|
|
1124
1126
|
}
|
|
1125
1127
|
|
|
1126
1128
|
if (shellConfig?.resizable !== false) {
|
|
@@ -128,16 +128,15 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
128
128
|
onStageChange = $.prop($$props, 'onStageChange', 7, null),
|
|
129
129
|
// M8 PR 2 — additive Tool Policy Engine inputs. See the
|
|
130
130
|
// `<svelte:options>` props block above for the rationale.
|
|
131
|
-
// `
|
|
132
|
-
// the coordinator infers the effective mode from
|
|
131
|
+
// `pnpEnforcement` accepts `"on"`, `"off"`, or `null` (auto —
|
|
132
|
+
// the coordinator infers the effective mode from PNP/profile material
|
|
133
133
|
// on the bound `assessment` / `currentItemRef`). Embedded
|
|
134
134
|
// under `<pie-section-player-*>` the same override flows via
|
|
135
|
-
// `runtime.tools.
|
|
136
|
-
//
|
|
137
|
-
// so both entry points converge on the same coordinator call.
|
|
135
|
+
// `runtime.tools.pnpEnforcement`; both entry points converge on
|
|
136
|
+
// the same coordinator call.
|
|
138
137
|
assessment = $.prop($$props, 'assessment', 7, null),
|
|
139
138
|
currentItemRef = $.prop($$props, 'currentItemRef', 7, null),
|
|
140
|
-
|
|
139
|
+
pnpEnforcement = $.prop($$props, 'pnpEnforcement', 7, null),
|
|
141
140
|
isolation = $.prop($$props, 'isolation', 7, "inherit");
|
|
142
141
|
|
|
143
142
|
let anchor = $.state(null);
|
|
@@ -615,34 +614,32 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
615
614
|
].join("|");
|
|
616
615
|
}
|
|
617
616
|
|
|
618
|
-
// Coerce the public
|
|
619
|
-
// into the engine's `
|
|
617
|
+
// Coerce the public PNP enforcement CE attribute (string or null)
|
|
618
|
+
// into the engine's `PnpEnforcementMode | null` contract. Anything
|
|
620
619
|
// outside the canonical "on" / "off" set — typos like "ON",
|
|
621
620
|
// missing-attribute artifacts like "" or "null" strings — collapses
|
|
622
621
|
// to `null` (auto-mode) instead of silently degrading inside the
|
|
623
|
-
// engine. This is the single canonical entry point for the prop
|
|
624
|
-
|
|
625
|
-
// through it.
|
|
626
|
-
function coerceQtiEnforcement(value) {
|
|
622
|
+
// engine. This is the single canonical entry point for the prop.
|
|
623
|
+
function coercePnpEnforcement(value) {
|
|
627
624
|
return value === "on" || value === "off" ? value : null;
|
|
628
625
|
}
|
|
629
626
|
|
|
630
627
|
// Resolve the effective override that flows into the coordinator.
|
|
631
|
-
// The explicit `
|
|
632
|
-
// over `tools.
|
|
633
|
-
//
|
|
634
|
-
//
|
|
635
|
-
// {@link resolveDefaultQtiEnforcement} helper runs on the bound
|
|
628
|
+
// The explicit `pnp-enforcement` attribute (standalone path) wins
|
|
629
|
+
// over `tools.pnpEnforcement` (embedded path via
|
|
630
|
+
// runtime tools config); all fall back to `null` (auto-mode) so the coordinator's
|
|
631
|
+
// {@link resolveDefaultPnpEnforcement} helper runs on the bound
|
|
636
632
|
// assessment / item ref.
|
|
637
|
-
function
|
|
638
|
-
const explicitMode =
|
|
633
|
+
function resolvePnpEnforcementInput(explicitPnp, toolsConfig) {
|
|
634
|
+
const explicitMode = coercePnpEnforcement(explicitPnp);
|
|
639
635
|
|
|
640
636
|
if (explicitMode) return explicitMode;
|
|
641
637
|
|
|
642
638
|
if (toolsConfig && typeof toolsConfig === "object") {
|
|
643
|
-
const
|
|
639
|
+
const toolConfig = toolsConfig;
|
|
640
|
+
const candidate = toolConfig.pnpEnforcement;
|
|
644
641
|
|
|
645
|
-
return
|
|
642
|
+
return coercePnpEnforcement(typeof candidate === "string" ? candidate : null);
|
|
646
643
|
}
|
|
647
644
|
|
|
648
645
|
return null;
|
|
@@ -995,9 +992,9 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
995
992
|
});
|
|
996
993
|
|
|
997
994
|
// M8 — push Tool Policy Engine inputs (`assessment`,
|
|
998
|
-
// `currentItemRef`, `
|
|
995
|
+
// `currentItemRef`, `pnpEnforcement`) into the toolkit-owned
|
|
999
996
|
// coordinator whenever they change. The coordinator's
|
|
1000
|
-
// `updateAssessment` / `updateCurrentItemRef` / `
|
|
997
|
+
// `updateAssessment` / `updateCurrentItemRef` / `setPnpEnforcement`
|
|
1001
998
|
// forwards land on `ToolPolicyEngine.updateInputs`, which value-
|
|
1002
999
|
// diffs each key with `Object.is` and only emits an `inputs` event
|
|
1003
1000
|
// on real changes — so re-running this effect on coordinator swap
|
|
@@ -1005,13 +1002,11 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
1005
1002
|
// explicitly and then run the side effect inside `untrack(...)`
|
|
1006
1003
|
// per `.cursor/rules/svelte-subscription-safety.mdc`.
|
|
1007
1004
|
//
|
|
1008
|
-
// `
|
|
1005
|
+
// `pnpEnforcement` resolves through {@link resolvePnpEnforcementInput}
|
|
1009
1006
|
// so the embedded path (`<pie-section-player-*>` setting
|
|
1010
|
-
// `runtime.tools.
|
|
1011
|
-
// explicit `
|
|
1012
|
-
// converge on a single coordinator call.
|
|
1013
|
-
// over `tools.qtiEnforcement` so a host can pin a stricter mode
|
|
1014
|
-
// without rewriting the runtime overlay.
|
|
1007
|
+
// `runtime.tools.pnpEnforcement`) and the standalone path (the
|
|
1008
|
+
// explicit `pnp-enforcement` attribute on `<pie-assessment-toolkit>`)
|
|
1009
|
+
// converge on a single coordinator call.
|
|
1015
1010
|
//
|
|
1016
1011
|
// CRITICAL: only push when the toolkit *owns* the coordinator
|
|
1017
1012
|
// (i.e. `effectiveCoordinator === ownedCoordinator`). When the
|
|
@@ -1024,7 +1019,7 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
1024
1019
|
$.user_effect(() => {
|
|
1025
1020
|
void assessment();
|
|
1026
1021
|
void currentItemRef();
|
|
1027
|
-
void
|
|
1022
|
+
void pnpEnforcement();
|
|
1028
1023
|
void tools();
|
|
1029
1024
|
|
|
1030
1025
|
const coord = $.get(effectiveCoordinator);
|
|
@@ -1035,15 +1030,15 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
1035
1030
|
if (coord !== $.get(ownedCoordinator)) return;
|
|
1036
1031
|
|
|
1037
1032
|
untrack(() => {
|
|
1038
|
-
// Apply order matters: `
|
|
1033
|
+
// Apply order matters: `setPnpEnforcement` lands the override
|
|
1039
1034
|
// (or clears it) FIRST so `updateAssessment(...)`'s
|
|
1040
1035
|
// auto-promote path sees the final override and doesn't
|
|
1041
1036
|
// briefly resolve to "on" (when binding an assessment with
|
|
1042
|
-
// `
|
|
1043
|
-
// assessment with `
|
|
1037
|
+
// `pnpEnforcement="off"`) or "off" (when clearing an
|
|
1038
|
+
// assessment with `pnpEnforcement="on"`). Without this
|
|
1044
1039
|
// ordering we would emit a transient wrong-state policy
|
|
1045
1040
|
// event between the calls.
|
|
1046
|
-
coord.
|
|
1041
|
+
coord.setPnpEnforcement(resolvePnpEnforcementInput(pnpEnforcement(), tools()));
|
|
1047
1042
|
|
|
1048
1043
|
coord.updateAssessment(assessment());
|
|
1049
1044
|
coord.updateCurrentItemRef(currentItemRef());
|
|
@@ -1643,12 +1638,12 @@ export default function PieAssessmentToolkit($$anchor, $$props) {
|
|
|
1643
1638
|
$.flush();
|
|
1644
1639
|
},
|
|
1645
1640
|
|
|
1646
|
-
get
|
|
1647
|
-
return
|
|
1641
|
+
get pnpEnforcement() {
|
|
1642
|
+
return pnpEnforcement();
|
|
1648
1643
|
},
|
|
1649
1644
|
|
|
1650
|
-
set
|
|
1651
|
-
|
|
1645
|
+
set pnpEnforcement($$value) {
|
|
1646
|
+
pnpEnforcement($$value);
|
|
1652
1647
|
$.flush();
|
|
1653
1648
|
},
|
|
1654
1649
|
|
|
@@ -1741,7 +1736,7 @@ __pieDefineSafely('pie-assessment-toolkit', $.create_custom_element(
|
|
|
1741
1736
|
onStageChange: { type: 'Object' },
|
|
1742
1737
|
assessment: { type: 'Object' },
|
|
1743
1738
|
currentItemRef: { type: 'Object' },
|
|
1744
|
-
|
|
1739
|
+
pnpEnforcement: { attribute: 'pnp-enforcement', type: 'String' },
|
|
1745
1740
|
isolation: { type: 'Object' }
|
|
1746
1741
|
},
|
|
1747
1742
|
['default'],
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
|
-
export { TypedEventBus } from "./core/TypedEventBus.js";
|
|
10
9
|
export type { AssessmentToolkitHostRuntimeContext, AssessmentToolkitRegionScopeContext, AssessmentToolkitRuntimeContext, AssessmentToolkitShellContext, ItemPlayerConfig, ItemPlayerType, ShellContextKind, } from "./context/assessment-toolkit-context.js";
|
|
11
10
|
export { assessmentToolkitHostRuntimeContext, assessmentToolkitRegionScopeContext, assessmentToolkitRuntimeContext, assessmentToolkitShellContext, } from "./context/assessment-toolkit-context.js";
|
|
12
11
|
export { connectAssessmentToolkitHostRuntimeContext, connectAssessmentToolkitRegionScopeContext, connectAssessmentToolkitRuntimeContext, connectAssessmentToolkitShellContext, } from "./context/runtime-context-consumer.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,10 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// Core Infrastructure
|
|
11
|
-
// ============================================================================
|
|
12
|
-
export { TypedEventBus } from "./core/TypedEventBus.js";
|
|
13
9
|
export { assessmentToolkitHostRuntimeContext, assessmentToolkitRegionScopeContext, assessmentToolkitRuntimeContext, assessmentToolkitShellContext, } from "./context/assessment-toolkit-context.js";
|
|
14
10
|
export { connectAssessmentToolkitHostRuntimeContext, connectAssessmentToolkitRegionScopeContext, connectAssessmentToolkitRuntimeContext, connectAssessmentToolkitShellContext, } from "./context/runtime-context-consumer.js";
|
|
15
11
|
export { PIE_INTERNAL_CONTENT_LOADED_EVENT, PIE_INTERNAL_ITEM_SESSION_CHANGED_EVENT, PIE_INTERNAL_ITEM_PLAYER_ERROR_EVENT, PIE_ITEM_SESSION_CHANGED_EVENT, PIE_REGISTER_EVENT, PIE_UNREGISTER_EVENT, } from "./runtime/registration-events.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,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;AAiC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAatE,OAAO,EACN,8BAA8B,EAC9B,uCAAuC,EACvC,yBAAyB,EACzB,qBAAqB,GACrB,MAAM,+BAA+B,CAAC;AAiBvC,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;AAK9C,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GACf,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACN,6BAA6B,GAE7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAMxE,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,GACzB,MAAM,kCAAkC,CAAC;AAmB1C,OAAO,EACN,qBAAqB,EACrB,cAAc,EACd,aAAa,GACb,MAAM,kBAAkB,CAAC;AAa1B,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;AAOlC,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,gCAAgC,CAAC;AAQxC,OAAO,EACN,8BAA8B,EAC9B,+CAA+C,EAC/C,+BAA+B,EAC/B,oBAAoB,GACpB,MAAM,wDAAwD,CAAC;AAEhE,qEAAqE;AAErE,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,4FAA4F;AAC5F,8FAA8F;AAC9F,qGAAqG"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `.cursor/plans/m8-design.md` § 5).
|
|
4
4
|
*
|
|
5
5
|
* Custom sources run in step 6 of the composition pipeline — *after*
|
|
6
|
-
* placement membership, provider veto, host policy, and
|
|
6
|
+
* placement membership, provider veto, host policy, and PNP/profile gates.
|
|
7
7
|
* That ordering is deliberate: custom rules can only further *narrow*
|
|
8
8
|
* the candidate set or add advisory provenance entries; they cannot
|
|
9
9
|
* promote a tool that the host already removed.
|
|
@@ -36,7 +36,7 @@ export interface PolicySourceProvenanceEntry {
|
|
|
36
36
|
* Custom precedence value used for the decision log. Defaults to
|
|
37
37
|
* `100 + sourceIndex` (engine-assigned) when `undefined`. Sources
|
|
38
38
|
* MAY override only if they know what they are doing — overriding
|
|
39
|
-
* to a value `<= 6` lets the source masquerade as a
|
|
39
|
+
* to a value `<= 6` lets the source masquerade as a PNP/profile rule and
|
|
40
40
|
* is generally a bug.
|
|
41
41
|
*/
|
|
42
42
|
precedence?: number;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `.cursor/plans/m8-design.md` § 5).
|
|
4
4
|
*
|
|
5
5
|
* Custom sources run in step 6 of the composition pipeline — *after*
|
|
6
|
-
* placement membership, provider veto, host policy, and
|
|
6
|
+
* placement membership, provider veto, host policy, and PNP/profile gates.
|
|
7
7
|
* That ordering is deliberate: custom rules can only further *narrow*
|
|
8
8
|
* the candidate set or add advisory provenance entries; they cannot
|
|
9
9
|
* promote a tool that the host already removed.
|
|
@@ -21,26 +21,24 @@ import type { CanonicalToolsConfig, ToolPlacementLevel } from "../../services/to
|
|
|
21
21
|
import type { ToolRegistry } from "../../services/ToolRegistry.js";
|
|
22
22
|
import type { ToolPolicyDecision, ToolPolicyDecisionRequest } from "./decision-types.js";
|
|
23
23
|
import type { PolicySource } from "./PolicySource.js";
|
|
24
|
-
export type
|
|
24
|
+
export type PnpEnforcementMode = "on" | "off";
|
|
25
25
|
export interface ToolPolicyEngineInputs {
|
|
26
26
|
tools?: CanonicalToolsConfig | null;
|
|
27
27
|
assessment?: AssessmentEntity | null;
|
|
28
28
|
currentItemRef?: AssessmentItemRef | null;
|
|
29
29
|
/**
|
|
30
|
-
* Explicit override. When omitted (or `undefined`), the engine
|
|
31
|
-
* defaults to {@link
|
|
32
|
-
* `assessment` and `currentItemRef`: `"on"` if they carry any
|
|
33
|
-
*
|
|
30
|
+
* Explicit PNP/profile override. When omitted (or `undefined`), the engine
|
|
31
|
+
* defaults to {@link resolveDefaultPnpEnforcement} over the bound
|
|
32
|
+
* `assessment` and `currentItemRef`: `"on"` if they carry any
|
|
33
|
+
* PNP/profile policy material (PNP, district policy, test
|
|
34
34
|
* administration, item-level required/restricted/parameters),
|
|
35
35
|
* `"off"` otherwise. See `.cursor/plans/m8-design.md` F2.
|
|
36
36
|
*
|
|
37
|
-
* Hosts that want to force a mode
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* override flows through `runtime.tools.qtiEnforcement` (see the
|
|
41
|
-
* M5 mirror rule).
|
|
37
|
+
* Hosts that want to force a mode pass `"on"` or `"off"`
|
|
38
|
+
* explicitly. Embedded under `<pie-section-player-*>` the preferred
|
|
39
|
+
* override flows through `runtime.tools.pnpEnforcement`.
|
|
42
40
|
*/
|
|
43
|
-
|
|
41
|
+
pnpEnforcement?: PnpEnforcementMode;
|
|
44
42
|
}
|
|
45
43
|
export interface ToolPolicyEngineArgs {
|
|
46
44
|
toolRegistry: ToolRegistry;
|
|
@@ -51,7 +49,7 @@ export interface ToolPolicyEngineArgs {
|
|
|
51
49
|
}
|
|
52
50
|
export interface ToolPolicyChangeEvent {
|
|
53
51
|
/** What changed in this update. */
|
|
54
|
-
reason: "inputs" | "policy-source-added" | "policy-source-removed" | "
|
|
52
|
+
reason: "inputs" | "policy-source-added" | "policy-source-removed" | "pnp-enforcement" | "disposed";
|
|
55
53
|
/** Snapshot of the engine's inputs after the change. */
|
|
56
54
|
inputs: Readonly<ResolvedEngineInputs>;
|
|
57
55
|
}
|
|
@@ -59,19 +57,19 @@ export interface ResolvedEngineInputs {
|
|
|
59
57
|
tools: CanonicalToolsConfig;
|
|
60
58
|
assessment: AssessmentEntity | null;
|
|
61
59
|
currentItemRef: AssessmentItemRef | null;
|
|
62
|
-
|
|
60
|
+
pnpEnforcement: PnpEnforcementMode;
|
|
63
61
|
}
|
|
64
62
|
export type ToolPolicyChangeListener = (event: ToolPolicyChangeEvent) => void;
|
|
65
63
|
export declare class ToolPolicyEngine {
|
|
66
64
|
private readonly toolRegistry;
|
|
67
65
|
private readonly contextId;
|
|
68
|
-
private readonly
|
|
66
|
+
private readonly pnpPolicySource;
|
|
69
67
|
private readonly customSources;
|
|
70
68
|
private readonly listeners;
|
|
71
69
|
private tools;
|
|
72
70
|
private assessment;
|
|
73
71
|
private currentItemRef;
|
|
74
|
-
private
|
|
72
|
+
private pnpEnforcement;
|
|
75
73
|
private disposed;
|
|
76
74
|
constructor(args: ToolPolicyEngineArgs);
|
|
77
75
|
/**
|
|
@@ -106,8 +104,8 @@ export declare class ToolPolicyEngine {
|
|
|
106
104
|
* coordinator's `getFloatingTools()` / `decideToolPolicy()` lockstep
|
|
107
105
|
* tests.
|
|
108
106
|
*
|
|
109
|
-
* `
|
|
110
|
-
* a distinct `"
|
|
107
|
+
* `pnpEnforcement` is stored on its own field and always emits with
|
|
108
|
+
* a distinct `"pnp-enforcement"` reason when no other key changed,
|
|
111
109
|
* so PR 4's auto-on flip can target that reason without a separate
|
|
112
110
|
* event channel.
|
|
113
111
|
*/
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;OAWG;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,eAAe,CAAkB;IAClD,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"}
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { normalizeToolsConfig } from "../../services/tools-config-normalizer.js";
|
|
20
20
|
import { composeDecision } from "./compose-decision.js";
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
21
|
+
import { resolveDefaultPnpEnforcement } from "./pnp-policy-inputs.js";
|
|
22
|
+
import { PnpPolicySource } from "../sources/PnpPolicySource.js";
|
|
23
23
|
const DEFAULT_TOOLS = normalizeToolsConfig({
|
|
24
24
|
policy: { allowed: [], blocked: [] },
|
|
25
25
|
placement: { section: [], item: [], passage: [] },
|
|
@@ -28,26 +28,26 @@ const DEFAULT_TOOLS = normalizeToolsConfig({
|
|
|
28
28
|
export class ToolPolicyEngine {
|
|
29
29
|
toolRegistry;
|
|
30
30
|
contextId;
|
|
31
|
-
|
|
31
|
+
pnpPolicySource;
|
|
32
32
|
customSources;
|
|
33
33
|
listeners = new Set();
|
|
34
34
|
tools;
|
|
35
35
|
assessment;
|
|
36
36
|
currentItemRef;
|
|
37
|
-
|
|
37
|
+
pnpEnforcement;
|
|
38
38
|
disposed = false;
|
|
39
39
|
constructor(args) {
|
|
40
40
|
this.toolRegistry = args.toolRegistry;
|
|
41
41
|
this.contextId = args.contextId ?? "tool-policy";
|
|
42
|
-
this.
|
|
42
|
+
this.pnpPolicySource = new PnpPolicySource(this.toolRegistry);
|
|
43
43
|
this.customSources = args.customSources ? [...args.customSources] : [];
|
|
44
44
|
const inputs = args.inputs ?? {};
|
|
45
45
|
this.tools = inputs.tools ?? DEFAULT_TOOLS;
|
|
46
46
|
this.assessment = inputs.assessment ?? null;
|
|
47
47
|
this.currentItemRef = inputs.currentItemRef ?? null;
|
|
48
|
-
this.
|
|
49
|
-
inputs.
|
|
50
|
-
|
|
48
|
+
this.pnpEnforcement =
|
|
49
|
+
inputs.pnpEnforcement ??
|
|
50
|
+
resolveDefaultPnpEnforcement({
|
|
51
51
|
assessment: this.assessment,
|
|
52
52
|
currentItemRef: this.currentItemRef,
|
|
53
53
|
});
|
|
@@ -75,11 +75,11 @@ export class ToolPolicyEngine {
|
|
|
75
75
|
return composeDecision({
|
|
76
76
|
request,
|
|
77
77
|
tools: this.tools,
|
|
78
|
-
|
|
79
|
-
source: this.
|
|
78
|
+
pnpPolicy: {
|
|
79
|
+
source: this.pnpPolicySource,
|
|
80
80
|
assessment: this.assessment ?? undefined,
|
|
81
81
|
currentItemRef: this.currentItemRef ?? undefined,
|
|
82
|
-
enforcement: this.
|
|
82
|
+
enforcement: this.pnpEnforcement,
|
|
83
83
|
},
|
|
84
84
|
customSources: this.customSources,
|
|
85
85
|
contextId: requestContextId,
|
|
@@ -106,15 +106,15 @@ export class ToolPolicyEngine {
|
|
|
106
106
|
* coordinator's `getFloatingTools()` / `decideToolPolicy()` lockstep
|
|
107
107
|
* tests.
|
|
108
108
|
*
|
|
109
|
-
* `
|
|
110
|
-
* a distinct `"
|
|
109
|
+
* `pnpEnforcement` is stored on its own field and always emits with
|
|
110
|
+
* a distinct `"pnp-enforcement"` reason when no other key changed,
|
|
111
111
|
* so PR 4's auto-on flip can target that reason without a separate
|
|
112
112
|
* event channel.
|
|
113
113
|
*/
|
|
114
114
|
updateInputs(patch) {
|
|
115
115
|
this.assertNotDisposed();
|
|
116
116
|
let changed = false;
|
|
117
|
-
let
|
|
117
|
+
let pnpChanged = false;
|
|
118
118
|
if ("tools" in patch) {
|
|
119
119
|
const next = patch.tools ?? DEFAULT_TOOLS;
|
|
120
120
|
if (!Object.is(this.tools, next)) {
|
|
@@ -136,15 +136,15 @@ export class ToolPolicyEngine {
|
|
|
136
136
|
changed = true;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
if ("
|
|
140
|
-
if (this.
|
|
141
|
-
this.
|
|
142
|
-
|
|
139
|
+
if ("pnpEnforcement" in patch && patch.pnpEnforcement) {
|
|
140
|
+
if (this.pnpEnforcement !== patch.pnpEnforcement) {
|
|
141
|
+
this.pnpEnforcement = patch.pnpEnforcement;
|
|
142
|
+
pnpChanged = true;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
if (changed ||
|
|
145
|
+
if (changed || pnpChanged) {
|
|
146
146
|
this.emit({
|
|
147
|
-
reason:
|
|
147
|
+
reason: pnpChanged && !changed ? "pnp-enforcement" : "inputs",
|
|
148
148
|
inputs: this.snapshotInputs(),
|
|
149
149
|
});
|
|
150
150
|
}
|
|
@@ -194,7 +194,7 @@ export class ToolPolicyEngine {
|
|
|
194
194
|
tools: this.tools,
|
|
195
195
|
assessment: this.assessment,
|
|
196
196
|
currentItemRef: this.currentItemRef,
|
|
197
|
-
|
|
197
|
+
pnpEnforcement: this.pnpEnforcement,
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
200
|
emit(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolPolicyEngine.js","sourceRoot":"","sources":["../../../src/policy/core/ToolPolicyEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAQjF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ToolPolicyEngine.js","sourceRoot":"","sources":["../../../src/policy/core/ToolPolicyEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Compose-decision pipeline (M8 — see `.cursor/plans/m8-design.md` § 3).
|
|
3
3
|
*
|
|
4
4
|
* Pure function: given a decision request, the host's tools config,
|
|
5
|
-
* an optional
|
|
5
|
+
* an optional PNP policy source, and the registered custom sources, returns
|
|
6
6
|
* a `ToolPolicyDecision`. The function performs no I/O, holds no
|
|
7
7
|
* mutable state, and never reaches into Svelte / DOM — that is the
|
|
8
8
|
* `ToolPolicyEngine` class's job.
|
|
@@ -14,16 +14,16 @@ import type { AssessmentEntity, AssessmentItemRef } from "@pie-players/pie-playe
|
|
|
14
14
|
import { type CanonicalToolsConfig } from "../../services/tools-config-normalizer.js";
|
|
15
15
|
import type { ToolPolicyDecision, ToolPolicyDecisionRequest } from "./decision-types.js";
|
|
16
16
|
import type { PolicySource } from "./PolicySource.js";
|
|
17
|
-
import type {
|
|
17
|
+
import type { PnpPolicySource } from "../sources/PnpPolicySource.js";
|
|
18
18
|
export interface ComposeDecisionInputs {
|
|
19
19
|
request: ToolPolicyDecisionRequest;
|
|
20
20
|
tools: CanonicalToolsConfig;
|
|
21
|
-
|
|
22
|
-
source:
|
|
21
|
+
pnpPolicy: {
|
|
22
|
+
source: PnpPolicySource | null;
|
|
23
23
|
assessment?: AssessmentEntity;
|
|
24
24
|
currentItemRef?: AssessmentItemRef;
|
|
25
25
|
/**
|
|
26
|
-
* "on" applies the
|
|
26
|
+
* "on" applies the PNP/profile precedence rules; "off" skips step 5
|
|
27
27
|
* entirely. Defaults to "on" when an assessment is present
|
|
28
28
|
* and the source is non-null (see M8 design Q5).
|
|
29
29
|
*/
|
|
@@ -1 +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,
|
|
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,SAAS,EAAE;QACV,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,CAoTpB"}
|