@principal-ai/principal-view-react 0.7.14 → 0.7.16

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 (138) hide show
  1. package/README.md +9 -24
  2. package/dist/components/ConfigurationSelector.d.ts +1 -1
  3. package/dist/components/ConfigurationSelector.d.ts.map +1 -1
  4. package/dist/components/ConfigurationSelector.js +6 -10
  5. package/dist/components/ConfigurationSelector.js.map +1 -1
  6. package/dist/components/EdgeInfoPanel.d.ts +1 -1
  7. package/dist/components/EdgeInfoPanel.d.ts.map +1 -1
  8. package/dist/components/EdgeInfoPanel.js +14 -18
  9. package/dist/components/EdgeInfoPanel.js.map +1 -1
  10. package/dist/components/GraphRenderer.d.ts +1 -1
  11. package/dist/components/GraphRenderer.d.ts.map +1 -1
  12. package/dist/components/GraphRenderer.js +89 -92
  13. package/dist/components/GraphRenderer.js.map +1 -1
  14. package/dist/components/NarrativeRenderer.d.ts +19 -0
  15. package/dist/components/NarrativeRenderer.d.ts.map +1 -0
  16. package/dist/components/NarrativeRenderer.js +103 -0
  17. package/dist/components/NarrativeRenderer.js.map +1 -0
  18. package/dist/components/NodeInfoPanel.d.ts +1 -1
  19. package/dist/components/NodeInfoPanel.d.ts.map +1 -1
  20. package/dist/components/NodeInfoPanel.js +33 -37
  21. package/dist/components/NodeInfoPanel.js.map +1 -1
  22. package/dist/components/NodeTooltip.js +15 -19
  23. package/dist/components/NodeTooltip.js.map +1 -1
  24. package/dist/components/SelectionSidebar.d.ts +1 -1
  25. package/dist/components/SelectionSidebar.d.ts.map +1 -1
  26. package/dist/components/SelectionSidebar.js +26 -30
  27. package/dist/components/SelectionSidebar.js.map +1 -1
  28. package/dist/components/TestEventPanel.d.ts +6 -0
  29. package/dist/components/TestEventPanel.d.ts.map +1 -1
  30. package/dist/components/TestEventPanel.js +157 -160
  31. package/dist/components/TestEventPanel.js.map +1 -1
  32. package/dist/edges/CustomEdge.d.ts +1 -1
  33. package/dist/edges/CustomEdge.d.ts.map +1 -1
  34. package/dist/edges/CustomEdge.js +18 -22
  35. package/dist/edges/CustomEdge.js.map +1 -1
  36. package/dist/edges/GenericEdge.d.ts +1 -1
  37. package/dist/edges/GenericEdge.d.ts.map +1 -1
  38. package/dist/edges/GenericEdge.js +3 -7
  39. package/dist/edges/GenericEdge.js.map +1 -1
  40. package/dist/hooks/usePathBasedEvents.d.ts +1 -1
  41. package/dist/hooks/usePathBasedEvents.d.ts.map +1 -1
  42. package/dist/hooks/usePathBasedEvents.js +14 -18
  43. package/dist/hooks/usePathBasedEvents.js.map +1 -1
  44. package/dist/index.d.ts +1 -5
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +12 -33
  47. package/dist/index.js.map +1 -1
  48. package/dist/nodes/CustomNode.d.ts +1 -1
  49. package/dist/nodes/CustomNode.d.ts.map +1 -1
  50. package/dist/nodes/CustomNode.js +22 -26
  51. package/dist/nodes/CustomNode.js.map +1 -1
  52. package/dist/nodes/GenericNode.d.ts +1 -1
  53. package/dist/nodes/GenericNode.d.ts.map +1 -1
  54. package/dist/nodes/GenericNode.js +4 -8
  55. package/dist/nodes/GenericNode.js.map +1 -1
  56. package/dist/utils/animationMapping.d.ts +1 -1
  57. package/dist/utils/animationMapping.d.ts.map +1 -1
  58. package/dist/utils/animationMapping.js +6 -13
  59. package/dist/utils/animationMapping.js.map +1 -1
  60. package/dist/utils/graphConverter.d.ts +1 -1
  61. package/dist/utils/graphConverter.d.ts.map +1 -1
  62. package/dist/utils/graphConverter.js +4 -8
  63. package/dist/utils/graphConverter.js.map +1 -1
  64. package/dist/utils/iconResolver.js +7 -45
  65. package/dist/utils/iconResolver.js.map +1 -1
  66. package/dist/utils/narrative-converter.d.ts +45 -0
  67. package/dist/utils/narrative-converter.d.ts.map +1 -0
  68. package/dist/utils/narrative-converter.js +113 -0
  69. package/dist/utils/narrative-converter.js.map +1 -0
  70. package/dist/utils/narrative-loader.d.ts +53 -0
  71. package/dist/utils/narrative-loader.d.ts.map +1 -0
  72. package/dist/utils/narrative-loader.js +163 -0
  73. package/dist/utils/narrative-loader.js.map +1 -0
  74. package/package.json +22 -25
  75. package/src/components/ConfigurationSelector.tsx +1 -1
  76. package/src/components/EdgeInfoPanel.tsx +1 -1
  77. package/src/components/GraphRenderer.test.tsx +1 -1
  78. package/src/components/GraphRenderer.tsx +2 -2
  79. package/src/components/NarrativeRenderer.tsx +171 -0
  80. package/src/components/NodeInfoPanel.tsx +1 -1
  81. package/src/components/NodeTooltip.tsx +3 -3
  82. package/src/components/PendingChanges.test.tsx +1 -1
  83. package/src/components/SelectionSidebar.tsx +1 -1
  84. package/src/components/TestEventPanel.tsx +145 -121
  85. package/src/edges/CustomEdge.tsx +1 -1
  86. package/src/edges/GenericEdge.tsx +1 -1
  87. package/src/hooks/usePathBasedEvents.ts +1 -1
  88. package/src/index.ts +1 -7
  89. package/src/nodes/CustomNode.tsx +1 -1
  90. package/src/nodes/GenericNode.tsx +1 -1
  91. package/src/stories/AnimationWorkshop.stories.tsx +1 -1
  92. package/src/stories/CanvasEdgeTypes.stories.tsx +1 -1
  93. package/src/stories/CanvasNodeTypes.stories.tsx +1 -1
  94. package/src/stories/ColorPriority.stories.tsx +1 -1
  95. package/src/stories/EventDrivenAnimations.stories.tsx +1 -1
  96. package/src/stories/GraphRenderer.stories.tsx +1 -1
  97. package/src/stories/Introduction.mdx +4 -21
  98. package/src/stories/MultiConfig.stories.tsx +1 -1
  99. package/src/stories/MultiDirectionalConnections.stories.tsx +1 -1
  100. package/src/stories/NodeFieldsAudit.stories.tsx +1 -1
  101. package/src/stories/NodeShapes.stories.tsx +1 -1
  102. package/src/stories/OtelComponents.stories.tsx +1 -1
  103. package/src/stories/RealTestExecution.stories.tsx +111 -1
  104. package/src/stories/TraceViewer.stories.tsx +1 -1
  105. package/src/stories/ValidatedExecution.stories.tsx +1 -1
  106. package/src/stories/data/graph-converter-test-execution.json +204 -326
  107. package/src/stories/data/graph-converter-test.narrative.json +106 -0
  108. package/src/stories/data/graph-converter-validated-execution.json +6 -6
  109. package/src/utils/animationMapping.ts +1 -1
  110. package/src/utils/graphConverter.ts +1 -1
  111. package/src/utils/narrative-converter.ts +147 -0
  112. package/src/utils/narrative-loader.ts +172 -0
  113. package/dist/components/EventLog.d.ts +0 -20
  114. package/dist/components/EventLog.d.ts.map +0 -1
  115. package/dist/components/EventLog.js +0 -13
  116. package/dist/components/EventLog.js.map +0 -1
  117. package/dist/components/EventLog.test.d.ts +0 -2
  118. package/dist/components/EventLog.test.d.ts.map +0 -1
  119. package/dist/components/EventLog.test.js +0 -73
  120. package/dist/components/EventLog.test.js.map +0 -1
  121. package/dist/components/GraphRenderer.test.d.ts +0 -2
  122. package/dist/components/GraphRenderer.test.d.ts.map +0 -1
  123. package/dist/components/GraphRenderer.test.js +0 -88
  124. package/dist/components/GraphRenderer.test.js.map +0 -1
  125. package/dist/components/LayerPanel.d.ts +0 -31
  126. package/dist/components/LayerPanel.d.ts.map +0 -1
  127. package/dist/components/LayerPanel.js +0 -207
  128. package/dist/components/LayerPanel.js.map +0 -1
  129. package/dist/components/MetricsDashboard.d.ts +0 -14
  130. package/dist/components/MetricsDashboard.d.ts.map +0 -1
  131. package/dist/components/MetricsDashboard.js +0 -13
  132. package/dist/components/MetricsDashboard.js.map +0 -1
  133. package/src/components/EventLog.test.tsx +0 -85
  134. package/src/components/EventLog.tsx +0 -51
  135. package/src/components/MetricsDashboard.tsx +0 -40
  136. package/src/stories/EventLog.stories.tsx +0 -161
  137. package/src/stories/IndustryThemes.stories.tsx +0 -483
  138. package/src/stories/MetricsDashboard.stories.tsx +0 -227
