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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +159 -1
  2. package/dist/index.d.ts +16 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +9 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/player/AssessmentPlayer.d.ts +9 -0
  7. package/dist/player/AssessmentPlayer.d.ts.map +1 -1
  8. package/dist/player/AssessmentPlayer.js +13 -4
  9. package/dist/player/AssessmentPlayer.js.map +1 -1
  10. package/dist/services/AnnotationToolbarConfig.d.ts +134 -0
  11. package/dist/services/AnnotationToolbarConfig.d.ts.map +1 -0
  12. package/dist/services/AnnotationToolbarConfig.js +100 -0
  13. package/dist/services/AnnotationToolbarConfig.js.map +1 -0
  14. package/dist/services/HighlightCoordinator.d.ts +23 -10
  15. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  16. package/dist/services/HighlightCoordinator.js +87 -40
  17. package/dist/services/HighlightCoordinator.js.map +1 -1
  18. package/dist/services/PNPToolResolver.d.ts +171 -15
  19. package/dist/services/PNPToolResolver.d.ts.map +1 -1
  20. package/dist/services/PNPToolResolver.js +324 -32
  21. package/dist/services/PNPToolResolver.js.map +1 -1
  22. package/dist/services/RangeSerializer.d.ts +119 -0
  23. package/dist/services/RangeSerializer.d.ts.map +1 -0
  24. package/dist/services/RangeSerializer.js +199 -0
  25. package/dist/services/RangeSerializer.js.map +1 -0
  26. package/dist/services/TTSService.d.ts +4 -1
  27. package/dist/services/TTSService.d.ts.map +1 -1
  28. package/dist/services/TTSService.js +58 -3
  29. package/dist/services/TTSService.js.map +1 -1
  30. package/dist/services/ToolRegistry.d.ts +225 -0
  31. package/dist/services/ToolRegistry.d.ts.map +1 -0
  32. package/dist/services/ToolRegistry.js +248 -0
  33. package/dist/services/ToolRegistry.js.map +1 -0
  34. package/dist/services/ToolkitCoordinator.d.ts +22 -0
  35. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  36. package/dist/services/ToolkitCoordinator.js +44 -0
  37. package/dist/services/ToolkitCoordinator.js.map +1 -1
  38. package/dist/services/createDefaultToolRegistry.d.ts +72 -0
  39. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -0
  40. package/dist/services/createDefaultToolRegistry.js +147 -0
  41. package/dist/services/createDefaultToolRegistry.js.map +1 -0
  42. package/dist/services/interfaces.d.ts +8 -0
  43. package/dist/services/interfaces.d.ts.map +1 -1
  44. package/dist/services/interfaces.js.map +1 -1
  45. package/dist/services/pnp-provenance.d.ts +167 -0
  46. package/dist/services/pnp-provenance.d.ts.map +1 -0
  47. package/dist/services/pnp-provenance.js +230 -0
  48. package/dist/services/pnp-provenance.js.map +1 -0
  49. package/dist/services/pnp-standard-features.d.ts +240 -0
  50. package/dist/services/pnp-standard-features.d.ts.map +1 -0
  51. package/dist/services/pnp-standard-features.js +342 -0
  52. package/dist/services/pnp-standard-features.js.map +1 -0
  53. package/dist/services/tool-context.d.ts +150 -0
  54. package/dist/services/tool-context.d.ts.map +1 -0
  55. package/dist/services/tool-context.js +157 -0
  56. package/dist/services/tool-context.js.map +1 -0
  57. package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -1
  58. package/dist/services/tool-providers/ToolProviderRegistry.js +7 -7
  59. package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -1
  60. package/dist/tools/registrations/accessibility-tools.d.ts +43 -0
  61. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -0
  62. package/dist/tools/registrations/accessibility-tools.js +230 -0
  63. package/dist/tools/registrations/accessibility-tools.js.map +1 -0
  64. package/dist/tools/registrations/calculator.d.ts +21 -0
  65. package/dist/tools/registrations/calculator.d.ts.map +1 -0
  66. package/dist/tools/registrations/calculator.js +98 -0
  67. package/dist/tools/registrations/calculator.js.map +1 -0
  68. package/dist/tools/registrations/interaction-tools.d.ts +28 -0
  69. package/dist/tools/registrations/interaction-tools.d.ts.map +1 -0
  70. package/dist/tools/registrations/interaction-tools.js +124 -0
  71. package/dist/tools/registrations/interaction-tools.js.map +1 -0
  72. package/dist/tools/registrations/measurement-tools.d.ts +25 -0
  73. package/dist/tools/registrations/measurement-tools.d.ts.map +1 -0
  74. package/dist/tools/registrations/measurement-tools.js +112 -0
  75. package/dist/tools/registrations/measurement-tools.js.map +1 -0
  76. package/dist/tools/registrations/subject-specific-tools.d.ts +28 -0
  77. package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -0
  78. package/dist/tools/registrations/subject-specific-tools.js +118 -0
  79. package/dist/tools/registrations/subject-specific-tools.js.map +1 -0
  80. package/dist/tools/registrations/tts.d.ts +20 -0
  81. package/dist/tools/registrations/tts.d.ts.map +1 -0
  82. package/dist/tools/registrations/tts.js +86 -0
  83. package/dist/tools/registrations/tts.js.map +1 -0
  84. package/dist/tools/tool-tag-map.d.ts +24 -0
  85. package/dist/tools/tool-tag-map.d.ts.map +1 -0
  86. package/dist/tools/tool-tag-map.js +38 -0
  87. package/dist/tools/tool-tag-map.js.map +1 -0
  88. package/package.json +15 -7
  89. package/src/README.md +25 -11
  90. package/src/components/PNPProfileTester.example.svelte +188 -0
  91. package/src/components/PNPProfileTester.svelte +397 -0
  92. package/src/components/PNPProvenanceViewer.svelte +260 -0
  93. package/src/components/QuestionToolBar.svelte +160 -83
  94. package/src/components/ToolButton.svelte +146 -0
  95. package/src/components/ToolButtonGroup.svelte +109 -0
  96. package/src/reference-layout/ReferenceLayout.svelte +5 -13
  97. package/dist/services/PNPMapper.d.ts +0 -71
  98. package/dist/services/PNPMapper.d.ts.map +0 -1
  99. package/dist/services/PNPMapper.js +0 -98
  100. package/dist/services/PNPMapper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/services/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EACX,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EACX,YAAY,EACZ,uBAAuB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAEtC;;OAEG;IACH,eAAe,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,cAAc,CACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,GACnB,IAAI,CAAC;IAER;;OAEG;IACH,gBAAgB,CACf,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,IAAI,CAAC;IAER;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE5C;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,YAAY,CACX,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,KAAK,CAAC,EAAE,WAAW,GACjB,IAAI,CAAC;IAER;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAE1D;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAEhD;;OAEG;IACH,eAAe,IAAI,SAAS,EAAE,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,UAAU,CACT,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,KAAK,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,IAAI,aAAa,CAAC;IAE1B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAE1E;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAE3E;;OAEG;IACH,eAAe,IAAI,uBAAuB,GAAG,IAAI,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAElE;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI,CAAC;CACjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC7C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,kBAAkB,IAAI,MAAM,CAAC;IAE7B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,iBAAiB,IAAI,IAAI,CAAC;IAE1B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,cAAc,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC3B,eAAe,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAEzD;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,aAAa,IAAI,iBAAiB,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAElE;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAE/C;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,kBAAkB,CACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GACf,MAAM,CAAC;IAEV;;OAEG;IACH,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG;QAC9C,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IAET;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAEpE;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAEnE;;OAEG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9D;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAEnD;;OAEG;IACH,SAAS,CACR,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,GACtD,MAAM,IAAI,CAAC;IAEd;;OAEG;IACH,gBAAgB,CACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,GAC5D,IAAI,CAAC;IAER;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,6BAA6B,CAAC;IAExD;;OAEG;IACH,gBAAgB,IAAI;QACnB,UAAU,EAAE,WAAW,CAAC;QACxB,eAAe,EAAE,gBAAgB,CAAC;QAClC,oBAAoB,EAAE,qBAAqB,CAAC;QAC5C,qBAAqB,EAAE,sBAAsB,CAAC;QAC9C,eAAe,EAAE,6BAA6B,CAAC;KAC/C,CAAC;IAEF;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;IAE1C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CACrD"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/services/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EACX,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EACX,YAAY,EACZ,uBAAuB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAEtC;;OAEG;IACH,eAAe,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,cAAc,CACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,GACnB,IAAI,CAAC;IAER;;OAEG;IACH,gBAAgB,CACf,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,IAAI,CAAC;IAER;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAE5C;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,YAAY,CACX,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,KAAK,CAAC,EAAE,WAAW,GACjB,IAAI,CAAC;IAER;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEnC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAE1D;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAEhD;;OAEG;IACH,eAAe,IAAI,SAAS,EAAE,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,UAAU,CACT,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,KAAK,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,IAAI,aAAa,CAAC;IAE1B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAE1E;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAE3E;;OAEG;IACH,eAAe,IAAI,uBAAuB,GAAG,IAAI,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAElE;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI,CAAC;CACjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC7C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3C;;OAEG;IACH,kBAAkB,IAAI,MAAM,CAAC;IAE7B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,iBAAiB,IAAI,IAAI,CAAC;IAE1B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,cAAc,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC3B,eAAe,GAAG,IAAI,CAAC;IAE1B;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAEzD;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,aAAa,IAAI,iBAAiB,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAElE;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAE/C;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,kBAAkB,CACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GACf,MAAM,CAAC;IAEV;;OAEG;IACH,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG;QAC9C,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IAET;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAEpE;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAEnE;;OAEG;IACH,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9D;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAEnD;;OAEG;IACH,SAAS,CACR,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,GACtD,MAAM,IAAI,CAAC;IAEd;;OAEG;IACH,gBAAgB,CACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,GAC5D,IAAI,CAAC;IAER;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,6BAA6B,CAAC;IAExD;;OAEG;IACH,gBAAgB,IAAI;QACnB,UAAU,EAAE,WAAW,CAAC;QACxB,eAAe,EAAE,gBAAgB,CAAC;QAClC,oBAAoB,EAAE,qBAAqB,CAAC;QAC5C,qBAAqB,EAAE,sBAAsB,CAAC;QAC9C,eAAe,EAAE,6BAA6B,CAAC;KAC/C,CAAC;IAEF;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;IAE1C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CACrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/services/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;AAkfH,wEAAwE"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/services/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;AA4fH,wEAAwE"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * PNP Resolution Provenance Tracking
