@opensip-cli/dashboard 0.1.10 → 0.1.12

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 (150) hide show
  1. package/README.md +4 -2
  2. package/dist/client-bundle.generated.d.ts.map +1 -1
  3. package/dist/client-bundle.generated.js +1 -1
  4. package/dist/client-bundle.generated.js.map +1 -1
  5. package/dist/code-paths/graph-view-model.js +0 -1
  6. package/dist/code-paths/graph-view-model.js.map +1 -1
  7. package/dist/css/theme.js +1 -1
  8. package/dist/generator.d.ts +2 -0
  9. package/dist/generator.d.ts.map +1 -1
  10. package/dist/generator.js +10 -4
  11. package/dist/generator.js.map +1 -1
  12. package/dist/report-cup-icon.d.ts +17 -0
  13. package/dist/report-cup-icon.d.ts.map +1 -0
  14. package/dist/report-cup-icon.js +34 -0
  15. package/dist/report-cup-icon.js.map +1 -0
  16. package/dist/tool-tabs-registrations.js +10 -0
  17. package/dist/tool-tabs-registrations.js.map +1 -1
  18. package/package.json +3 -3
  19. package/dist/__tests__/catalog-provenance.test.d.ts +0 -11
  20. package/dist/__tests__/catalog-provenance.test.d.ts.map +0 -1
  21. package/dist/__tests__/catalog-provenance.test.js +0 -112
  22. package/dist/__tests__/catalog-provenance.test.js.map +0 -1
  23. package/dist/__tests__/coupling-attribution.test.d.ts +0 -9
  24. package/dist/__tests__/coupling-attribution.test.d.ts.map +0 -1
  25. package/dist/__tests__/coupling-attribution.test.js +0 -95
  26. package/dist/__tests__/coupling-attribution.test.js.map +0 -1
  27. package/dist/__tests__/dashboard-bundle-weight.test.d.ts +0 -23
  28. package/dist/__tests__/dashboard-bundle-weight.test.d.ts.map +0 -1
  29. package/dist/__tests__/dashboard-bundle-weight.test.js +0 -80
  30. package/dist/__tests__/dashboard-bundle-weight.test.js.map +0 -1
  31. package/dist/__tests__/dashboard-cell-containment.test.d.ts +0 -2
  32. package/dist/__tests__/dashboard-cell-containment.test.d.ts.map +0 -1
  33. package/dist/__tests__/dashboard-cell-containment.test.js +0 -52
  34. package/dist/__tests__/dashboard-cell-containment.test.js.map +0 -1
  35. package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts +0 -10
  36. package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts.map +0 -1
  37. package/dist/__tests__/dashboard-cytoscape-vendor.test.js +0 -40
  38. package/dist/__tests__/dashboard-cytoscape-vendor.test.js.map +0 -1
  39. package/dist/__tests__/dashboard-editor-link.test.d.ts +0 -14
  40. package/dist/__tests__/dashboard-editor-link.test.d.ts.map +0 -1
  41. package/dist/__tests__/dashboard-editor-link.test.js +0 -87
  42. package/dist/__tests__/dashboard-editor-link.test.js.map +0 -1
  43. package/dist/__tests__/dashboard-el.test.d.ts +0 -18
  44. package/dist/__tests__/dashboard-el.test.d.ts.map +0 -1
  45. package/dist/__tests__/dashboard-el.test.js +0 -90
  46. package/dist/__tests__/dashboard-el.test.js.map +0 -1
  47. package/dist/__tests__/dashboard-filters.test.d.ts +0 -9
  48. package/dist/__tests__/dashboard-filters.test.d.ts.map +0 -1
  49. package/dist/__tests__/dashboard-filters.test.js +0 -87
  50. package/dist/__tests__/dashboard-filters.test.js.map +0 -1
  51. package/dist/__tests__/dashboard-function-card-singleton.test.d.ts +0 -9
  52. package/dist/__tests__/dashboard-function-card-singleton.test.d.ts.map +0 -1
  53. package/dist/__tests__/dashboard-function-card-singleton.test.js +0 -75
  54. package/dist/__tests__/dashboard-function-card-singleton.test.js.map +0 -1
  55. package/dist/__tests__/dashboard-function-card.test.d.ts +0 -10
  56. package/dist/__tests__/dashboard-function-card.test.d.ts.map +0 -1
  57. package/dist/__tests__/dashboard-function-card.test.js +0 -439
  58. package/dist/__tests__/dashboard-function-card.test.js.map +0 -1
  59. package/dist/__tests__/dashboard-function-row.test.d.ts +0 -11
  60. package/dist/__tests__/dashboard-function-row.test.d.ts.map +0 -1
  61. package/dist/__tests__/dashboard-function-row.test.js +0 -102
  62. package/dist/__tests__/dashboard-function-row.test.js.map +0 -1
  63. package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts +0 -9
  64. package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts.map +0 -1
  65. package/dist/__tests__/dashboard-generator-graph-catalog.test.js +0 -77
  66. package/dist/__tests__/dashboard-generator-graph-catalog.test.js.map +0 -1
  67. package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts +0 -13
  68. package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts.map +0 -1
  69. package/dist/__tests__/dashboard-graph-offline.integration.test.js +0 -57
  70. package/dist/__tests__/dashboard-graph-offline.integration.test.js.map +0 -1
  71. package/dist/__tests__/dashboard-graph-scc.test.d.ts +0 -17
  72. package/dist/__tests__/dashboard-graph-scc.test.d.ts.map +0 -1
  73. package/dist/__tests__/dashboard-graph-scc.test.js +0 -89
  74. package/dist/__tests__/dashboard-graph-scc.test.js.map +0 -1
  75. package/dist/__tests__/dashboard-graph-view-model.test.d.ts +0 -12
  76. package/dist/__tests__/dashboard-graph-view-model.test.d.ts.map +0 -1
  77. package/dist/__tests__/dashboard-graph-view-model.test.js +0 -331
  78. package/dist/__tests__/dashboard-graph-view-model.test.js.map +0 -1
  79. package/dist/__tests__/dashboard-help-drawer.test.d.ts +0 -9
  80. package/dist/__tests__/dashboard-help-drawer.test.d.ts.map +0 -1
  81. package/dist/__tests__/dashboard-help-drawer.test.js +0 -95
  82. package/dist/__tests__/dashboard-help-drawer.test.js.map +0 -1
  83. package/dist/__tests__/dashboard-html.test.d.ts +0 -2
  84. package/dist/__tests__/dashboard-html.test.d.ts.map +0 -1
  85. package/dist/__tests__/dashboard-html.test.js +0 -169
  86. package/dist/__tests__/dashboard-html.test.js.map +0 -1
  87. package/dist/__tests__/dashboard-indexes.test.d.ts +0 -11
  88. package/dist/__tests__/dashboard-indexes.test.d.ts.map +0 -1
  89. package/dist/__tests__/dashboard-indexes.test.js +0 -214
  90. package/dist/__tests__/dashboard-indexes.test.js.map +0 -1
  91. package/dist/__tests__/dashboard-pagination.test.d.ts +0 -15
  92. package/dist/__tests__/dashboard-pagination.test.d.ts.map +0 -1
  93. package/dist/__tests__/dashboard-pagination.test.js +0 -140
  94. package/dist/__tests__/dashboard-pagination.test.js.map +0 -1
  95. package/dist/__tests__/dashboard-path-utils.test.d.ts +0 -13
  96. package/dist/__tests__/dashboard-path-utils.test.d.ts.map +0 -1
  97. package/dist/__tests__/dashboard-path-utils.test.js +0 -62
  98. package/dist/__tests__/dashboard-path-utils.test.js.map +0 -1
  99. package/dist/__tests__/dashboard-search.test.d.ts +0 -10
  100. package/dist/__tests__/dashboard-search.test.d.ts.map +0 -1
  101. package/dist/__tests__/dashboard-search.test.js +0 -52
  102. package/dist/__tests__/dashboard-search.test.js.map +0 -1
  103. package/dist/__tests__/dashboard-sessions.test.d.ts +0 -14
  104. package/dist/__tests__/dashboard-sessions.test.d.ts.map +0 -1
  105. package/dist/__tests__/dashboard-sessions.test.js +0 -332
  106. package/dist/__tests__/dashboard-sessions.test.js.map +0 -1
  107. package/dist/__tests__/dashboard-trace.test.d.ts +0 -16
  108. package/dist/__tests__/dashboard-trace.test.d.ts.map +0 -1
  109. package/dist/__tests__/dashboard-trace.test.js +0 -170
  110. package/dist/__tests__/dashboard-trace.test.js.map +0 -1
  111. package/dist/__tests__/dashboard-validation.integration.test.d.ts +0 -14
  112. package/dist/__tests__/dashboard-validation.integration.test.d.ts.map +0 -1
  113. package/dist/__tests__/dashboard-validation.integration.test.js +0 -221
  114. package/dist/__tests__/dashboard-validation.integration.test.js.map +0 -1
  115. package/dist/__tests__/dashboard-view-conformance.test.d.ts +0 -12
  116. package/dist/__tests__/dashboard-view-conformance.test.d.ts.map +0 -1
  117. package/dist/__tests__/dashboard-view-conformance.test.js +0 -52
  118. package/dist/__tests__/dashboard-view-conformance.test.js.map +0 -1
  119. package/dist/__tests__/dashboard-view-coupling.test.d.ts +0 -7
  120. package/dist/__tests__/dashboard-view-coupling.test.d.ts.map +0 -1
  121. package/dist/__tests__/dashboard-view-coupling.test.js +0 -360
  122. package/dist/__tests__/dashboard-view-coupling.test.js.map +0 -1
  123. package/dist/__tests__/dashboard-view-distribution.test.d.ts +0 -10
  124. package/dist/__tests__/dashboard-view-distribution.test.d.ts.map +0 -1
  125. package/dist/__tests__/dashboard-view-distribution.test.js +0 -249
  126. package/dist/__tests__/dashboard-view-distribution.test.js.map +0 -1
  127. package/dist/__tests__/dashboard-view-graph.test.d.ts +0 -13
  128. package/dist/__tests__/dashboard-view-graph.test.d.ts.map +0 -1
  129. package/dist/__tests__/dashboard-view-graph.test.js +0 -299
  130. package/dist/__tests__/dashboard-view-graph.test.js.map +0 -1
  131. package/dist/__tests__/dashboard-view-template.test.d.ts +0 -20
  132. package/dist/__tests__/dashboard-view-template.test.d.ts.map +0 -1
  133. package/dist/__tests__/dashboard-view-template.test.js +0 -206
  134. package/dist/__tests__/dashboard-view-template.test.js.map +0 -1
  135. package/dist/__tests__/dashboard.test.d.ts +0 -2
  136. package/dist/__tests__/dashboard.test.d.ts.map +0 -1
  137. package/dist/__tests__/dashboard.test.js +0 -129
  138. package/dist/__tests__/dashboard.test.js.map +0 -1
  139. package/dist/__tests__/graph-tab.test.d.ts +0 -10
  140. package/dist/__tests__/graph-tab.test.d.ts.map +0 -1
  141. package/dist/__tests__/graph-tab.test.js +0 -78
  142. package/dist/__tests__/graph-tab.test.js.map +0 -1
  143. package/dist/client/el.d.ts +0 -17
  144. package/dist/client/el.d.ts.map +0 -1
  145. package/dist/client/el.js +0 -36
  146. package/dist/client/el.js.map +0 -1
  147. package/dist/code-paths/__tests__/views-registry.test.d.ts +0 -18
  148. package/dist/code-paths/__tests__/views-registry.test.d.ts.map +0 -1
  149. package/dist/code-paths/__tests__/views-registry.test.js +0 -41
  150. package/dist/code-paths/__tests__/views-registry.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client-bundle.generated.js","sourceRoot":"","sources":["../src/client-bundle.generated.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAW,82uHAA82uH,CAAC"}