@@ -1 +1 @@
1
- {"version":3,"file":"GenericNode.js","sourceRoot":"","sources":["../../src/nodes/GenericNode.tsx"],"names":[],"mappings":";;;;AAoBA;;;GAGG;AACI,MAAM,WAAW,GAA+B,CAAC,EACtD,EAAE,EACF,cAAc,EACd,KAAK,EACL,aAAa,GACd,EAAE,EAAE;IACH,sCAAsC;IACtC,MAAM,KAAK,GACT,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK;QAC5C,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;QACpC,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC;IAErC,OAAO,CACL,iCACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;YACpD,YAAY,EAAE,cAAc,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;YAC/D,eAAe,EAAE,OAAO;YACxB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,QAAQ;SACpB,aAED,gCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAG,EAAE,GAAO,EAC/D,KAAK,IAAI,gCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAG,KAAK,GAAO,EACxE,iCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAC9B,uDAAsB,6BAClB,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB"}
1
+ {"version":3,"file":"GenericNode.js","sourceRoot":"","sources":["../../src/nodes/GenericNode.tsx"],"names":[],"mappings":";AAoBA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,EAAE,EACF,cAAc,EACd,KAAK,EACL,aAAa,GACd,EAAE,EAAE;IACH,sCAAsC;IACtC,MAAM,KAAK,GACT,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK;QAC5C,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;QACpC,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC;IAErC,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;YACpD,YAAY,EAAE,cAAc,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;YAC/D,eAAe,EAAE,OAAO;YACxB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,QAAQ;SACpB,aAED,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAG,EAAE,GAAO,EAC/D,KAAK,IAAI,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAG,KAAK,GAAO,EACxE,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAC9B,qCAAsB,6BAClB,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Maps log levels and component events to appropriate animations
5
5
  * for Milestone 1 default visualization behavior
6
6
  */
7
- import type { LogLevel } from '@principal-ai/principal-view-core';
7
+ import type { LogLevel } from '@principal-ai/principal-view-core/browser';
8
8
  /**
9
9
  * Node animation configuration
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"animationMapping.d.ts","sourceRoot":"","sources":["../../src/utils/animationMapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,CAkCtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAiDpF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,aAAa,CAShG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAAiB,GAAG,OAAO,CAMnF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAa,GACzB,MAAM,CAIR"}
1
+ {"version":3,"file":"animationMapping.d.ts","sourceRoot":"","sources":["../../src/utils/animationMapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,CAkCtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAiDpF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,aAAa,CAShG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAAiB,GAAG,OAAO,CAMnF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAa,GACzB,MAAM,CAIR"}
@@ -1,16 +1,9 @@
1
- "use strict";
2
1
  /**
3
2
  * Animation mapping utilities
4
3
  *
5
4
  * Maps log levels and component events to appropriate animations
6
5
  * for Milestone 1 default visualization behavior
7
6
  */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.logLevelToNodeAnimation = logLevelToNodeAnimation;
10
- exports.actionToNodeAnimation = actionToNodeAnimation;
11
- exports.actionToEdgeAnimation = actionToEdgeAnimation;
12
- exports.shouldAnimate = shouldAnimate;
13
- exports.calculateIntensity = calculateIntensity;
14
7
  /**
15
8
  * Map log level to node animation
16
9
  *
@@ -20,7 +13,7 @@ exports.calculateIntensity = calculateIntensity;
20
13
  * - warn: amber pulse (high intensity)
21
14
  * - error: red flash + shake
22
15
  */
23
- function logLevelToNodeAnimation(level) {
16
+ export function logLevelToNodeAnimation(level) {
24
17
  switch (level) {
25
18
  case 'debug':
26
19
  return {
@@ -45,7 +38,7 @@ function logLevelToNodeAnimation(level) {
45
38
  };
46
39
  case 'error':
47
40
  return {
48
- type: 'flash', // More dramatic animation for errors
41
+ type: 'flash',
49
42
  duration: 1500,
50
43
  intensity: 1.0,
51
44
  color: '#ef4444', // red-500
@@ -55,7 +48,7 @@ function logLevelToNodeAnimation(level) {
55
48
  /**
56
49
  * Map component action to node animation (Milestone 2)
57
50
  */
58
- function actionToNodeAnimation(_action, state) {
51
+ export function actionToNodeAnimation(_action, state) {
59
52
  // Default mapping - can be overridden by configuration
60
53
  switch (state) {
61
54
  case 'acquired':
@@ -104,7 +97,7 @@ function actionToNodeAnimation(_action, state) {
104
97
  /**
105
98
  * Get animation config for edge based on action (Milestone 2)
106
99
  */
107
- function actionToEdgeAnimation(_action, edgeConfig) {
100
+ export function actionToEdgeAnimation(_action, edgeConfig) {
108
101
  // Use edge config if provided, otherwise default
109
102
  return (edgeConfig || {
110
103
  type: 'flow',
@@ -115,7 +108,7 @@ function actionToEdgeAnimation(_action, edgeConfig) {
115
108
  /**
116
109
  * Check if log level should trigger animation
117
110
  */
118
- function shouldAnimate(level, minLevel = 'info') {
111
+ export function shouldAnimate(level, minLevel = 'info') {
119
112
  const levels = ['debug', 'info', 'warn', 'error'];
120
113
  const minIndex = levels.indexOf(minLevel);
121
114
  const currentIndex = levels.indexOf(level);
@@ -125,7 +118,7 @@ function shouldAnimate(level, minLevel = 'info') {
125
118
  * Calculate animation intensity based on frequency
126
119
  * Used to adjust animation intensity when multiple logs occur rapidly
127
120
  */
128
- function calculateIntensity(baseIntensity, eventCount, _timeWindow = 1000) {
121
+ export function calculateIntensity(baseIntensity, eventCount, _timeWindow = 1000) {
129
122
  // Reduce intensity if too many events in time window
130
123
  const scaleFactor = Math.min(1.0, 5.0 / eventCount);
131
124
  return Math.max(0.2, baseIntensity * scaleFactor);
@@ -1 +1 @@
1
- {"version":3,"file":"animationMapping.js","sourceRoot":"","sources":["../../src/utils/animationMapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animationMapping.js","sourceRoot":"","sources":["../../src/utils/animationMapping.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Node, type Edge } from '@xyflow/react';
2
- import type { NodeState, EdgeState, GraphConfiguration, Violation } from '@principal-ai/principal-view-core';
2
+ import type { NodeState, EdgeState, GraphConfiguration, Violation } from '@principal-ai/principal-view-core/browser';
3
3
  import type { CustomNodeData } from '../nodes/CustomNode';
4
4
  import type { CustomEdgeData } from '../edges/CustomEdge';
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"graphConverter.d.ts","sourceRoot":"","sources":["../../src/utils/graphConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAAE,EAClB,aAAa,EAAE,kBAAkB,EACjC,UAAU,GAAE,SAAS,EAAO,GAC3B,IAAI,CAAC,cAAc,CAAC,EAAE,CAgCxB;AAED,yEAAyE;AACzE,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmBD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,CAAC,SAAS,GAAG,oBAAoB,CAAC,EAAE,EAC3C,aAAa,EAAE,kBAAkB,EACjC,UAAU,GAAE,SAAS,EAAO,GAC3B,IAAI,CAAC,cAAc,CAAC,EAAE,CAgDxB"}
1
+ {"version":3,"file":"graphConverter.d.ts","sourceRoot":"","sources":["../../src/utils/graphConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,SAAS,EACV,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAAE,EAClB,aAAa,EAAE,kBAAkB,EACjC,UAAU,GAAE,SAAS,EAAO,GAC3B,IAAI,CAAC,cAAc,CAAC,EAAE,CAgCxB;AAED,yEAAyE;AACzE,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmBD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,CAAC,SAAS,GAAG,oBAAoB,CAAC,EAAE,EAC3C,aAAa,EAAE,kBAAkB,EACjC,UAAU,GAAE,SAAS,EAAO,GAC3B,IAAI,CAAC,cAAc,CAAC,EAAE,CAgDxB"}
@@ -1,12 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertToXYFlowNodes = convertToXYFlowNodes;
4
- exports.convertToXYFlowEdges = convertToXYFlowEdges;
5
- const react_1 = require("@xyflow/react");
1
+ import { MarkerType } from '@xyflow/react';
6
2
  /**
7
3
  * Convert our NodeState to xyflow Node format
8
4
  */
9
- function convertToXYFlowNodes(nodes, configuration, violations = []) {
5
+ export function convertToXYFlowNodes(nodes, configuration, violations = []) {
10
6
  return nodes.map((node) => {
11
7
  const typeDefinition = configuration.nodeTypes[node.type];
12
8
  // Warn if node type is not defined in configuration
@@ -54,7 +50,7 @@ function sideToTargetHandle(side) {
54
50
  /**
55
51
  * Convert our EdgeState to xyflow Edge format
56
52
  */
57
- function convertToXYFlowEdges(edges, configuration, violations = []) {
53
+ export function convertToXYFlowEdges(edges, configuration, violations = []) {
58
54
  return edges.map((edge) => {
59
55
  const typeDefinition = configuration.edgeTypes[edge.type];
60
56
  // Warn if edge type is not defined in configuration
@@ -73,7 +69,7 @@ function convertToXYFlowEdges(edges, configuration, violations = []) {
73
69
  const edgeColor = edge.data?.color;
74
70
  const markerEnd = typeDefinition?.directed !== false
75
71
  ? {
76
- type: react_1.MarkerType.ArrowClosed,
72
+ type: MarkerType.ArrowClosed,
77
73
  color: edgeColor || typeDefinition?.color || '#888',
78
74
  width: 20,
79
75
  height: 20,
@@ -1 +1 @@
1
- {"version":3,"file":"graphConverter.js","sourceRoot":"","sources":["../../src/utils/graphConverter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphConverter.js","sourceRoot":"","sources":["../../src/utils/graphConverter.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,5 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Icon = void 0;
37
- exports.resolveIcon = resolveIcon;
38
- const jsx_runtime_1 = require("react/jsx-runtime");
39
- const LucideIcons = __importStar(require("lucide-react"));
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as LucideIcons from 'lucide-react';
40
3
  /**
41
4
  * Resolves an icon string to a React element
42
5
  *
@@ -45,7 +8,7 @@ const LucideIcons = __importStar(require("lucide-react"));
45
8
  * @param className - Optional CSS class
46
9
  * @returns React element or null
47
10
  */
48
- function resolveIcon(icon, size = 20, className) {
11
+ export function resolveIcon(icon, size = 20, className) {
49
12
  if (!icon)
50
13
  return null;
51
14
  // Try to resolve as Lucide icon first
@@ -53,16 +16,15 @@ function resolveIcon(icon, size = 20, className) {
53
16
  const LucideIcon = LucideIcons[icon];
54
17
  // Check if it's a valid React component (function or object with $$typeof)
55
18
  if (LucideIcon && (typeof LucideIcon === 'function' || typeof LucideIcon === 'object')) {
56
- return (0, jsx_runtime_1.jsx)(LucideIcon, { size: size, className: className });
19
+ return _jsx(LucideIcon, { size: size, className: className });
57
20
  }
58
21
  // Fall back to rendering as text (emoji or unicode)
59
- return ((0, jsx_runtime_1.jsx)("span", { className: className, style: { fontSize: `${size}px` }, children: icon }));
22
+ return (_jsx("span", { className: className, style: { fontSize: `${size}px` }, children: icon }));
60
23
  }
61
24
  /**
62
25
  * Icon component that resolves icon strings
63
26
  */
64
- const Icon = ({ icon, size = 20, className }) => {
65
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: resolveIcon(icon, size, className) });
27
+ export const Icon = ({ icon, size = 20, className }) => {
28
+ return _jsx(_Fragment, { children: resolveIcon(icon, size, className) });
66
29
  };
67
- exports.Icon = Icon;
68
30
  //# sourceMappingURL=iconResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iconResolver.js","sourceRoot":"","sources":["../../src/utils/iconResolver.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,kCAkBC;;AA5CD,0DAA4C;AAkB5C;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,IAAa,EAAE,OAAe,EAAE,EAAE,SAAkB;IAC9E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,sCAAsC;IACtC,8DAA8D;IAC9D,MAAM,UAAU,GAAI,WAAmB,CAAC,IAAI,CAAC,CAAC;IAE9C,2EAA2E;IAC3E,IAAI,UAAU,IAAI,CAAC,OAAO,UAAU,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC,EAAE,CAAC;QACvF,OAAO,uBAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;IAC1D,CAAC;IAED,oDAAoD;IACpD,OAAO,CACL,iCAAM,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,YACzD,IAAI,GACA,CACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,MAAM,IAAI,GAAwB,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC1E,OAAO,2DAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,GAAI,CAAC;AACnD,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf"}
1
+ {"version":3,"file":"iconResolver.js","sourceRoot":"","sources":["../../src/utils/iconResolver.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAkB5C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,OAAe,EAAE,EAAE,SAAkB;IAC9E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,sCAAsC;IACtC,8DAA8D;IAC9D,MAAM,UAAU,GAAI,WAAmB,CAAC,IAAI,CAAC,CAAC;IAE9C,2EAA2E;IAC3E,IAAI,UAAU,IAAI,CAAC,OAAO,UAAU,KAAK,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC,EAAE;QACtF,OAAO,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;KACzD;IAED,oDAAoD;IACpD,OAAO,CACL,eAAM,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,YACzD,IAAI,GACA,CACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAwB,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC1E,OAAO,4BAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,GAAI,CAAC;AACnD,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Utilities for converting TestEventPanel data to OtelEvent format
3
+ * for use with the narrative renderer
4
+ */
5
+ import type { OtelEvent } from '@principal-ai/principal-view-core';
6
+ import type { OtelLog } from '../components/TestEventPanel';
7
+ interface SpanEvent {
8
+ time: number;
9
+ name: string;
10
+ attributes: Record<string, string | number | boolean>;
11
+ }
12
+ interface TestSpan {
13
+ id: string;
14
+ name: string;
15
+ startTime: number;
16
+ endTime?: number;
17
+ duration?: number;
18
+ attributes: Record<string, string | number | boolean>;
19
+ events: SpanEvent[];
20
+ status: 'OK' | 'ERROR';
21
+ errorMessage?: string;
22
+ }
23
+ /**
24
+ * Convert TestSpan and OtelLogs to OtelEvent array
25
+ *
26
+ * @param span - The test span to convert
27
+ * @param logs - Optional OTEL logs to include
28
+ * @returns Array of OtelEvents in chronological order
29
+ */
30
+ export declare function convertToOtelEvents(span: TestSpan, logs?: OtelLog[]): OtelEvent[];
31
+ /**
32
+ * Convert all TestSpans to OtelEvents
33
+ *
34
+ * @param spans - Array of test spans
35
+ * @param logs - Optional OTEL logs to include
36
+ * @returns Array of OtelEvents for all spans
37
+ */
38
+ export declare function convertAllSpansToOtelEvents(spans: TestSpan[], logs?: OtelLog[]): OtelEvent[];
39
+ /**
40
+ * Extract test result attributes from TestSpan
41
+ * Useful for narrative templates that check assertions
42
+ */
43
+ export declare function extractTestAttributes(span: TestSpan): Record<string, unknown>;
44
+ export {};
45
+ //# sourceMappingURL=narrative-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrative-converter.d.ts","sourceRoot":"","sources":["../../src/utils/narrative-converter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,8BAA8B,CAAC;AAG1E,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACvD;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmDD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAO,EAAO,GAAG,SAAS,EAAE,CAerF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAE,OAAO,EAAO,GAAG,SAAS,EAAE,CAchG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmB7E"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Utilities for converting TestEventPanel data to OtelEvent format
3
+ * for use with the narrative renderer
4
+ */
5
+ /**
6
+ * Convert OtelSeverity to severity number (OpenTelemetry spec)
7
+ */
8
+ function severityToNumber(severity) {
9
+ const severityMap = {
10
+ TRACE: 1,
11
+ DEBUG: 5,
12
+ INFO: 9,
13
+ WARN: 13,
14
+ ERROR: 17,
15
+ FATAL: 21,
16
+ };
17
+ return severityMap[severity] || 9;
18
+ }
19
+ /**
20
+ * Convert TestSpan events to OtelEvent spans
21
+ */
22
+ function convertSpanEvents(span) {
23
+ return span.events.map((event) => ({
24
+ name: event.name,
25
+ timestamp: event.time,
26
+ type: 'span',
27
+ spanId: span.id,
28
+ traceId: span.id,
29
+ attributes: event.attributes,
30
+ }));
31
+ }
32
+ /**
33
+ * Convert OtelLogs to OtelEvent logs
34
+ */
35
+ function convertLogs(logs) {
36
+ return logs.map((log) => ({
37
+ name: 'log',
38
+ timestamp: typeof log.timestamp === 'number' ? log.timestamp : new Date(log.timestamp).getTime(),
39
+ type: 'log',
40
+ spanId: log.spanId,
41
+ traceId: log.traceId,
42
+ severityText: log.severity,
43
+ severityNumber: severityToNumber(log.severity),
44
+ body: typeof log.body === 'string' ? log.body : JSON.stringify(log.body),
45
+ attributes: {
46
+ ...log.attributes,
47
+ ...log.resource,
48
+ },
49
+ }));
50
+ }
51
+ /**
52
+ * Convert TestSpan and OtelLogs to OtelEvent array
53
+ *
54
+ * @param span - The test span to convert
55
+ * @param logs - Optional OTEL logs to include
56
+ * @returns Array of OtelEvents in chronological order
57
+ */
58
+ export function convertToOtelEvents(span, logs = []) {
59
+ const spanEvents = convertSpanEvents(span);
60
+ // Filter logs for this specific span
61
+ const spanLogs = logs.filter((log) => log.spanId === span.id || log.traceId === span.id);
62
+ const logEvents = convertLogs(spanLogs);
63
+ // Combine and sort by timestamp
64
+ const allEvents = [...spanEvents, ...logEvents].sort((a, b) => {
65
+ const aTime = typeof a.timestamp === 'number' ? a.timestamp : new Date(a.timestamp).getTime();
66
+ const bTime = typeof b.timestamp === 'number' ? b.timestamp : new Date(b.timestamp).getTime();
67
+ return aTime - bTime;
68
+ });
69
+ return allEvents;
70
+ }
71
+ /**
72
+ * Convert all TestSpans to OtelEvents
73
+ *
74
+ * @param spans - Array of test spans
75
+ * @param logs - Optional OTEL logs to include
76
+ * @returns Array of OtelEvents for all spans
77
+ */
78
+ export function convertAllSpansToOtelEvents(spans, logs = []) {
79
+ const allEvents = [];
80
+ for (const span of spans) {
81
+ const spanEvents = convertToOtelEvents(span, logs);
82
+ allEvents.push(...spanEvents);
83
+ }
84
+ // Sort all events chronologically
85
+ return allEvents.sort((a, b) => {
86
+ const aTime = typeof a.timestamp === 'number' ? a.timestamp : new Date(a.timestamp).getTime();
87
+ const bTime = typeof b.timestamp === 'number' ? b.timestamp : new Date(b.timestamp).getTime();
88
+ return aTime - bTime;
89
+ });
90
+ }
91
+ /**
92
+ * Extract test result attributes from TestSpan
93
+ * Useful for narrative templates that check assertions
94
+ */
95
+ export function extractTestAttributes(span) {
96
+ // Find assertion.complete event
97
+ const assertionComplete = span.events.find((e) => e.name === 'assertion.complete');
98
+ if (assertionComplete) {
99
+ return {
100
+ 'assertions.passed': assertionComplete.attributes['assertions.passed'] || 0,
101
+ 'assertions.failed': assertionComplete.attributes['assertions.failed'] || 0,
102
+ 'test.status': span.status,
103
+ 'test.name': span.name,
104
+ ...span.attributes,
105
+ };
106
+ }
107
+ return {
108
+ 'test.status': span.status,
109
+ 'test.name': span.name,
110
+ ...span.attributes,
111
+ };
112
+ }
113
+ //# sourceMappingURL=narrative-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrative-converter.js","sourceRoot":"","sources":["../../src/utils/narrative-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Utilities for loading and managing narrative templates
3
+ */
4
+ import type { NarrativeTemplate } from '@principal-ai/principal-view-core';
5
+ /**
6
+ * Load a narrative template from a URL or file path
7
+ *
8
+ * Note: In most cases, you should import templates directly:
9
+ * import template from './my-template.narrative.json';
10
+ *
11
+ * This function is useful when you need to dynamically load templates.
12
+ *
13
+ * @param path - Path to the narrative template JSON file
14
+ * @returns Promise resolving to the narrative template, or null if not found
15
+ */
16
+ export declare function loadNarrativeTemplate(path: string): Promise<NarrativeTemplate | null>;
17
+ /**
18
+ * Auto-discover narrative template for a given canvas path
19
+ *
20
+ * Example:
21
+ * Canvas: "/path/to/graph-converter.otel.canvas"
22
+ * Narrative: "/path/to/graph-converter.narrative.json"
23
+ *
24
+ * @param canvasPath - Path to the .otel.canvas file
25
+ * @returns Promise resolving to the narrative template, or null if not found
26
+ */
27
+ export declare function discoverNarrativeTemplate(canvasPath: string): Promise<NarrativeTemplate | null>;
28
+ /**
29
+ * Validate a narrative template has required fields
30
+ *
31
+ * @param template - Template to validate
32
+ * @returns True if valid, false otherwise
33
+ */
34
+ export declare function validateNarrativeTemplate(template: unknown): template is NarrativeTemplate;
35
+ /**
36
+ * Get a user-friendly error message for invalid templates
37
+ *
38
+ * @param template - Template to check
39
+ * @returns Error message, or null if valid
40
+ */
41
+ export declare function getNarrativeTemplateError(template: unknown): string | null;
42
+ /**
43
+ * React hook for loading narrative templates
44
+ *
45
+ * @param templatePath - Path to template, or null to skip loading
46
+ * @returns {template, loading, error}
47
+ */
48
+ export declare function useNarrativeTemplate(templatePath: string | null): {
49
+ template: NarrativeTemplate | null;
50
+ loading: boolean;
51
+ error: string | null;
52
+ };
53
+ //# sourceMappingURL=narrative-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrative-loader.d.ts","sourceRoot":"","sources":["../../src/utils/narrative-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAa3F;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAGrG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,iBAAiB,CAyB1F;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA+B1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;;;;EA0C/D"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Utilities for loading and managing narrative templates
3
+ */
4
+ /**
5
+ * Load a narrative template from a URL or file path
6
+ *
7
+ * Note: In most cases, you should import templates directly:
8
+ * import template from './my-template.narrative.json';
9
+ *
10
+ * This function is useful when you need to dynamically load templates.
11
+ *
12
+ * @param path - Path to the narrative template JSON file
13
+ * @returns Promise resolving to the narrative template, or null if not found
14
+ */
15
+ export async function loadNarrativeTemplate(path) {
16
+ try {
17
+ const response = await fetch(path);
18
+ if (!response.ok) {
19
+ console.warn(`Narrative template not found: ${path}`);
20
+ return null;
21
+ }
22
+ const template = await response.json();
23
+ return template;
24
+ }
25
+ catch (error) {
26
+ console.warn(`Failed to load narrative template from ${path}:`, error);
27
+ return null;
28
+ }
29
+ }
30
+ /**
31
+ * Auto-discover narrative template for a given canvas path
32
+ *
33
+ * Example:
34
+ * Canvas: "/path/to/graph-converter.otel.canvas"
35
+ * Narrative: "/path/to/graph-converter.narrative.json"
36
+ *
37
+ * @param canvasPath - Path to the .otel.canvas file
38
+ * @returns Promise resolving to the narrative template, or null if not found
39
+ */
40
+ export async function discoverNarrativeTemplate(canvasPath) {
41
+ const narrativePath = canvasPath.replace('.otel.canvas', '.narrative.json');
42
+ return loadNarrativeTemplate(narrativePath);
43
+ }
44
+ /**
45
+ * Validate a narrative template has required fields
46
+ *
47
+ * @param template - Template to validate
48
+ * @returns True if valid, false otherwise
49
+ */
50
+ export function validateNarrativeTemplate(template) {
51
+ if (!template || typeof template !== 'object') {
52
+ return false;
53
+ }
54
+ const t = template;
55
+ // Check required fields
56
+ if (!t.version || !t.canvas || !t.name || !t.mode || !t.scenarioSelection || !t.scenarios) {
57
+ return false;
58
+ }
59
+ // Check scenarios array
60
+ if (!Array.isArray(t.scenarios) || t.scenarios.length === 0) {
61
+ return false;
62
+ }
63
+ // Check each scenario has required fields
64
+ for (const scenario of t.scenarios) {
65
+ if (!scenario.id || !scenario.priority || !scenario.condition || !scenario.template) {
66
+ return false;
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ /**
72
+ * Get a user-friendly error message for invalid templates
73
+ *
74
+ * @param template - Template to check
75
+ * @returns Error message, or null if valid
76
+ */
77
+ export function getNarrativeTemplateError(template) {
78
+ if (!template || typeof template !== 'object') {
79
+ return 'Template must be a valid JSON object';
80
+ }
81
+ const t = template;
82
+ if (!t.version)
83
+ return 'Missing required field: version';
84
+ if (!t.canvas)
85
+ return 'Missing required field: canvas';
86
+ if (!t.name)
87
+ return 'Missing required field: name';
88
+ if (!t.mode)
89
+ return 'Missing required field: mode';
90
+ if (!t.scenarioSelection)
91
+ return 'Missing required field: scenarioSelection';
92
+ if (!t.scenarios)
93
+ return 'Missing required field: scenarios';
94
+ if (!Array.isArray(t.scenarios)) {
95
+ return 'Field "scenarios" must be an array';
96
+ }
97
+ if (t.scenarios.length === 0) {
98
+ return 'Template must have at least one scenario';
99
+ }
100
+ for (let i = 0; i < t.scenarios.length; i++) {
101
+ const scenario = t.scenarios[i];
102
+ if (!scenario.id)
103
+ return `Scenario ${i}: missing required field "id"`;
104
+ if (scenario.priority === undefined)
105
+ return `Scenario ${i}: missing required field "priority"`;
106
+ if (!scenario.condition)
107
+ return `Scenario ${i}: missing required field "condition"`;
108
+ if (!scenario.template)
109
+ return `Scenario ${i}: missing required field "template"`;
110
+ }
111
+ return null;
112
+ }
113
+ /**
114
+ * React hook for loading narrative templates
115
+ *
116
+ * @param templatePath - Path to template, or null to skip loading
117
+ * @returns {template, loading, error}
118
+ */
119
+ export function useNarrativeTemplate(templatePath) {
120
+ const [template, setTemplate] = React.useState(null);
121
+ const [loading, setLoading] = React.useState(false);
122
+ const [error, setError] = React.useState(null);
123
+ React.useEffect(() => {
124
+ if (!templatePath) {
125
+ setTemplate(null);
126
+ setLoading(false);
127
+ setError(null);
128
+ return;
129
+ }
130
+ setLoading(true);
131
+ setError(null);
132
+ loadNarrativeTemplate(templatePath)
133
+ .then((loadedTemplate) => {
134
+ if (loadedTemplate) {
135
+ const validationError = getNarrativeTemplateError(loadedTemplate);
136
+ if (validationError) {
137
+ setError(validationError);
138
+ setTemplate(null);
139
+ }
140
+ else {
141
+ setTemplate(loadedTemplate);
142
+ setError(null);
143
+ }
144
+ }
145
+ else {
146
+ setError('Template not found');
147
+ setTemplate(null);
148
+ }
149
+ })
150
+ .catch((err) => {
151
+ setError(err instanceof Error ? err.message : 'Unknown error');
152
+ setTemplate(null);
153
+ })
154
+ .finally(() => {
155
+ setLoading(false);
156
+ });
157
+ }, [templatePath]);
158
+ return { template, loading, error };
159
+ }
160
+ // Note: React import is expected to be available in the React package
161
+ // If this causes issues, we can remove the hook and export it separately
162
+ import React from 'react';
163
+ //# sourceMappingURL=narrative-loader.js.map