3
+ *
4
+ * Provides detailed tracking of how PNP profiles are resolved, including:
5
+ * - Decision steps at each precedence level
6
+ * - Sources of configuration (district, assessment, item, student)
7
+ * - Reasons for tool enablement/blocking
8
+ * - Merge operations and overrides
9
+ *
10
+ * This enables:
11
+ * - Visual explanation components for users
12
+ * - Debugging tool resolution issues
13
+ * - Compliance auditing and reporting
14
+ * - Developer troubleshooting
15
+ *
16
+ * Part of PIE Assessment Toolkit.
17
+ */
18
+ /**
19
+ * Decision made during PNP resolution
20
+ */
21
+ export interface ResolutionDecision {
22
+ /** Unique step identifier */
23
+ step: number;
24
+ /** Precedence level (1-6, lower = higher priority) */
25
+ precedence: 1 | 2 | 3 | 4 | 5 | 6;
26
+ /** Human-readable rule name */
27
+ rule: "district-block" | "test-admin-override" | "item-restriction" | "item-requirement" | "district-requirement" | "pnp-support" | "system-default";
28
+ /** Tool or feature ID being resolved */
29
+ featureId: string;
30
+ /** Decision outcome */
31
+ action: "block" | "enable" | "skip";
32
+ /** Where the decision came from */
33
+ source: {
34
+ type: "organization" | "assessment" | "section" | "item" | "student" | "system";
35
+ id?: string;
36
+ name?: string;
37
+ };
38
+ /** Why this decision was made */
39
+ reason: string;
40
+ /** Configuration value that triggered this decision */
41
+ value?: any;
42
+ /** Timestamp of decision */
43
+ timestamp: Date;
44
+ }
45
+ /**
46
+ * Complete resolution trail for a single feature
47
+ */
48
+ export interface FeatureResolutionTrail {
49
+ /** Feature ID (QTI 3.0 or tool ID) */
50
+ featureId: string;
51
+ /** Final decision */
52
+ finalState: "enabled" | "blocked" | "not-configured";
53
+ /** Winning decision (highest precedence) */
54
+ winningDecision?: ResolutionDecision;
55
+ /** All decisions considered (in precedence order) */
56
+ allDecisions: ResolutionDecision[];
57
+ /** Human-readable explanation */
58
+ explanation: string;
59
+ }
60
+ /**
61
+ * Complete provenance for an entire PNP resolution
62
+ */
63
+ export interface PNPResolutionProvenance {
64
+ /** Session or resolution context ID */
65
+ contextId: string;
66
+ /** When resolution occurred */
67
+ resolvedAt: Date;
68
+ /** All configuration sources consulted */
69
+ sources: {
70
+ organization?: {
71
+ id: string;
72
+ name: string;
73
+ pnpDefaults?: any;
74
+ };
75
+ assessment?: {
76
+ id: string;
77
+ name: string;
78
+ settings?: any;
79
+ };
80
+ section?: {
81
+ id: string;
82
+ title?: string;
83
+ settings?: any;
84
+ };
85
+ item?: {
86
+ id: string;
87
+ name?: string;
88
+ settings?: any;
89
+ };
90
+ student?: {
91
+ id: string;
92
+ pnpProfile?: any;
93
+ };
94
+ };
95
+ /** Resolution trail for each feature */
96
+ features: Map<string, FeatureResolutionTrail>;
97
+ /** All decisions in chronological order */
98
+ decisionLog: ResolutionDecision[];
99
+ /** Summary statistics */
100
+ summary: {
101
+ totalFeatures: number;
102
+ enabled: number;
103
+ blocked: number;
104
+ notConfigured: number;
105
+ bySource: Record<string, number>;
106
+ byRule: Record<string, number>;
107
+ };
108
+ }
109
+ /**
110
+ * Provenance builder for tracking PNP resolution
111
+ */
112
+ export declare class PNPProvenanceBuilder {
113
+ private provenance;
114
+ private stepCounter;
115
+ constructor(contextId: string);
116
+ /**
117
+ * Add a configuration source
118
+ */
119
+ addSource(type: "organization" | "assessment" | "section" | "item" | "student", data: {
120
+ id: string;
121
+ name?: string;
122
+ config?: any;
123
+ }): this;
124
+ /**
125
+ * Record a decision during resolution
126
+ */
127
+ addDecision(params: {
128
+ precedence: 1 | 2 | 3 | 4 | 5 | 6;
129
+ rule: ResolutionDecision["rule"];
130
+ featureId: string;
131
+ action: "block" | "enable" | "skip";
132
+ sourceType: ResolutionDecision["source"]["type"];
133
+ sourceId?: string;
134
+ sourceName?: string;
135
+ reason: string;
136
+ value?: any;
137
+ }): this;
138
+ /**
139
+ * Build final provenance with explanations
140
+ */
141
+ build(): PNPResolutionProvenance;
142
+ /**
143
+ * Generate human-readable explanation for a feature resolution
144
+ */
145
+ private generateExplanation;
146
+ /**
147
+ * Get human-readable rule name
148
+ */
149
+ private getRuleName;
150
+ /**
151
+ * Get current provenance (without explanations)
152
+ */
153
+ getCurrent(): PNPResolutionProvenance;
154
+ }
155
+ /**
156
+ * Format provenance as markdown for display
157
+ */
158
+ export declare function formatProvenanceAsMarkdown(provenance: PNPResolutionProvenance): string;
159
+ /**
160
+ * Format provenance as JSON (for APIs)
161
+ */
162
+ export declare function formatProvenanceAsJSON(provenance: PNPResolutionProvenance): string;
163
+ /**
164
+ * Get simple explanation for a specific feature
165
+ */
166
+ export declare function getFeatureExplanation(provenance: PNPResolutionProvenance, featureId: string): string | null;
167
+ //# sourceMappingURL=pnp-provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnp-provenance.d.ts","sourceRoot":"","sources":["../../src/services/pnp-provenance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * PNP Resolution Provenance Tracking
3
+ *
4
+ * Provides detailed tracking of how PNP profiles are resolved, including:
5
+ * - Decision steps at each precedence level
6
+ * - Sources of configuration (district, assessment, item, student)
7
+ * - Reasons for tool enablement/blocking
8
+ * - Merge operations and overrides
9
+ *
10
+ * This enables:
11
+ * - Visual explanation components for users
12
+ * - Debugging tool resolution issues
13
+ * - Compliance auditing and reporting
14
+ * - Developer troubleshooting
15
+ *
16
+ * Part of PIE Assessment Toolkit.
17
+ */
18
+ /**
19
+ * Provenance builder for tracking PNP resolution
20
+ */
21
+ export class PNPProvenanceBuilder {
22
+ provenance;
23
+ stepCounter = 0;
24
+ constructor(contextId) {
25
+ this.provenance = {
26
+ contextId,
27
+ resolvedAt: new Date(),
28
+ sources: {},
29
+ features: new Map(),
30
+ decisionLog: [],
31
+ summary: {
32
+ totalFeatures: 0,
33
+ enabled: 0,
34
+ blocked: 0,
35
+ notConfigured: 0,
36
+ bySource: {},
37
+ byRule: {},
38
+ },
39
+ };
40
+ }
41
+ /**
42
+ * Add a configuration source
43
+ */
44
+ addSource(type, data) {
45
+ this.provenance.sources[type] = {
46
+ id: data.id,
47
+ name: data.name || data.id,
48
+ ...(type === "organization" && { pnpDefaults: data.config }),
49
+ ...(type === "assessment" && { settings: data.config }),
50
+ ...(type === "section" && { settings: data.config }),
51
+ ...(type === "item" && { settings: data.config }),
52
+ ...(type === "student" && { pnpProfile: data.config }),
53
+ };
54
+ return this;
55
+ }
56
+ /**
57
+ * Record a decision during resolution
58
+ */
59
+ addDecision(params) {
60
+ const decision = {
61
+ step: ++this.stepCounter,
62
+ precedence: params.precedence,
63
+ rule: params.rule,
64
+ featureId: params.featureId,
65
+ action: params.action,
66
+ source: {
67
+ type: params.sourceType,
68
+ id: params.sourceId,
69
+ name: params.sourceName,
70
+ },
71
+ reason: params.reason,
72
+ value: params.value,
73
+ timestamp: new Date(),
74
+ };
75
+ // Add to decision log
76
+ this.provenance.decisionLog.push(decision);
77
+ // Update feature trail
78
+ if (!this.provenance.features.has(params.featureId)) {
79
+ this.provenance.features.set(params.featureId, {
80
+ featureId: params.featureId,
81
+ finalState: "not-configured",
82
+ allDecisions: [],
83
+ explanation: "",
84
+ });
85
+ }
86
+ const trail = this.provenance.features.get(params.featureId);
87
+ trail.allDecisions.push(decision);
88
+ // Update winning decision if this has higher precedence
89
+ if (params.action !== "skip" &&
90
+ (!trail.winningDecision ||
91
+ decision.precedence < trail.winningDecision.precedence)) {
92
+ trail.winningDecision = decision;
93
+ trail.finalState = decision.action === "enable" ? "enabled" : "blocked";
94
+ }
95
+ // Update summary
96
+ this.provenance.summary.bySource[params.sourceType] =
97
+ (this.provenance.summary.bySource[params.sourceType] || 0) + 1;
98
+ this.provenance.summary.byRule[params.rule] =
99
+ (this.provenance.summary.byRule[params.rule] || 0) + 1;
100
+ return this;
101
+ }
102
+ /**
103
+ * Build final provenance with explanations
104
+ */
105
+ build() {
106
+ // Generate explanations for each feature
107
+ for (const [featureId, trail] of this.provenance.features.entries()) {
108
+ trail.explanation = this.generateExplanation(trail);
109
+ }
110
+ // Update summary counts
111
+ for (const trail of this.provenance.features.values()) {
112
+ this.provenance.summary.totalFeatures++;
113
+ if (trail.finalState === "enabled") {
114
+ this.provenance.summary.enabled++;
115
+ }
116
+ else if (trail.finalState === "blocked") {
117
+ this.provenance.summary.blocked++;
118
+ }
119
+ else {
120
+ this.provenance.summary.notConfigured++;
121
+ }
122
+ }
123
+ return this.provenance;
124
+ }
125
+ /**
126
+ * Generate human-readable explanation for a feature resolution
127
+ */
128
+ generateExplanation(trail) {
129
+ if (!trail.winningDecision) {
130
+ return `Feature "${trail.featureId}" was not configured at any level.`;
131
+ }
132
+ const decision = trail.winningDecision;
133
+ const source = decision.source;
134
+ const sourceName = source.name || source.type;
135
+ let explanation = `Feature "${trail.featureId}" is ${trail.finalState}.\n\n`;
136
+ // Explain winning decision
137
+ explanation += `**Primary Reason** (${this.getRuleName(decision.rule)}):\n`;
138
+ explanation += `${decision.reason}\n`;
139
+ explanation += `Source: ${sourceName} (${source.type})\n\n`;
140
+ // Show overridden decisions if any
141
+ const overridden = trail.allDecisions.filter((d) => d.step !== decision.step &&
142
+ d.action !== "skip" &&
143
+ d.precedence > decision.precedence);
144
+ if (overridden.length > 0) {
145
+ explanation += `**Overridden Rules**:\n`;
146
+ overridden.forEach((d) => {
147
+ explanation += `- ${this.getRuleName(d.rule)}: ${d.reason} (overridden by higher precedence)\n`;
148
+ });
149
+ }
150
+ return explanation;
151
+ }
152
+ /**
153
+ * Get human-readable rule name
154
+ */
155
+ getRuleName(rule) {
156
+ const names = {
157
+ "district-block": "District Block",
158
+ "test-admin-override": "Test Administrator Override",
159
+ "item-restriction": "Item Restriction",
160
+ "item-requirement": "Item Requirement",
161
+ "district-requirement": "District Requirement",
162
+ "pnp-support": "Student PNP Support",
163
+ "system-default": "System Default",
164
+ };
165
+ return names[rule];
166
+ }
167
+ /**
168
+ * Get current provenance (without explanations)
169
+ */
170
+ getCurrent() {
171
+ return this.provenance;
172
+ }
173
+ }
174
+ /**
175
+ * Format provenance as markdown for display
176
+ */
177
+ export function formatProvenanceAsMarkdown(provenance) {
178
+ let md = `# PNP Resolution Report\n\n`;
179
+ md += `**Context**: ${provenance.contextId}\n`;
180
+ md += `**Resolved At**: ${provenance.resolvedAt.toISOString()}\n\n`;
181
+ // Summary
182
+ md += `## Summary\n\n`;
183
+ md += `- Total Features: ${provenance.summary.totalFeatures}\n`;
184
+ md += `- Enabled: ${provenance.summary.enabled}\n`;
185
+ md += `- Blocked: ${provenance.summary.blocked}\n`;
186
+ md += `- Not Configured: ${provenance.summary.notConfigured}\n\n`;
187
+ // Sources
188
+ md += `## Configuration Sources\n\n`;
189
+ Object.entries(provenance.sources).forEach(([type, source]) => {
190
+ const sourceName = source.name || source.title || source.id;
191
+ md += `- **${type}**: ${sourceName} (${source.id})\n`;
192
+ });
193
+ md += `\n`;
194
+ // Features
195
+ md += `## Feature Resolution\n\n`;
196
+ for (const trail of provenance.features.values()) {
197
+ md += `### ${trail.featureId}\n\n`;
198
+ md += `**Status**: ${trail.finalState}\n\n`;
199
+ md += trail.explanation + `\n\n`;
200
+ }
201
+ // Decision log
202
+ md += `## Decision Log\n\n`;
203
+ provenance.decisionLog.forEach((decision) => {
204
+ md += `${decision.step}. **${decision.rule}** (precedence ${decision.precedence})\n`;
205
+ md += ` - Feature: ${decision.featureId}\n`;
206
+ md += ` - Action: ${decision.action}\n`;
207
+ md += ` - Source: ${decision.source.name || decision.source.type}\n`;
208
+ md += ` - Reason: ${decision.reason}\n\n`;
209
+ });
210
+ return md;
211
+ }
212
+ /**
213
+ * Format provenance as JSON (for APIs)
214
+ */
215
+ export function formatProvenanceAsJSON(provenance) {
216
+ // Convert Map to object for JSON serialization
217
+ const serializable = {
218
+ ...provenance,
219
+ features: Array.from(provenance.features.entries()).map(([_featureId, trail]) => trail),
220
+ };
221
+ return JSON.stringify(serializable, null, 2);
222
+ }
223
+ /**
224
+ * Get simple explanation for a specific feature
225
+ */
226
+ export function getFeatureExplanation(provenance, featureId) {
227
+ const trail = provenance.features.get(featureId);
228
+ return trail?.explanation || null;
229
+ }
230
+ //# sourceMappingURL=pnp-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnp-provenance.js","sourceRoot":"","sources":["../../src/services/pnp-provenance.ts"],"names":[],"mappings":"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"}