1
+ {"version":3,"file":"client-bundle.generated.js","sourceRoot":"","sources":["../src/client-bundle.generated.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAW,621HAA621H,CAAC"}
@@ -164,7 +164,6 @@ function bumpEdge(edgeByKey, source, target) {
164
164
  */
165
165
  function deriveNodesAndEdges(packageByHash, edgeByKey) {
166
166
  const nodeById = new Map();
167
- // @fitness-ignore-next-line toctou-race-condition -- synchronous single-pass projector; `nodeById` is a local Map with no async/concurrent access, so there is no time-of-check/time-of-use window between the get and the set.
168
167
  const ensure = (id) => {
169
168
  let n = nodeById.get(id);
170
169
  if (!n) {
@@ -1 +1 @@
1
- {"version":3,"file":"graph-view-model.js","sourceRoot":"","sources":["../../src/code-paths/graph-view-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmE9D,uEAAuE;AACvE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAcD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAqB;IAClE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAClE,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;IAC7D,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS;IAC1E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS;IAEjF,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,gCAAgC;IAChC,MAAM,SAAS,GAAG,cAAc,CAC9B,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAC3C,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACtB,SAAS,CACV,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IAEtE,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAA4B;IACpD,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,0FAA0F;AAC1F,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IACjD,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC;AAED,4DAA4D;AAC5D,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAC9E,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAChC,CAAC;AAED,kFAAkF;AAClF,SAAS,mBAAmB,CAAC,OAAqB;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAuC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/E,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,OAAqB,EACrB,aAA0C;IAE1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,yBAAyB,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,uEAAuE;AACvE,SAAS,yBAAyB,CAChC,GAA4B,EAC5B,aAA0C,EAC1C,SAAmC;IAEnC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO;IACpC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,SAAS,KAAK,SAAS;gBAAE,SAAS,CAAC,wBAAwB;YAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,QAAQ,CAAC,SAAmC,EAAE,MAAc,EAAE,MAAc;IACnF,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,QAAQ;QAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;;QAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAC1B,aAA0C,EAC1C,SAA2C;IAE3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,gOAAgO;IAChO,MAAM,MAAM,GAAG,CAAC,EAAU,EAAe,EAAE;QACzC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,0EAA0E;IAC1E,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,CAAc;IACrC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,eAAe,CACtB,CAAc,EACd,SAAsC;IAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,SAAS;KAC1D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"graph-view-model.js","sourceRoot":"","sources":["../../src/code-paths/graph-view-model.ts"],"names":[],"mappings":"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"}
package/dist/css/theme.js CHANGED
@@ -10,7 +10,7 @@ export function dashboardCssTheme() {
10
10
  --bg: #1a1210; --bg-surface: #231a16; --bg-card: #231a16;
11
11
  --bg-hover: #3a2e27; --text: #f4ede5; --text-secondary: #e6ddd2;
12
12
  --text-muted: #c0b2a2; --text-dim: #958474; --accent: #c49a6c;
13
- --accent-fitness: #7ca068; --accent-sim: #9b8aa5;
13
+ --accent-fitness: #7ca068; --accent-sim: #9b8aa5; --accent-yagni: #6f9fb0;
14
14
  --success: #8fbc8f; --success-light: rgba(143,188,143,0.2);
15
15
  --warning: #d4a574; --warning-light: rgba(212,165,116,0.2);
16
16
  --error: #c75b4a; --error-light: rgba(199,91,74,0.2);
@@ -28,6 +28,8 @@ export interface DashboardInput {
28
28
  graphRecipeCatalog?: readonly unknown[];
29
29
  simScenarioCatalog?: readonly unknown[];
30
30
  simRecipeCatalog?: readonly unknown[];
31
+ yagniSummary?: unknown;
32
+ yagniCatalog?: readonly unknown[];
31
33
  editorProtocol?: string | null;
32
34
  }
33
35
  /** Renders a self-contained HTML dashboard string from sessions and catalog inputs. */
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAM1B,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAMnC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAIxC,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAiDD,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CA0HnE"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAM1B,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAMnC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAIxC,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAEtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAiDD,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAiInE"}
package/dist/generator.js CHANGED
@@ -14,6 +14,7 @@ import { DASHBOARD_CLIENT_BUNDLE } from './client-bundle.generated.js';
14
14
  import { projectCatalogToGraphViewModel } from './code-paths/graph-view-model.js';
15
15
  import { dashboardCodePathsVendorJs } from './code-paths.js';
16
16
  import { dashboardCss } from './css.js';
17
+ import { REPORT_CUP_FAVICON_DATA_URI, REPORT_CUP_HEADER_HTML } from './report-cup-icon.js';
17
18
  import { listToolTabs } from './tool-tab-registry.js';
18
19
  import './tool-tabs-registrations.js'; // side-effect: registers fit/sim/graph
19
20
  // Escape all < and > to prevent script injection in HTML <script> context
@@ -62,7 +63,7 @@ function serializeOptionalBlob(id, value, kind) {
62
63
  }
63
64
  /** Renders a self-contained HTML dashboard string from sessions and catalog inputs. */
64
65
  export function generateDashboardHtml(input) {
65
- const { sessions, checkCatalog = [], recipeCatalog = [], graphCatalog = null, graphRuleCatalog = [], graphRecipeCatalog = [], simScenarioCatalog = [], simRecipeCatalog = [], editorProtocol = null, } = input;
66
+ const { sessions, checkCatalog = [], recipeCatalog = [], graphCatalog = null, graphRuleCatalog = [], graphRecipeCatalog = [], simScenarioCatalog = [], simRecipeCatalog = [], yagniSummary = null, yagniCatalog = [], editorProtocol = null, } = input;
66
67
  const latest = sessions[0];
67
68
  // Coerce score to a finite number before interpolating into the <title>
68
69
  // tag — `latest.score` is typed `number` but originates from a SQLite
@@ -77,6 +78,8 @@ export function generateDashboardHtml(input) {
77
78
  const safeGraphRecipeCatalogJson = escapeForScriptContext(JSON.stringify(graphRecipeCatalog));
78
79
  const safeSimScenarioCatalogJson = escapeForScriptContext(JSON.stringify(simScenarioCatalog));
79
80
  const safeSimRecipeCatalogJson = escapeForScriptContext(JSON.stringify(simRecipeCatalog));
81
+ const safeYagniSummaryJson = escapeForScriptContext(JSON.stringify(yagniSummary));
82
+ const safeYagniCatalogJson = escapeForScriptContext(JSON.stringify(yagniCatalog));
80
83
  const graphCatalogBlock = serializeOptionalBlob('graph-catalog', graphCatalog, 'json');
81
84
  // The Visualization view (view-graph.ts) consumes a slim, pre-projected
82
85
  // view-model rather than the raw catalog: projection aggregates the
@@ -112,7 +115,7 @@ export function generateDashboardHtml(input) {
112
115
  <meta charset="utf-8">
113
116
  <meta name="viewport" content="width=device-width, initial-scale=1">
114
117
  <title>OpenSIP CLI${latest ? ` — Pass Rate: ${latestScoreSafe}%` : ''}</title>
115
- <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M4 8h12a4 4 0 0 1 0 8h-1M4 8v8a4 4 0 0 0 4 4h4a4 4 0 0 0 4-4V8M4 8H2M6 4c0 1 .5 2 1 2.5M10 3c0 1.5.5 2.5 1 3M14 4c0 1 .5 2 1 2.5' stroke='%23c4956a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E">
118
+ <link rel="icon" type="image/svg+xml" href="${REPORT_CUP_FAVICON_DATA_URI}">
116
119
  <link rel="preconnect" href="https://fonts.googleapis.com">
117
120
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&display=swap" rel="stylesheet">
118
121
  <style>
@@ -122,8 +125,8 @@ ${dashboardCss()}
122
125
  <body>
123
126
 
124
127
  <div class="header">
125
- <span class="header-icon"><svg width="28" height="28" viewBox="0 0 24 24" fill="none"><path d="M4 8h12a4 4 0 0 1 0 8h-1M4 8v8a4 4 0 0 0 4 4h4a4 4 0 0 0 4-4V8M4 8H2M6 4c0 1 .5 2 1 2.5M10 3c0 1.5.5 2.5 1 3M14 4c0 1 .5 2 1 2.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></span>
126
- <div><h1><span class="brand-open">Open</span>SIP Tools</h1></div>
128
+ <span class="header-icon">${REPORT_CUP_HEADER_HTML}</span>
129
+ <div><h1><span class="brand-open">Open</span>SIP Report</h1></div>
127
130
  </div>
128
131
 
129
132
  <div class="tab-bar" id="tab-bar">
@@ -146,9 +149,12 @@ const graphRuleCatalog = ${safeGraphRuleCatalogJson};
146
149
  const graphRecipeCatalog = ${safeGraphRecipeCatalogJson};
147
150
  const simScenarioCatalog = ${safeSimScenarioCatalogJson};
148
151
  const simRecipeCatalog = ${safeSimRecipeCatalogJson};
152
+ const yagniSummary = ${safeYagniSummaryJson};
153
+ const yagniCatalog = ${safeYagniCatalogJson};
149
154
  ${editorProtocolJs}
150
155
  const fitSessions = sessions.filter(s => s.tool === 'fit');
151
156
  const simSessions = sessions.filter(s => s.tool === 'sim');
157
+ const yagniSessions = sessions.filter(s => s.tool === 'yagni');
152
158
  // Registry-derived Overview maps (tool → badge style / tab id), consumed as page
153
159
  // globals by the bundled overview renderer (src/client/overview.ts).
154
160
  const toolBadgeStyles = ${toolBadgeStylesJson};
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Report cup mark — two renderings of the OpenSIP coffee cup, both faithful to
3
+ * opensip.ai:
4
+ * - FAVICON: a geometric SVG (browser tabs require an image), byte-matching
5
+ * the shapes in opensip.ai/favicon.svg.
6
+ * - HEADER: the CLI `BANNER_MINI_CUP` ASCII art rendered as styled monospace
7
+ * `<pre>` text — exactly the site header `CoffeeLogo` component.
8
+ */
9
+ /** Data URI for `<link rel="icon" type="image/svg+xml" href="…">`. */
10
+ export declare const REPORT_CUP_FAVICON_DATA_URI: string;
11
+ /**
12
+ * Inline header mark — the site `CoffeeLogo`: `BANNER_MINI_CUP` rendered as
13
+ * styled monospace text. `<pre>` preserves the art's exact spacing; row 0 gets a
14
+ * small left pad to recenter the narrower `⋮` steam glyphs (per opensip.ai).
15
+ */
16
+ export declare const REPORT_CUP_HEADER_HTML: string;
17
+ //# sourceMappingURL=report-cup-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-cup-icon.d.ts","sourceRoot":"","sources":["../src/report-cup-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,QAA6D,CAAC;AAWtG;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAKjB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Report cup mark — two renderings of the OpenSIP coffee cup, both faithful to
3
+ * opensip.ai:
4
+ * - FAVICON: a geometric SVG (browser tabs require an image), byte-matching
5
+ * the shapes in opensip.ai/favicon.svg.
6
+ * - HEADER: the CLI `BANNER_MINI_CUP` ASCII art rendered as styled monospace
7
+ * `<pre>` text — exactly the site header `CoffeeLogo` component.
8
+ */
9
+ const REPORT_CUP_BRAND = '#C8956C';
10
+ const REPORT_CUP_STEAM = '#e8e4df';
11
+ const REPORT_CUP_LID = '#d8d4ce';
12
+ /** Geometric favicon geometry (32×32 viewBox), matching opensip.ai/favicon.svg. */
13
+ const REPORT_CUP_SVG_INNER = `<circle cx="11" cy="3" r="1.8" fill="${REPORT_CUP_STEAM}"/>` +
14
+ `<circle cx="20" cy="3" r="1.8" fill="${REPORT_CUP_STEAM}"/>` +
15
+ `<rect x="3" y="7" width="26" height="8" rx="1" fill="${REPORT_CUP_LID}"/>` +
16
+ `<rect x="3" y="16" width="26" height="9" fill="${REPORT_CUP_BRAND}"/>` +
17
+ `<rect x="7" y="26" width="18" height="4" rx="1" fill="${REPORT_CUP_BRAND}"/>`;
18
+ const REPORT_CUP_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">${REPORT_CUP_SVG_INNER}</svg>`;
19
+ /** Data URI for `<link rel="icon" type="image/svg+xml" href="…">`. */
20
+ export const REPORT_CUP_FAVICON_DATA_URI = `data:image/svg+xml,${encodeURIComponent(REPORT_CUP_SVG)}`;
21
+ /** CLI mini-cup ASCII art (`BANNER_MINI_CUP`): steam `⋮ ⋮`, lid, body, saucer. */
22
+ const MINI_CUP = [' ⋮ ⋮ ', '▟███▙', '▐███▌', ' ▀▀▀ '];
23
+ /** Rows 0–1 (steam + lid) render near-white; rows 2–3 (body + saucer) brand amber. */
24
+ const MINI_CUP_LIGHT_ROWS = new Set([0, 1]);
25
+ const MINI_CUP_LIGHT = '#f5f5f5';
26
+ const MINI_CUP_PRE_STYLE = "font-family:ui-monospace,'Cascadia Code','SF Mono',Menlo,Consolas,monospace;" +
27
+ 'font-size:8px;line-height:1.1;margin:0;padding:0;user-select:none;';
28
+ /**
29
+ * Inline header mark — the site `CoffeeLogo`: `BANNER_MINI_CUP` rendered as
30
+ * styled monospace text. `<pre>` preserves the art's exact spacing; row 0 gets a
31
+ * small left pad to recenter the narrower `⋮` steam glyphs (per opensip.ai).
32
+ */
33
+ export const REPORT_CUP_HEADER_HTML = `<pre aria-hidden="true" style="${MINI_CUP_PRE_STYLE}">${MINI_CUP.map((line, i) => `<span style="color:${MINI_CUP_LIGHT_ROWS.has(i) ? MINI_CUP_LIGHT : REPORT_CUP_BRAND};display:block;${i === 0 ? 'padding-left:0.15em;' : ''}">${line}</span>`).join('')}</pre>`;
34
+ //# sourceMappingURL=report-cup-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-cup-icon.js","sourceRoot":"","sources":["../src/report-cup-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,mFAAmF;AACnF,MAAM,oBAAoB,GACxB,wCAAwC,gBAAgB,KAAK;IAC7D,wCAAwC,gBAAgB,KAAK;IAC7D,wDAAwD,cAAc,KAAK;IAC3E,kDAAkD,gBAAgB,KAAK;IACvE,yDAAyD,gBAAgB,KAAK,CAAC;AAEjF,MAAM,cAAc,GAAG,+DAA+D,oBAAoB,QAAQ,CAAC;AAEnH,sEAAsE;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;AAEtG,kFAAkF;AAClF,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtD,sFAAsF;AACtF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,kBAAkB,GACtB,8EAA8E;IAC9E,oEAAoE,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAAkC,kBAAkB,KAAK,QAAQ,CAAC,GAAG,CACzG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,sBAAsB,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,kBAClF,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EACrC,KAAK,IAAI,SAAS,CACrB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC"}
@@ -19,6 +19,8 @@ import { defineToolTab } from './tool-tab-registry.js';
19
19
  const FITNESS_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.596 12.768a2 2 0 1 0 2.829-2.829l-1.768-1.767a2 2 0 0 0 2.828-2.829l-2.828-2.828a2 2 0 0 0-2.829 2.828l-1.767-1.768a2 2 0 1 0-2.829 2.829z"/><path d="m2.5 21.5 1.4-1.4"/><path d="m20.1 3.9 1.4-1.4"/><path d="M5.343 21.485a2 2 0 1 0 2.829-2.828l1.767 1.768a2 2 0 1 0 2.829-2.829l-6.364-6.364a2 2 0 1 0-2.829 2.829l1.768 1.767a2 2 0 0 0-2.828 2.829z"/><path d="m9.6 14.4 4.8-4.8"/></svg>`;
20
20
  const SIMULATION_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"/><path d="M6.453 15h11.094"/><path d="M8.5 2h7"/></svg>`;
21
21
  const CODE_PATHS_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><circle cx="5" cy="6" r="2"/><circle cx="19" cy="6" r="2"/><circle cx="5" cy="18" r="2"/><circle cx="19" cy="18" r="2"/><line x1="7" y1="7" x2="10" y2="10"/><line x1="17" y1="7" x2="14" y2="10"/><line x1="7" y1="17" x2="10" y2="14"/><line x1="17" y1="17" x2="14" y2="14"/></svg>`;
22
+ // Scissors — "cut what you aren't gonna need" (YAGNI is a reduction audit).
23
+ const YAGNI_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"/><path d="M8.12 8.12 12 12"/><path d="M20 4 8.12 15.88"/><circle cx="6" cy="18" r="3"/><path d="M14.8 14.8 20 20"/></svg>`;
22
24
  defineToolTab({
23
25
  id: 'fitness',
24
26
  tool: 'fit',
@@ -43,4 +45,12 @@ defineToolTab({
43
45
  badgeStyle: 'background:rgba(196,154,108,0.15);color:var(--accent)',
44
46
  renderFunctionName: 'renderCodePathsTab',
45
47
  });
48
+ defineToolTab({
49
+ id: 'yagni',
50
+ tool: 'yagni',
51
+ label: 'YAGNI',
52
+ icon: YAGNI_ICON,
53
+ badgeStyle: 'background:rgba(111,159,176,0.15);color:var(--accent-yagni)',
54
+ renderFunctionName: 'renderYagniTab',
55
+ });
46
56
  //# sourceMappingURL=tool-tabs-registrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-tabs-registrations.js","sourceRoot":"","sources":["../src/tool-tabs-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,kiBAAkiB,CAAC;AAElkB,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,6TAA6T,CAAC;AAEhW,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,ycAAyc,CAAC;AAE5e,aAAa,CAAC;IACZ,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,+DAA+D;IAC3E,kBAAkB,EAAE,kBAAkB;CACvC,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,2DAA2D;IACvE,kBAAkB,EAAE,qBAAqB;CAC1C,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,uDAAuD;IACnE,kBAAkB,EAAE,oBAAoB;CACzC,CAAC,CAAC"}
1
+ {"version":3,"file":"tool-tabs-registrations.js","sourceRoot":"","sources":["../src/tool-tabs-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,kiBAAkiB,CAAC;AAElkB,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,6TAA6T,CAAC;AAEhW,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,ycAAyc,CAAC;AAE5e,4EAA4E;AAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA,ySAAyS,CAAC;AAEvU,aAAa,CAAC;IACZ,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,+DAA+D;IAC3E,kBAAkB,EAAE,kBAAkB;CACvC,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,2DAA2D;IACvE,kBAAkB,EAAE,qBAAqB;CAC1C,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,uDAAuD;IACnE,kBAAkB,EAAE,oBAAoB;CACzC,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,6DAA6D;IACzE,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensip-cli/dashboard",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Self-contained HTML dashboard generator for OpenSIP CLI — renders the fit/sim/graph report from session data and graph catalogs",
6
6
  "keywords": [
@@ -32,7 +32,7 @@
32
32
  "NOTICE"
33
33
  ],
34
34
  "dependencies": {
35
- "@opensip-cli/contracts": "0.1.10"
35
+ "@opensip-cli/contracts": "0.1.12"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "^24.13.2",
@@ -46,7 +46,7 @@
46
46
  "scripts": {
47
47
  "build": "tsc -p src/client/tsconfig.json --noEmit && node scripts/bundle-client.mjs && tsc && node scripts/copy-vendor.mjs",
48
48
  "test": "vitest run --passWithNoTests",
49
- "typecheck": "tsc --noEmit && tsc -p src/client/tsconfig.json --noEmit",
49
+ "typecheck": "tsc -p src/client/tsconfig.json --noEmit && node scripts/bundle-client.mjs && tsc --noEmit",
50
50
  "vendor:cytoscape": "node scripts/vendor-cytoscape.mjs",
51
51
  "clean": "rm -rf dist"
52
52
  }
@@ -1,11 +0,0 @@
1
- /**
2
- * @vitest-environment jsdom
3
- *
4
- * Explore-tab catalog provenance bar. The Explore views render from the single
5
- * cached catalog (the latest `graph` build, whatever its scope); this bar tells
6
- * the reader what that catalog covers, so a scoped/stale build (the
7
- * `graph packages/contracts` footgun) reads as "1 package" instead of looking
8
- * broken. Values are derived from the embedded catalog itself (ground truth).
9
- */
10
- export {};
11
- //# sourceMappingURL=catalog-provenance.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog-provenance.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/catalog-provenance.test.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG"}
@@ -1,112 +0,0 @@
1
- /// <reference lib="dom" />
2
- /**
3
- * @vitest-environment jsdom
4
- *
5
- * Explore-tab catalog provenance bar. The Explore views render from the single
6
- * cached catalog (the latest `graph` build, whatever its scope); this bar tells
7
- * the reader what that catalog covers, so a scoped/stale build (the
8
- * `graph packages/contracts` footgun) reads as "1 package" instead of looking
9
- * broken. Values are derived from the embedded catalog itself (ground truth).
10
- */
11
- import { describe, expect, it, beforeEach } from 'vitest';
12
- import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
13
- function loadEnv() {
14
- // `renderCatalogProvenance` (with `el`, `packagesInCatalog`) now lives in the
15
- // typed client bundle (L4) and is exposed as a page global; `var sessions = []`
16
- // satisfies checks.ts's load-time `computeCheckStats()` read.
17
- const tail = `return { renderCatalogProvenance };`;
18
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
19
- const factory = new Function('var sessions = [];\n' + DASHBOARD_CLIENT_BUNDLE + tail);
20
- return factory();
21
- }
22
- function occ(pkg, name) {
23
- return {
24
- qualifiedName: name,
25
- simpleName: name,
26
- bodyHash: pkg + ':' + name,
27
- filePath: 'packages/' + pkg + '/src/' + name + '.ts',
28
- package: '@opensip-cli/' + pkg,
29
- line: 1,
30
- column: 0,
31
- endLine: 5,
32
- kind: 'function-declaration',
33
- params: [],
34
- returnType: null,
35
- enclosingClass: null,
36
- decorators: [],
37
- visibility: 'exported',
38
- inTestFile: false,
39
- definedInGenerated: false,
40
- calls: [],
41
- };
42
- }
43
- function catalog(over) {
44
- return {
45
- version: '3.0',
46
- tool: 'graph',
47
- language: 'typescript',
48
- builtAt: new Date().toISOString(),
49
- functions: {},
50
- ...over,
51
- };
52
- }
53
- beforeEach(() => {
54
- document.body.innerHTML = '';
55
- });
56
- describe('catalog provenance bar', () => {
57
- it('shows a single-package scope (the scoped-run footgun) with the package name inline', () => {
58
- const env = loadEnv();
59
- const host = document.createElement('div');
60
- env.renderCatalogProvenance(host, catalog({
61
- cacheKey: 'eng=0.1.0|mode=exact|ts-x',
62
- functions: { a: [occ('contracts', 'a')], b: [occ('contracts', 'b')] },
63
- }));
64
- const bar = host.querySelector('.catalog-provenance');
65
- expect(bar).not.toBeNull();
66
- const text = bar?.textContent ?? '';
67
- expect(text).toContain('1 package');
68
- expect(text).toContain('contracts');
69
- // 2 occurrences across the single package.
70
- expect(text).toContain('2');
71
- // engine parsed from the cache key.
72
- expect(text.toLowerCase()).toContain('exact');
73
- });
74
- it('shows the full multi-package scope as a count (not an inline list)', () => {
75
- const env = loadEnv();
76
- const host = document.createElement('div');
77
- const functions = {};
78
- for (const p of ['core', 'cli', 'contracts', 'datastore', 'output', 'targeting']) {
79
- functions[p] = [occ(p, p + 'Fn')];
80
- }
81
- env.renderCatalogProvenance(host, catalog({ cacheKey: 'eng=0.1.0|mode=sharded|s-34', functions }));
82
- const text = host.querySelector('.catalog-provenance')?.textContent ?? '';
83
- expect(text).toContain('6 packages');
84
- // Names are NOT inlined past the small-set threshold (kept compact).
85
- expect(text).not.toContain(': core,');
86
- expect(text.toLowerCase()).toContain('sharded');
87
- });
88
- it('flags fast (approximate) resolution and omits the flag for exact', () => {
89
- const env = loadEnv();
90
- const fastHost = document.createElement('div');
91
- env.renderCatalogProvenance(fastHost, catalog({
92
- cacheKey: 'eng=0.1.0|mode=exact|x',
93
- resolutionMode: 'fast',
94
- functions: { a: [occ('core', 'a')] },
95
- }));
96
- expect(fastHost.querySelector('.catalog-provenance')?.textContent ?? '').toContain('approximate');
97
- const exactHost = document.createElement('div');
98
- env.renderCatalogProvenance(exactHost, catalog({
99
- cacheKey: 'eng=0.1.0|mode=exact|x',
100
- resolutionMode: 'exact',
101
- functions: { a: [occ('core', 'a')] },
102
- }));
103
- expect(exactHost.querySelector('.catalog-provenance')?.textContent ?? '').not.toContain('approximate');
104
- });
105
- it('no-ops when there is no catalog', () => {
106
- const env = loadEnv();
107
- const host = document.createElement('div');
108
- env.renderCatalogProvenance(host, null);
109
- expect(host.querySelector('.catalog-provenance')).toBeNull();
110
- });
111
- });
112
- //# sourceMappingURL=catalog-provenance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog-provenance.test.js","sourceRoot":"","sources":["../../src/__tests__/catalog-provenance.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * @vitest-environment jsdom
3
- *
4
- * Coupling-grid attribution: a callee whose body is duplicated across
5
- * packages must be attributed to the caller's own package, not the
6
- * byBodyHash collision winner.
7
- */
8
- export {};
9
- //# sourceMappingURL=coupling-attribution.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coupling-attribution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/coupling-attribution.test.ts"],"names":[],"mappings":"AACA;;;;;;GAMG"}
@@ -1,95 +0,0 @@
1
- /// <reference lib="dom" />
2
- /**
3
- * @vitest-environment jsdom
4
- *
5
- * Coupling-grid attribution: a callee whose body is duplicated across
6
- * packages must be attributed to the caller's own package, not the
7
- * byBodyHash collision winner.
8
- */
9
- import { describe, expect, it } from 'vitest';
10
- import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
11
- function loadCouplingEnv() {
12
- // `buildIndexes` / `resolveCalleeOcc` (and the whole Code Paths panel + views)
13
- // now live in the typed client bundle (L4) and are exposed as page globals.
14
- // `var sessions = []` / `var EDITOR_PROTOCOL = null` satisfy the bundle's
15
- // load-time reads.
16
- const head = `
17
- var sessions = [];
18
- var EDITOR_PROTOCOL = null;
19
- `;
20
- const tail = `return { buildIndexes, resolveCalleeOcc };`;
21
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
22
- const factory = new Function(head + DASHBOARD_CLIENT_BUNDLE + tail);
23
- return factory();
24
- }
25
- function occ(over) {
26
- return {
27
- simpleName: 'f',
28
- line: 1,
29
- column: 0,
30
- endLine: 2,
31
- kind: 'function-declaration',
32
- params: [],
33
- returnType: null,
34
- enclosingClass: null,
35
- decorators: [],
36
- visibility: 'exported',
37
- inTestFile: false,
38
- definedInGenerated: false,
39
- calls: [],
40
- ...over,
41
- };
42
- }
43
- describe('coupling callee attribution', () => {
44
- it('attributes a duplicated-body callee to the caller’s own package', () => {
45
- const env = loadCouplingEnv();
46
- // Same body 'H' in pkg-a and pkg-b; caller is in pkg-a.
47
- const aF = occ({
48
- bodyHash: 'H',
49
- filePath: 'packages/pkg-a/src/f.ts',
50
- qualifiedName: 'packages/pkg-a/src/f.f',
51
- });
52
- const bF = occ({
53
- bodyHash: 'H',
54
- filePath: 'packages/pkg-b/src/f.ts',
55
- qualifiedName: 'packages/pkg-b/src/f.f',
56
- });
57
- const caller = occ({
58
- bodyHash: 'C',
59
- filePath: 'packages/pkg-a/src/call.ts',
60
- qualifiedName: 'packages/pkg-a/src/call.caller',
61
- simpleName: 'caller',
62
- calls: [
63
- { to: ['H'], line: 1, column: 0, resolution: 'static', confidence: 'high', text: 'f()' },
64
- ],
65
- });
66
- const catalog = { functions: { f: [aF, bF], caller: [caller] } };
67
- const indexes = env.buildIndexes(catalog);
68
- const resolved = env.resolveCalleeOcc('H', caller, indexes);
69
- expect(resolved?.filePath).toBe('packages/pkg-a/src/f.ts'); // caller's package, not the collision winner
70
- });
71
- it('falls back deterministically (lowest qualifiedName) when no same-package candidate', () => {
72
- const env = loadCouplingEnv();
73
- const aF = occ({
74
- bodyHash: 'H',
75
- filePath: 'packages/pkg-a/src/f.ts',
76
- qualifiedName: 'packages/pkg-a/src/f.f',
77
- });
78
- const bF = occ({
79
- bodyHash: 'H',
80
- filePath: 'packages/pkg-b/src/f.ts',
81
- qualifiedName: 'packages/pkg-b/src/f.f',
82
- });
83
- const caller = occ({
84
- bodyHash: 'C',
85
- filePath: 'packages/pkg-z/src/call.ts',
86
- qualifiedName: 'packages/pkg-z/src/call.caller',
87
- simpleName: 'caller',
88
- });
89
- const catalog = { functions: { f: [bF, aF], caller: [caller] } };
90
- const indexes = env.buildIndexes(catalog);
91
- const resolved = env.resolveCalleeOcc('H', caller, indexes);
92
- expect(resolved?.qualifiedName).toBe('packages/pkg-a/src/f.f'); // deterministic lowest
93
- });
94
- });
95
- //# sourceMappingURL=coupling-attribution.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coupling-attribution.test.js","sourceRoot":"","sources":["../../src/__tests__/coupling-attribution.test.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Bundle-weight CI gate.
3
- *
4
- * The Graph view ships a vendored Cytoscape renderer (~482 KB) plus a
5
- * per-report view-model JSON blob. These assertions fail CI if either
6
- * grows past the Phase 0 budget, so a careless dependency bump or schema
7
- * bloat is caught before it lands in every generated report.
8
- *
9
- * The Visualization view's JS now lives in the typed client bundle (L4,
10
- * `DASHBOARD_CLIENT_BUNDLE`) rather than a standalone `dashboardViewGraphJs()`
11
- * emitter, so the "our own JS" budget is measured against the WHOLE client
12
- * bundle (every migrated module) rather than the single view's string.
13
- *
14
- * Budgets (Phase 0 §1 / §4.5):
15
- * - vendor bundle raw: <= 600 KB
16
- * - vendor + our client bundle: <= 700 KB (BUDGET_KB + 100, accounts for the
17
- * whole migrated client bundle)
18
- * - client bundle alone: < 200 KB (guards against a data blob sneaking
19
- * into our hand-written JS)
20
- * - view-model JSON per element: within the §4.5 per-node/edge estimates
21
- */
22
- export {};
23
- //# sourceMappingURL=dashboard-bundle-weight.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-bundle-weight.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-bundle-weight.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}