@transitrix/diagrams 1.0.0

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 (541) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/__tests__/edge-path.test.d.ts +1 -0
  4. package/dist/__tests__/edge-path.test.js +39 -0
  5. package/dist/__tests__/scope.test.d.ts +1 -0
  6. package/dist/__tests__/scope.test.js +23 -0
  7. package/dist/__tests__/yaml-normalize.test.d.ts +1 -0
  8. package/dist/__tests__/yaml-normalize.test.js +148 -0
  9. package/dist/activities/__tests__/cpm.test.d.ts +1 -0
  10. package/dist/activities/__tests__/cpm.test.js +146 -0
  11. package/dist/activities/__tests__/gantt.test.d.ts +1 -0
  12. package/dist/activities/__tests__/gantt.test.js +224 -0
  13. package/dist/activities/__tests__/layout.test.d.ts +1 -0
  14. package/dist/activities/__tests__/layout.test.js +98 -0
  15. package/dist/activities/__tests__/validate.test.d.ts +1 -0
  16. package/dist/activities/__tests__/validate.test.js +363 -0
  17. package/dist/activities/cpm.d.ts +2 -0
  18. package/dist/activities/cpm.js +86 -0
  19. package/dist/activities/gantt.d.ts +6 -0
  20. package/dist/activities/gantt.js +250 -0
  21. package/dist/activities/index.d.ts +5 -0
  22. package/dist/activities/index.js +4 -0
  23. package/dist/activities/layout.d.ts +2 -0
  24. package/dist/activities/layout.js +103 -0
  25. package/dist/activities/types.d.ts +125 -0
  26. package/dist/activities/types.js +1 -0
  27. package/dist/activities/validate.d.ts +2 -0
  28. package/dist/activities/validate.js +326 -0
  29. package/dist/activity-card/__tests__/example.test.d.ts +1 -0
  30. package/dist/activity-card/__tests__/example.test.js +56 -0
  31. package/dist/activity-card/__tests__/layout.test.d.ts +1 -0
  32. package/dist/activity-card/__tests__/layout.test.js +57 -0
  33. package/dist/activity-card/__tests__/resolver.test.d.ts +1 -0
  34. package/dist/activity-card/__tests__/resolver.test.js +146 -0
  35. package/dist/activity-card/__tests__/validate.test.d.ts +1 -0
  36. package/dist/activity-card/__tests__/validate.test.js +116 -0
  37. package/dist/activity-card/index.d.ts +5 -0
  38. package/dist/activity-card/index.js +3 -0
  39. package/dist/activity-card/layout.d.ts +7 -0
  40. package/dist/activity-card/layout.js +167 -0
  41. package/dist/activity-card/resolver.d.ts +7 -0
  42. package/dist/activity-card/resolver.js +310 -0
  43. package/dist/activity-card/types.d.ts +175 -0
  44. package/dist/activity-card/types.js +20 -0
  45. package/dist/activity-card/validate.d.ts +3 -0
  46. package/dist/activity-card/validate.js +145 -0
  47. package/dist/actor/__tests__/validate.test.d.ts +1 -0
  48. package/dist/actor/__tests__/validate.test.js +57 -0
  49. package/dist/actor/index.d.ts +3 -0
  50. package/dist/actor/index.js +2 -0
  51. package/dist/actor/types.d.ts +20 -0
  52. package/dist/actor/types.js +4 -0
  53. package/dist/actor/validate.d.ts +2 -0
  54. package/dist/actor/validate.js +34 -0
  55. package/dist/applications/__tests__/validate.test.d.ts +1 -0
  56. package/dist/applications/__tests__/validate.test.js +223 -0
  57. package/dist/applications/index.d.ts +2 -0
  58. package/dist/applications/index.js +1 -0
  59. package/dist/applications/types.d.ts +39 -0
  60. package/dist/applications/types.js +1 -0
  61. package/dist/applications/validate.d.ts +3 -0
  62. package/dist/applications/validate.js +109 -0
  63. package/dist/assertion/__tests__/example.test.d.ts +1 -0
  64. package/dist/assertion/__tests__/example.test.js +32 -0
  65. package/dist/assertion/__tests__/validate.test.d.ts +1 -0
  66. package/dist/assertion/__tests__/validate.test.js +130 -0
  67. package/dist/assertion/index.d.ts +4 -0
  68. package/dist/assertion/index.js +2 -0
  69. package/dist/assertion/types.d.ts +43 -0
  70. package/dist/assertion/types.js +7 -0
  71. package/dist/assertion/validate.d.ts +9 -0
  72. package/dist/assertion/validate.js +137 -0
  73. package/dist/blocks/__tests__/layout.test.d.ts +1 -0
  74. package/dist/blocks/__tests__/layout.test.js +153 -0
  75. package/dist/blocks/__tests__/validate.test.d.ts +1 -0
  76. package/dist/blocks/__tests__/validate.test.js +235 -0
  77. package/dist/blocks/index.d.ts +4 -0
  78. package/dist/blocks/index.js +2 -0
  79. package/dist/blocks/layout.d.ts +4 -0
  80. package/dist/blocks/layout.js +145 -0
  81. package/dist/blocks/types.d.ts +56 -0
  82. package/dist/blocks/types.js +1 -0
  83. package/dist/blocks/validate.d.ts +9 -0
  84. package/dist/blocks/validate.js +186 -0
  85. package/dist/capability-map/__tests__/validate.test.d.ts +1 -0
  86. package/dist/capability-map/__tests__/validate.test.js +212 -0
  87. package/dist/capability-map/index.d.ts +2 -0
  88. package/dist/capability-map/index.js +1 -0
  89. package/dist/capability-map/types.d.ts +26 -0
  90. package/dist/capability-map/types.js +1 -0
  91. package/dist/capability-map/validate.d.ts +3 -0
  92. package/dist/capability-map/validate.js +103 -0
  93. package/dist/change/__tests__/validate.test.d.ts +1 -0
  94. package/dist/change/__tests__/validate.test.js +73 -0
  95. package/dist/change/index.d.ts +2 -0
  96. package/dist/change/index.js +1 -0
  97. package/dist/change/types.d.ts +17 -0
  98. package/dist/change/types.js +3 -0
  99. package/dist/change/validate.d.ts +2 -0
  100. package/dist/change/validate.js +57 -0
  101. package/dist/compliance/__tests__/classify.test.d.ts +1 -0
  102. package/dist/compliance/__tests__/classify.test.js +24 -0
  103. package/dist/compliance/__tests__/confidence.test.d.ts +1 -0
  104. package/dist/compliance/__tests__/confidence.test.js +78 -0
  105. package/dist/compliance/__tests__/coverage-metric.test.d.ts +1 -0
  106. package/dist/compliance/__tests__/coverage-metric.test.js +164 -0
  107. package/dist/compliance/__tests__/demo-scenario.test.d.ts +1 -0
  108. package/dist/compliance/__tests__/demo-scenario.test.js +226 -0
  109. package/dist/compliance/__tests__/example.test.d.ts +1 -0
  110. package/dist/compliance/__tests__/example.test.js +51 -0
  111. package/dist/compliance/__tests__/gap-report.test.d.ts +1 -0
  112. package/dist/compliance/__tests__/gap-report.test.js +113 -0
  113. package/dist/compliance/__tests__/html.test.d.ts +1 -0
  114. package/dist/compliance/__tests__/html.test.js +122 -0
  115. package/dist/compliance/__tests__/impact.test.d.ts +1 -0
  116. package/dist/compliance/__tests__/impact.test.js +410 -0
  117. package/dist/compliance/__tests__/markdown.test.d.ts +1 -0
  118. package/dist/compliance/__tests__/markdown.test.js +85 -0
  119. package/dist/compliance/__tests__/views.test.d.ts +1 -0
  120. package/dist/compliance/__tests__/views.test.js +59 -0
  121. package/dist/compliance/classify.d.ts +27 -0
  122. package/dist/compliance/classify.js +60 -0
  123. package/dist/compliance/confidence.d.ts +27 -0
  124. package/dist/compliance/confidence.js +43 -0
  125. package/dist/compliance/coverage-metric.d.ts +74 -0
  126. package/dist/compliance/coverage-metric.js +181 -0
  127. package/dist/compliance/gap-report.d.ts +20 -0
  128. package/dist/compliance/gap-report.js +64 -0
  129. package/dist/compliance/html.d.ts +22 -0
  130. package/dist/compliance/html.js +256 -0
  131. package/dist/compliance/impact.d.ts +251 -0
  132. package/dist/compliance/impact.js +464 -0
  133. package/dist/compliance/index.d.ts +16 -0
  134. package/dist/compliance/index.js +9 -0
  135. package/dist/compliance/markdown.d.ts +18 -0
  136. package/dist/compliance/markdown.js +129 -0
  137. package/dist/compliance/reverse-index.d.ts +8 -0
  138. package/dist/compliance/reverse-index.js +30 -0
  139. package/dist/compliance/types.d.ts +98 -0
  140. package/dist/compliance/types.js +5 -0
  141. package/dist/compliance/views.d.ts +14 -0
  142. package/dist/compliance/views.js +35 -0
  143. package/dist/compliance-matrix/__tests__/build.test.d.ts +1 -0
  144. package/dist/compliance-matrix/__tests__/build.test.js +183 -0
  145. package/dist/compliance-matrix/__tests__/example.test.d.ts +1 -0
  146. package/dist/compliance-matrix/__tests__/example.test.js +49 -0
  147. package/dist/compliance-matrix/build.d.ts +18 -0
  148. package/dist/compliance-matrix/build.js +0 -0
  149. package/dist/compliance-matrix/index.d.ts +2 -0
  150. package/dist/compliance-matrix/index.js +1 -0
  151. package/dist/compliance-matrix/types.d.ts +86 -0
  152. package/dist/compliance-matrix/types.js +8 -0
  153. package/dist/confidence/__tests__/score.test.d.ts +1 -0
  154. package/dist/confidence/__tests__/score.test.js +188 -0
  155. package/dist/confidence/index.d.ts +2 -0
  156. package/dist/confidence/index.js +1 -0
  157. package/dist/confidence/score.d.ts +62 -0
  158. package/dist/confidence/score.js +215 -0
  159. package/dist/confidence/types.d.ts +79 -0
  160. package/dist/confidence/types.js +6 -0
  161. package/dist/edge-path.d.ts +18 -0
  162. package/dist/edge-path.js +35 -0
  163. package/dist/element-envelope.d.ts +15 -0
  164. package/dist/element-envelope.js +55 -0
  165. package/dist/factor/__tests__/validate.test.d.ts +1 -0
  166. package/dist/factor/__tests__/validate.test.js +83 -0
  167. package/dist/factor/index.d.ts +3 -0
  168. package/dist/factor/index.js +2 -0
  169. package/dist/factor/types.d.ts +23 -0
  170. package/dist/factor/types.js +6 -0
  171. package/dist/factor/validate.d.ts +2 -0
  172. package/dist/factor/validate.js +69 -0
  173. package/dist/fgca/__tests__/chain-table.test.d.ts +1 -0
  174. package/dist/fgca/__tests__/chain-table.test.js +158 -0
  175. package/dist/fgca/__tests__/layout.test.d.ts +1 -0
  176. package/dist/fgca/__tests__/layout.test.js +140 -0
  177. package/dist/fgca/__tests__/parse-canonical.test.d.ts +1 -0
  178. package/dist/fgca/__tests__/parse-canonical.test.js +224 -0
  179. package/dist/fgca/__tests__/preview-layout.test.d.ts +1 -0
  180. package/dist/fgca/__tests__/preview-layout.test.js +106 -0
  181. package/dist/fgca/__tests__/validate.test.d.ts +1 -0
  182. package/dist/fgca/__tests__/validate.test.js +125 -0
  183. package/dist/fgca/chain-table.d.ts +36 -0
  184. package/dist/fgca/chain-table.js +177 -0
  185. package/dist/fgca/index.d.ts +16 -0
  186. package/dist/fgca/index.js +11 -0
  187. package/dist/fgca/layout.d.ts +27 -0
  188. package/dist/fgca/layout.js +156 -0
  189. package/dist/fgca/nodeTypes.d.ts +6 -0
  190. package/dist/fgca/nodeTypes.js +10 -0
  191. package/dist/fgca/nodes/FGCAActivityNode.d.ts +13 -0
  192. package/dist/fgca/nodes/FGCAActivityNode.js +35 -0
  193. package/dist/fgca/nodes/FGCAChangeNode.d.ts +12 -0
  194. package/dist/fgca/nodes/FGCAChangeNode.js +35 -0
  195. package/dist/fgca/nodes/FGCAFactorNode.d.ts +12 -0
  196. package/dist/fgca/nodes/FGCAFactorNode.js +35 -0
  197. package/dist/fgca/nodes/FGCAGoalNode.d.ts +14 -0
  198. package/dist/fgca/nodes/FGCAGoalNode.js +40 -0
  199. package/dist/fgca/parse-canonical.d.ts +58 -0
  200. package/dist/fgca/parse-canonical.js +339 -0
  201. package/dist/fgca/preview-layout.d.ts +87 -0
  202. package/dist/fgca/preview-layout.js +122 -0
  203. package/dist/fgca/types.d.ts +39 -0
  204. package/dist/fgca/types.js +7 -0
  205. package/dist/fgca/validate.d.ts +14 -0
  206. package/dist/fgca/validate.js +108 -0
  207. package/dist/geometry.d.ts +7 -0
  208. package/dist/geometry.js +2 -0
  209. package/dist/goals/__tests__/layout.test.d.ts +1 -0
  210. package/dist/goals/__tests__/layout.test.js +153 -0
  211. package/dist/goals/__tests__/mutations.test.d.ts +1 -0
  212. package/dist/goals/__tests__/mutations.test.js +95 -0
  213. package/dist/goals/__tests__/parse-canonical.test.d.ts +1 -0
  214. package/dist/goals/__tests__/parse-canonical.test.js +129 -0
  215. package/dist/goals/__tests__/validate.test.d.ts +1 -0
  216. package/dist/goals/__tests__/validate.test.js +183 -0
  217. package/dist/goals/index.d.ts +6 -0
  218. package/dist/goals/index.js +4 -0
  219. package/dist/goals/layout.d.ts +11 -0
  220. package/dist/goals/layout.js +147 -0
  221. package/dist/goals/mutations.d.ts +6 -0
  222. package/dist/goals/mutations.js +116 -0
  223. package/dist/goals/parse-canonical.d.ts +29 -0
  224. package/dist/goals/parse-canonical.js +257 -0
  225. package/dist/goals/types.d.ts +71 -0
  226. package/dist/goals/types.js +1 -0
  227. package/dist/goals/validate.d.ts +2 -0
  228. package/dist/goals/validate.js +122 -0
  229. package/dist/index.d.ts +23 -0
  230. package/dist/index.js +23 -0
  231. package/dist/issues/__tests__/layout.test.d.ts +1 -0
  232. package/dist/issues/__tests__/layout.test.js +62 -0
  233. package/dist/issues/__tests__/validate.test.d.ts +1 -0
  234. package/dist/issues/__tests__/validate.test.js +82 -0
  235. package/dist/issues/index.d.ts +4 -0
  236. package/dist/issues/index.js +2 -0
  237. package/dist/issues/layout.d.ts +10 -0
  238. package/dist/issues/layout.js +82 -0
  239. package/dist/issues/types.d.ts +61 -0
  240. package/dist/issues/types.js +6 -0
  241. package/dist/issues/validate.d.ts +3 -0
  242. package/dist/issues/validate.js +143 -0
  243. package/dist/process-blueprint/__tests__/compliance-lane.test.d.ts +1 -0
  244. package/dist/process-blueprint/__tests__/compliance-lane.test.js +272 -0
  245. package/dist/process-blueprint/__tests__/layout.test.d.ts +1 -0
  246. package/dist/process-blueprint/__tests__/layout.test.js +159 -0
  247. package/dist/process-blueprint/__tests__/validate.test.d.ts +1 -0
  248. package/dist/process-blueprint/__tests__/validate.test.js +280 -0
  249. package/dist/process-blueprint/index.d.ts +4 -0
  250. package/dist/process-blueprint/index.js +2 -0
  251. package/dist/process-blueprint/layout.d.ts +2 -0
  252. package/dist/process-blueprint/layout.js +416 -0
  253. package/dist/process-blueprint/types.d.ts +220 -0
  254. package/dist/process-blueprint/types.js +1 -0
  255. package/dist/process-blueprint/validate.d.ts +3 -0
  256. package/dist/process-blueprint/validate.js +165 -0
  257. package/dist/process-map/__tests__/validate.test.d.ts +1 -0
  258. package/dist/process-map/__tests__/validate.test.js +199 -0
  259. package/dist/process-map/index.d.ts +2 -0
  260. package/dist/process-map/index.js +1 -0
  261. package/dist/process-map/types.d.ts +32 -0
  262. package/dist/process-map/types.js +1 -0
  263. package/dist/process-map/validate.d.ts +3 -0
  264. package/dist/process-map/validate.js +115 -0
  265. package/dist/products/__tests__/validate.test.d.ts +1 -0
  266. package/dist/products/__tests__/validate.test.js +210 -0
  267. package/dist/products/index.d.ts +2 -0
  268. package/dist/products/index.js +1 -0
  269. package/dist/products/types.d.ts +28 -0
  270. package/dist/products/types.js +1 -0
  271. package/dist/products/validate.d.ts +3 -0
  272. package/dist/products/validate.js +93 -0
  273. package/dist/repo-validate/__tests__/validate-repo.test.d.ts +1 -0
  274. package/dist/repo-validate/__tests__/validate-repo.test.js +132 -0
  275. package/dist/repo-validate/index.d.ts +2 -0
  276. package/dist/repo-validate/index.js +1 -0
  277. package/dist/repo-validate/types.d.ts +34 -0
  278. package/dist/repo-validate/types.js +14 -0
  279. package/dist/repo-validate/validate-repo.d.ts +8 -0
  280. package/dist/repo-validate/validate-repo.js +189 -0
  281. package/dist/requirement/__tests__/example.test.d.ts +1 -0
  282. package/dist/requirement/__tests__/example.test.js +21 -0
  283. package/dist/requirement/__tests__/validate.test.d.ts +1 -0
  284. package/dist/requirement/__tests__/validate.test.js +80 -0
  285. package/dist/requirement/index.d.ts +4 -0
  286. package/dist/requirement/index.js +2 -0
  287. package/dist/requirement/types.d.ts +25 -0
  288. package/dist/requirement/types.js +4 -0
  289. package/dist/requirement/validate.d.ts +7 -0
  290. package/dist/requirement/validate.js +81 -0
  291. package/dist/scenarios/__tests__/validate.test.d.ts +1 -0
  292. package/dist/scenarios/__tests__/validate.test.js +183 -0
  293. package/dist/scenarios/index.d.ts +2 -0
  294. package/dist/scenarios/index.js +1 -0
  295. package/dist/scenarios/types.d.ts +45 -0
  296. package/dist/scenarios/types.js +1 -0
  297. package/dist/scenarios/validate.d.ts +3 -0
  298. package/dist/scenarios/validate.js +110 -0
  299. package/dist/schema-version.d.ts +16 -0
  300. package/dist/schema-version.js +16 -0
  301. package/dist/scope.d.ts +23 -0
  302. package/dist/scope.js +38 -0
  303. package/dist/stakeholder/__tests__/validate.test.d.ts +1 -0
  304. package/dist/stakeholder/__tests__/validate.test.js +86 -0
  305. package/dist/stakeholder/index.d.ts +3 -0
  306. package/dist/stakeholder/index.js +2 -0
  307. package/dist/stakeholder/types.d.ts +24 -0
  308. package/dist/stakeholder/types.js +5 -0
  309. package/dist/stakeholder/validate.d.ts +2 -0
  310. package/dist/stakeholder/validate.js +58 -0
  311. package/dist/target-state/__tests__/validate.test.d.ts +1 -0
  312. package/dist/target-state/__tests__/validate.test.js +62 -0
  313. package/dist/target-state/index.d.ts +2 -0
  314. package/dist/target-state/index.js +1 -0
  315. package/dist/target-state/types.d.ts +18 -0
  316. package/dist/target-state/types.js +7 -0
  317. package/dist/target-state/validate.d.ts +2 -0
  318. package/dist/target-state/validate.js +61 -0
  319. package/dist/theme/index.d.ts +4 -0
  320. package/dist/theme/index.js +2 -0
  321. package/dist/theme/themes.d.ts +16 -0
  322. package/dist/theme/themes.js +213 -0
  323. package/dist/theme/tokens.d.ts +158 -0
  324. package/dist/theme/tokens.js +105 -0
  325. package/dist/typed-id.d.ts +20 -0
  326. package/dist/typed-id.js +38 -0
  327. package/dist/validation-types.d.ts +34 -0
  328. package/dist/validation-types.js +1 -0
  329. package/dist/webview/__tests__/entry-notations.test.d.ts +1 -0
  330. package/dist/webview/__tests__/entry-notations.test.js +62 -0
  331. package/dist/webview/__tests__/entry.test.d.ts +1 -0
  332. package/dist/webview/__tests__/entry.test.js +56 -0
  333. package/dist/webview/__tests__/render-goals.test.d.ts +1 -0
  334. package/dist/webview/__tests__/render-goals.test.js +65 -0
  335. package/dist/webview/entry.d.ts +38 -0
  336. package/dist/webview/entry.js +182 -0
  337. package/dist/webview/render-activities.d.ts +24 -0
  338. package/dist/webview/render-activities.js +127 -0
  339. package/dist/webview/render-activity-card.d.ts +5 -0
  340. package/dist/webview/render-activity-card.js +168 -0
  341. package/dist/webview/render-applications.d.ts +11 -0
  342. package/dist/webview/render-applications.js +105 -0
  343. package/dist/webview/render-blocks.d.ts +5 -0
  344. package/dist/webview/render-blocks.js +71 -0
  345. package/dist/webview/render-capability-map.d.ts +7 -0
  346. package/dist/webview/render-capability-map.js +88 -0
  347. package/dist/webview/render-fgca.d.ts +8 -0
  348. package/dist/webview/render-fgca.js +94 -0
  349. package/dist/webview/render-goals.d.ts +6 -0
  350. package/dist/webview/render-goals.js +92 -0
  351. package/dist/webview/render-process-blueprint.d.ts +5 -0
  352. package/dist/webview/render-process-blueprint.js +135 -0
  353. package/dist/webview/render-process-map.d.ts +7 -0
  354. package/dist/webview/render-process-map.js +82 -0
  355. package/dist/webview/render-products.d.ts +7 -0
  356. package/dist/webview/render-products.js +81 -0
  357. package/dist/webview/render-scenarios.d.ts +7 -0
  358. package/dist/webview/render-scenarios.js +75 -0
  359. package/dist/webview/render-util.d.ts +16 -0
  360. package/dist/webview/render-util.js +31 -0
  361. package/dist/webview/transitrix-render.css +323 -0
  362. package/dist/webview/transitrix-render.js +6452 -0
  363. package/dist/webview/transitrix-render.js.map +7 -0
  364. package/dist/yaml-normalize.d.ts +20 -0
  365. package/dist/yaml-normalize.js +57 -0
  366. package/package.json +40 -0
  367. package/src/__tests__/edge-path.test.ts +46 -0
  368. package/src/__tests__/scope.test.ts +27 -0
  369. package/src/__tests__/yaml-normalize.test.ts +158 -0
  370. package/src/activities/__tests__/cpm.test.ts +164 -0
  371. package/src/activities/__tests__/gantt.test.ts +245 -0
  372. package/src/activities/__tests__/layout.test.ts +112 -0
  373. package/src/activities/__tests__/validate.test.ts +409 -0
  374. package/src/activities/cpm.ts +95 -0
  375. package/src/activities/gantt.ts +276 -0
  376. package/src/activities/index.ts +28 -0
  377. package/src/activities/layout.ts +112 -0
  378. package/src/activities/types.ts +148 -0
  379. package/src/activities/validate.ts +357 -0
  380. package/src/activity-card/__tests__/example.test.ts +66 -0
  381. package/src/activity-card/__tests__/layout.test.ts +63 -0
  382. package/src/activity-card/__tests__/resolver.test.ts +161 -0
  383. package/src/activity-card/__tests__/validate.test.ts +131 -0
  384. package/src/activity-card/index.ts +32 -0
  385. package/src/activity-card/layout.ts +194 -0
  386. package/src/activity-card/resolver.ts +337 -0
  387. package/src/activity-card/types.ts +237 -0
  388. package/src/activity-card/validate.ts +158 -0
  389. package/src/actor/__tests__/validate.test.ts +67 -0
  390. package/src/actor/index.ts +3 -0
  391. package/src/actor/types.ts +29 -0
  392. package/src/actor/validate.ts +38 -0
  393. package/src/applications/__tests__/validate.test.ts +256 -0
  394. package/src/applications/index.ts +11 -0
  395. package/src/applications/types.ts +43 -0
  396. package/src/applications/validate.ts +131 -0
  397. package/src/assertion/__tests__/example.test.ts +37 -0
  398. package/src/assertion/__tests__/validate.test.ts +142 -0
  399. package/src/assertion/index.ts +12 -0
  400. package/src/assertion/types.ts +58 -0
  401. package/src/assertion/validate.ts +145 -0
  402. package/src/blocks/__tests__/layout.test.ts +169 -0
  403. package/src/blocks/__tests__/validate.test.ts +260 -0
  404. package/src/blocks/index.ts +17 -0
  405. package/src/blocks/layout.ts +186 -0
  406. package/src/blocks/types.ts +62 -0
  407. package/src/blocks/validate.ts +206 -0
  408. package/src/capability-map/__tests__/validate.test.ts +238 -0
  409. package/src/capability-map/index.ts +8 -0
  410. package/src/capability-map/types.ts +29 -0
  411. package/src/capability-map/validate.ts +127 -0
  412. package/src/change/__tests__/validate.test.ts +88 -0
  413. package/src/change/index.ts +2 -0
  414. package/src/change/types.ts +23 -0
  415. package/src/change/validate.ts +61 -0
  416. package/src/compliance/__tests__/classify.test.ts +27 -0
  417. package/src/compliance/__tests__/confidence.test.ts +98 -0
  418. package/src/compliance/__tests__/coverage-metric.test.ts +188 -0
  419. package/src/compliance/__tests__/demo-scenario.test.ts +273 -0
  420. package/src/compliance/__tests__/example.test.ts +57 -0
  421. package/src/compliance/__tests__/gap-report.test.ts +129 -0
  422. package/src/compliance/__tests__/html.test.ts +142 -0
  423. package/src/compliance/__tests__/impact.test.ts +482 -0
  424. package/src/compliance/__tests__/markdown.test.ts +95 -0
  425. package/src/compliance/__tests__/views.test.ts +64 -0
  426. package/src/compliance/classify.ts +84 -0
  427. package/src/compliance/confidence.ts +69 -0
  428. package/src/compliance/coverage-metric.ts +263 -0
  429. package/src/compliance/gap-report.ts +94 -0
  430. package/src/compliance/html.ts +295 -0
  431. package/src/compliance/impact.ts +677 -0
  432. package/src/compliance/index.ts +56 -0
  433. package/src/compliance/markdown.ts +135 -0
  434. package/src/compliance/reverse-index.ts +33 -0
  435. package/src/compliance/types.ts +120 -0
  436. package/src/compliance/views.ts +46 -0
  437. package/src/compliance-matrix/__tests__/build.test.ts +200 -0
  438. package/src/compliance-matrix/__tests__/example.test.ts +57 -0
  439. package/src/compliance-matrix/build.ts +0 -0
  440. package/src/compliance-matrix/index.ts +11 -0
  441. package/src/compliance-matrix/types.ts +102 -0
  442. package/src/confidence/__tests__/score.test.ts +254 -0
  443. package/src/confidence/index.ts +21 -0
  444. package/src/confidence/score.ts +243 -0
  445. package/src/confidence/types.ts +96 -0
  446. package/src/edge-path.ts +44 -0
  447. package/src/element-envelope.ts +76 -0
  448. package/src/factor/__tests__/validate.test.ts +98 -0
  449. package/src/factor/index.ts +8 -0
  450. package/src/factor/types.ts +41 -0
  451. package/src/factor/validate.ts +74 -0
  452. package/src/fgca/__tests__/chain-table.test.ts +172 -0
  453. package/src/fgca/__tests__/layout.test.ts +179 -0
  454. package/src/fgca/__tests__/parse-canonical.test.ts +248 -0
  455. package/src/fgca/__tests__/preview-layout.test.ts +124 -0
  456. package/src/fgca/__tests__/validate.test.ts +142 -0
  457. package/src/fgca/chain-table.ts +225 -0
  458. package/src/fgca/index.ts +45 -0
  459. package/src/fgca/layout.ts +204 -0
  460. package/src/fgca/nodeTypes.ts +11 -0
  461. package/src/fgca/nodes/FGCAActivityNode.tsx +65 -0
  462. package/src/fgca/nodes/FGCAChangeNode.tsx +64 -0
  463. package/src/fgca/nodes/FGCAFactorNode.tsx +64 -0
  464. package/src/fgca/nodes/FGCAGoalNode.tsx +72 -0
  465. package/src/fgca/parse-canonical.ts +400 -0
  466. package/src/fgca/preview-layout.ts +217 -0
  467. package/src/fgca/types.ts +50 -0
  468. package/src/fgca/validate.ts +126 -0
  469. package/src/geometry.ts +9 -0
  470. package/src/goals/__tests__/layout.test.ts +175 -0
  471. package/src/goals/__tests__/mutations.test.ts +111 -0
  472. package/src/goals/__tests__/parse-canonical.test.ts +145 -0
  473. package/src/goals/__tests__/validate.test.ts +202 -0
  474. package/src/goals/index.ts +21 -0
  475. package/src/goals/layout.ts +172 -0
  476. package/src/goals/mutations.ts +123 -0
  477. package/src/goals/parse-canonical.ts +286 -0
  478. package/src/goals/types.ts +85 -0
  479. package/src/goals/validate.ts +136 -0
  480. package/src/index.ts +23 -0
  481. package/src/process-blueprint/__tests__/compliance-lane.test.ts +320 -0
  482. package/src/process-blueprint/__tests__/layout.test.ts +195 -0
  483. package/src/process-blueprint/__tests__/validate.test.ts +310 -0
  484. package/src/process-blueprint/index.ts +31 -0
  485. package/src/process-blueprint/layout.ts +531 -0
  486. package/src/process-blueprint/types.ts +242 -0
  487. package/src/process-blueprint/validate.ts +181 -0
  488. package/src/process-map/__tests__/validate.test.ts +223 -0
  489. package/src/process-map/index.ts +10 -0
  490. package/src/process-map/types.ts +36 -0
  491. package/src/process-map/validate.ts +135 -0
  492. package/src/products/__tests__/validate.test.ts +239 -0
  493. package/src/products/index.ts +9 -0
  494. package/src/products/types.ts +31 -0
  495. package/src/products/validate.ts +112 -0
  496. package/src/repo-validate/__tests__/validate-repo.test.ts +149 -0
  497. package/src/repo-validate/index.ts +2 -0
  498. package/src/repo-validate/types.ts +50 -0
  499. package/src/repo-validate/validate-repo.ts +196 -0
  500. package/src/requirement/__tests__/example.test.ts +24 -0
  501. package/src/requirement/__tests__/validate.test.ts +96 -0
  502. package/src/requirement/index.ts +4 -0
  503. package/src/requirement/types.ts +35 -0
  504. package/src/requirement/validate.ts +92 -0
  505. package/src/scenarios/__tests__/validate.test.ts +209 -0
  506. package/src/scenarios/index.ts +15 -0
  507. package/src/scenarios/types.ts +37 -0
  508. package/src/scenarios/validate.ts +122 -0
  509. package/src/schema-version.ts +16 -0
  510. package/src/scope.ts +46 -0
  511. package/src/stakeholder/__tests__/validate.test.ts +101 -0
  512. package/src/stakeholder/index.ts +3 -0
  513. package/src/stakeholder/types.ts +33 -0
  514. package/src/stakeholder/validate.ts +63 -0
  515. package/src/target-state/__tests__/validate.test.ts +74 -0
  516. package/src/target-state/index.ts +2 -0
  517. package/src/target-state/types.ts +28 -0
  518. package/src/target-state/validate.ts +67 -0
  519. package/src/theme/index.ts +4 -0
  520. package/src/theme/themes.ts +237 -0
  521. package/src/theme/tokens.ts +133 -0
  522. package/src/typed-id.ts +56 -0
  523. package/src/validation-types.ts +36 -0
  524. package/src/webview/__tests__/entry-notations.test.ts +77 -0
  525. package/src/webview/__tests__/entry.test.ts +64 -0
  526. package/src/webview/__tests__/render-goals.test.ts +72 -0
  527. package/src/webview/entry.ts +292 -0
  528. package/src/webview/render-activities.ts +156 -0
  529. package/src/webview/render-activity-card.ts +234 -0
  530. package/src/webview/render-applications.ts +123 -0
  531. package/src/webview/render-blocks.ts +91 -0
  532. package/src/webview/render-capability-map.ts +98 -0
  533. package/src/webview/render-fgca.ts +122 -0
  534. package/src/webview/render-goals.ts +110 -0
  535. package/src/webview/render-process-blueprint.ts +207 -0
  536. package/src/webview/render-process-map.ts +93 -0
  537. package/src/webview/render-products.ts +91 -0
  538. package/src/webview/render-scenarios.ts +90 -0
  539. package/src/webview/render-util.ts +34 -0
  540. package/src/webview/styles.css +323 -0
  541. package/src/yaml-normalize.ts +56 -0
@@ -0,0 +1,213 @@
1
+ import { LAYER_COLORS, LEVEL_COLORS, MATURITY_COLORS, STRUCTURAL, TYPOGRAPHY, CSS_VAR, getBaseResetCss, } from './tokens.js';
2
+ const TRANSITRIX_LIGHT = {
3
+ bg: '#ffffff',
4
+ bgSurface: '#f8fafc',
5
+ bgElevated: '#f1f5f9',
6
+ text: '#0f172a',
7
+ textMuted: '#64748b',
8
+ textInverse: '#ffffff',
9
+ border: '#e2e8f0',
10
+ divider: '#cbd5e1',
11
+ statusSuccessBg: '#d1fae5',
12
+ statusSuccessFg: '#065f46',
13
+ statusWarningBg: '#fef9c3',
14
+ statusWarningFg: '#854d0e',
15
+ statusInfoBg: '#e0f2fe',
16
+ statusInfoFg: '#0c4a6e',
17
+ statusErrorBg: '#fee2e2',
18
+ statusErrorFg: '#991b1b',
19
+ };
20
+ const TRANSITRIX_DARK = {
21
+ bg: '#0a1628',
22
+ bgSurface: '#0f1f3d',
23
+ bgElevated: '#162544',
24
+ text: '#f1f5f9',
25
+ textMuted: '#94a3b8',
26
+ textInverse: '#0f172a',
27
+ border: '#1e3a5f',
28
+ divider: '#1a3050',
29
+ statusSuccessBg: '#022c22',
30
+ statusSuccessFg: '#6ee7b7',
31
+ statusWarningBg: '#1e1500',
32
+ statusWarningFg: '#fcd34d',
33
+ statusInfoBg: '#071e2e',
34
+ statusInfoFg: '#7dd3fc',
35
+ statusErrorBg: '#2c0a0a',
36
+ statusErrorFg: '#fca5a5',
37
+ };
38
+ function adaptiveVars(t) {
39
+ return [
40
+ `${CSS_VAR.bg}:${t.bg}`,
41
+ `${CSS_VAR.bgSurface}:${t.bgSurface}`,
42
+ `${CSS_VAR.bgElevated}:${t.bgElevated}`,
43
+ `${CSS_VAR.text}:${t.text}`,
44
+ `${CSS_VAR.textMuted}:${t.textMuted}`,
45
+ `${CSS_VAR.textInverse}:${t.textInverse}`,
46
+ `${CSS_VAR.border}:${t.border}`,
47
+ `${CSS_VAR.divider}:${t.divider}`,
48
+ `${CSS_VAR.statusSuccessBg}:${t.statusSuccessBg}`,
49
+ `${CSS_VAR.statusSuccessFg}:${t.statusSuccessFg}`,
50
+ `${CSS_VAR.statusWarningBg}:${t.statusWarningBg}`,
51
+ `${CSS_VAR.statusWarningFg}:${t.statusWarningFg}`,
52
+ `${CSS_VAR.statusInfoBg}:${t.statusInfoBg}`,
53
+ `${CSS_VAR.statusInfoFg}:${t.statusInfoFg}`,
54
+ `${CSS_VAR.statusErrorBg}:${t.statusErrorBg}`,
55
+ `${CSS_VAR.statusErrorFg}:${t.statusErrorFg}`,
56
+ ].join(';') + ';';
57
+ }
58
+ function diagramVars(variant) {
59
+ const lc = LAYER_COLORS;
60
+ const sc = STRUCTURAL;
61
+ const lv = LEVEL_COLORS[variant];
62
+ const mat = MATURITY_COLORS[variant];
63
+ const levelVars = lv.map((c, i) => `--ts-level-${i}:${c}`).join(';') + ';';
64
+ return [
65
+ `${CSS_VAR.layerFactor}:${lc.factor[variant]}`,
66
+ `${CSS_VAR.layerGoal}:${lc.goal[variant]}`,
67
+ `${CSS_VAR.layerChange}:${lc.change[variant]}`,
68
+ `${CSS_VAR.layerActivity}:${lc.activity[variant]}`,
69
+ `${CSS_VAR.nodeStroke}:${sc.nodeStroke[variant]}`,
70
+ `${CSS_VAR.edgeStroke}:${sc.edgeStroke[variant]}`,
71
+ `${CSS_VAR.textPrimary}:${sc.textPrimary[variant]}`,
72
+ `${CSS_VAR.textSecondary}:${sc.textSecondary[variant]}`,
73
+ `${CSS_VAR.headerText}:${sc.headerText[variant]}`,
74
+ `${CSS_VAR.maturity1}:${mat[0]}`,
75
+ `${CSS_VAR.maturity2}:${mat[1]}`,
76
+ `${CSS_VAR.maturity3}:${mat[2]}`,
77
+ `${CSS_VAR.maturity4}:${mat[3]}`,
78
+ `${CSS_VAR.maturity5}:${mat[4]}`,
79
+ ].join(';') + ';' + levelVars;
80
+ }
81
+ /** CSS for the webview shell (toolbar, canvas). */
82
+ function shellCss() {
83
+ const cv = CSS_VAR;
84
+ const t = TYPOGRAPHY;
85
+ // Full-height flex chain lifted from blocks-preview / activities-preview
86
+ // into the shared shell (per strategy hub #35). Body is a flex column
87
+ // sized to the iframe; #canvas takes the remaining height with its own
88
+ // scroll region. Without this, #canvas was content-height and any
89
+ // overflow-x scrollbar landed mid-panel with empty space below it — the
90
+ // "two-page" split flagged on goals, activities, and others.
91
+ //
92
+ // html bg + min-height are set per-theme in generateWebviewCss (literal
93
+ // hex / VS Code var) so they don't depend on `--ts-bg` resolving on html —
94
+ // CSS custom properties only cascade DOWN, and `--ts-bg` is defined on the
95
+ // body[data-theme] selector, so html itself can't read it. Without that
96
+ // explicit html bg, the iframe's underlying VS Code editor background
97
+ // showed through any uncovered area below short diagrams.
98
+ return `html,body{height:100%;}
99
+ body{background:var(${cv.bg});color:var(${cv.text});display:flex;flex-direction:column;}
100
+ #toolbar{position:sticky;top:0;z-index:10;padding:6px 12px;border-bottom:1px solid var(${cv.border});font-family:${t.fontFamily};font-size:${t.sizes.secondary}px;color:var(${cv.textMuted});background:var(${cv.bg});flex-shrink:0;}
101
+ #canvas{flex:1;min-height:0;padding:16px;overflow:auto;}
102
+ svg{display:block;}`;
103
+ }
104
+ /** CSS for SVG diagram classes — all consume --ts-* variables. */
105
+ function diagramClassCss() {
106
+ const cv = CSS_VAR;
107
+ const t = TYPOGRAPHY;
108
+ const levelCount = LEVEL_COLORS.light.length;
109
+ const levelRules = Array.from({ length: levelCount }, (_, i) => `.level-${i}{fill:var(--ts-level-${i});}`).join('');
110
+ // Typography: every <text> in a preview SVG resolves font-family, size and
111
+ // weight from these classes instead of inline attributes. That is the
112
+ // contract every notation preview honours so the catalogue reads as one
113
+ // visual family.
114
+ return `.diagram-node{stroke:var(${cv.nodeStroke});stroke-width:1;}
115
+ .layer-factor{fill:var(${cv.layerFactor});}
116
+ .layer-goal{fill:var(${cv.layerGoal});}
117
+ .layer-change{fill:var(${cv.layerChange});}
118
+ .layer-activity{fill:var(${cv.layerActivity});}
119
+ ${levelRules}
120
+ .diagram-edge{stroke:var(${cv.edgeStroke});stroke-width:1.5;fill:none;}
121
+ .arrow-fill{fill:var(${cv.edgeStroke});}
122
+ .text-header{fill:var(${cv.headerText});font-family:${t.fontFamily};font-size:${t.sizes.header}px;font-weight:${t.weights.header};}
123
+ .text-primary{fill:var(${cv.textPrimary});font-family:${t.fontFamily};font-size:${t.sizes.primary}px;font-weight:${t.weights.primary};}
124
+ .text-secondary{fill:var(${cv.textSecondary});font-family:${t.fontFamily};font-size:${t.sizes.secondary}px;font-weight:${t.weights.secondary};}
125
+ .text-id{fill:var(${cv.textSecondary});font-family:${t.fontFamily};font-size:${t.sizes.id}px;font-weight:${t.weights.id};}
126
+ .text-pill{fill:var(${cv.textPrimary});font-family:${t.fontFamily};font-size:${t.sizes.pill}px;font-weight:${t.weights.pill};}
127
+ .maturity-1{fill:var(${cv.maturity1});}
128
+ .maturity-2{fill:var(${cv.maturity2});}
129
+ .maturity-3{fill:var(${cv.maturity3});}
130
+ .maturity-4{fill:var(${cv.maturity4});}
131
+ .maturity-5{fill:var(${cv.maturity5});}
132
+ .compliance-gap{fill:var(${cv.statusWarningBg});stroke:var(${cv.statusWarningFg});}
133
+ .compliance-gap text{fill:var(${cv.statusWarningFg});}
134
+ .compliance-deadline{fill:var(${cv.statusErrorBg});stroke:var(${cv.statusErrorFg});}
135
+ .compliance-deadline text{fill:var(${cv.statusErrorFg});}
136
+ .compliance-badge{fill:var(${cv.statusErrorFg});}
137
+ .compliance-badge-text{fill:var(${cv.textInverse});font-family:${t.fontFamily};font-size:8px;font-weight:700;}`;
138
+ }
139
+ /**
140
+ * Generates a self-contained CSS block for embedding inside a standalone SVG file.
141
+ * Defines all --ts-* custom properties on :root so diagram classes resolve correctly
142
+ * when the SVG is opened outside of VS Code.
143
+ * vscode-adaptive falls back to the light palette (runtime VS Code variables are unavailable).
144
+ */
145
+ export function generateSvgEmbedCss(themeId) {
146
+ const variant = themeId === 'transitrix-dark' ? 'dark' : 'light';
147
+ const adaptive = themeId === 'transitrix-dark' ? TRANSITRIX_DARK : TRANSITRIX_LIGHT;
148
+ return `:root{${adaptiveVars(adaptive)}${diagramVars(variant)}}${diagramClassCss()}`;
149
+ }
150
+ /**
151
+ * Generates complete CSS for a static SVG diagram webview.
152
+ *
153
+ * For transitrix/transitrix-dark: sets --ts-* vars with fixed brand colors.
154
+ * For vscode-adaptive: maps --ts-* vars to --vscode-* CSS vars, with
155
+ * body.vscode-dark / body.vscode-high-contrast overrides for diagram colors.
156
+ */
157
+ export function generateWebviewCss(themeId) {
158
+ const base = getBaseResetCss();
159
+ const shell = shellCss();
160
+ const classes = diagramClassCss();
161
+ if (themeId === 'transitrix') {
162
+ return `${base}
163
+ html{background:${TRANSITRIX_LIGHT.bg};min-height:100vh;}
164
+ body[data-theme="transitrix"]{${adaptiveVars(TRANSITRIX_LIGHT)}${diagramVars('light')}}
165
+ ${shell}
166
+ ${classes}`;
167
+ }
168
+ if (themeId === 'transitrix-dark') {
169
+ return `${base}
170
+ html{background:${TRANSITRIX_DARK.bg};min-height:100vh;}
171
+ body[data-theme="transitrix-dark"]{${adaptiveVars(TRANSITRIX_DARK)}${diagramVars('dark')}}
172
+ ${shell}
173
+ ${classes}`;
174
+ }
175
+ // vscode-adaptive: map --ts-shell vars to --vscode-* CSS variables;
176
+ // layer/level/structural colors follow the VS Code theme body class.
177
+ const cv = CSS_VAR;
178
+ return `${base}
179
+ html{background:var(--vscode-editor-background,${TRANSITRIX_LIGHT.bg});min-height:100vh;}
180
+ body[data-theme="vscode-adaptive"]{
181
+ ${cv.bg}:var(--vscode-editor-background);
182
+ ${cv.bgSurface}:var(--vscode-sideBar-background,var(--vscode-editor-background));
183
+ ${cv.bgElevated}:var(--vscode-editorHoverWidget-background,var(--vscode-editor-background));
184
+ ${cv.text}:var(--vscode-foreground);
185
+ ${cv.textMuted}:var(--vscode-descriptionForeground);
186
+ ${cv.textInverse}:var(--vscode-editor-background);
187
+ ${cv.border}:var(--vscode-panel-border);
188
+ ${cv.divider}:var(--vscode-panel-border);
189
+ ${cv.statusSuccessBg}:${TRANSITRIX_LIGHT.statusSuccessBg};
190
+ ${cv.statusSuccessFg}:${TRANSITRIX_LIGHT.statusSuccessFg};
191
+ ${cv.statusWarningBg}:${TRANSITRIX_LIGHT.statusWarningBg};
192
+ ${cv.statusWarningFg}:${TRANSITRIX_LIGHT.statusWarningFg};
193
+ ${cv.statusInfoBg}:${TRANSITRIX_LIGHT.statusInfoBg};
194
+ ${cv.statusInfoFg}:${TRANSITRIX_LIGHT.statusInfoFg};
195
+ ${cv.statusErrorBg}:${TRANSITRIX_LIGHT.statusErrorBg};
196
+ ${cv.statusErrorFg}:${TRANSITRIX_LIGHT.statusErrorFg};
197
+ ${diagramVars('light')}
198
+ }
199
+ body[data-theme="vscode-adaptive"].vscode-dark{
200
+ ${cv.statusSuccessBg}:${TRANSITRIX_DARK.statusSuccessBg};
201
+ ${cv.statusSuccessFg}:${TRANSITRIX_DARK.statusSuccessFg};
202
+ ${cv.statusWarningBg}:${TRANSITRIX_DARK.statusWarningBg};
203
+ ${cv.statusWarningFg}:${TRANSITRIX_DARK.statusWarningFg};
204
+ ${cv.statusInfoBg}:${TRANSITRIX_DARK.statusInfoBg};
205
+ ${cv.statusInfoFg}:${TRANSITRIX_DARK.statusInfoFg};
206
+ ${cv.statusErrorBg}:${TRANSITRIX_DARK.statusErrorBg};
207
+ ${cv.statusErrorFg}:${TRANSITRIX_DARK.statusErrorFg};
208
+ ${diagramVars('dark')}
209
+ }
210
+ body[data-theme="vscode-adaptive"].vscode-high-contrast{${diagramVars('hc')}}
211
+ ${shell}
212
+ ${classes}`;
213
+ }
@@ -0,0 +1,158 @@
1
+ /** Transitrix brand palette. */
2
+ export declare const BRAND: {
3
+ readonly petrol: "#004d67";
4
+ readonly amber: "#ffaf00";
5
+ readonly orange: "#ff4d00";
6
+ };
7
+ /** Functional status colors. */
8
+ export declare const FUNCTIONAL: {
9
+ readonly success: "#1a7f5c";
10
+ readonly warning: "#c07030";
11
+ readonly error: "#b91c1c";
12
+ readonly info: "#1d6fa8";
13
+ };
14
+ /** Fill colors for FGCA notation columns. */
15
+ export declare const LAYER_COLORS: {
16
+ readonly factor: {
17
+ readonly light: "#fef3c7";
18
+ readonly dark: "#292108";
19
+ readonly hc: "#f59e0b";
20
+ };
21
+ readonly goal: {
22
+ readonly light: "#e0e7ff";
23
+ readonly dark: "#1e1b4b";
24
+ readonly hc: "#818cf8";
25
+ };
26
+ readonly change: {
27
+ readonly light: "#dbeafe";
28
+ readonly dark: "#0c2042";
29
+ readonly hc: "#60a5fa";
30
+ };
31
+ readonly activity: {
32
+ readonly light: "#d4edda";
33
+ readonly dark: "#0a2414";
34
+ readonly hc: "#4ade80";
35
+ };
36
+ };
37
+ /** Level fill colors for Goals tree nodes — 8 slots, cycled by level index. */
38
+ export declare const LEVEL_COLORS: {
39
+ readonly light: readonly ["#dbeafe", "#e0e7ff", "#d4edda", "#fef3c7", "#fce7f3", "#e0f2fe", "#f3e8ff", "#fef9c3"];
40
+ readonly dark: readonly ["#0c2042", "#1e1b4b", "#0a2414", "#292108", "#2a0c1f", "#071e2e", "#1a0c33", "#2a2107"];
41
+ readonly hc: readonly ["#60a5fa", "#818cf8", "#4ade80", "#f59e0b", "#f472b6", "#38bdf8", "#a78bfa", "#facc15"];
42
+ };
43
+ /** Structural diagram colors (nodes, edges, text). */
44
+ export declare const STRUCTURAL: {
45
+ readonly nodeStroke: {
46
+ readonly light: "#94a3b8";
47
+ readonly dark: "#475569";
48
+ readonly hc: "#e2e8f0";
49
+ };
50
+ readonly edgeStroke: {
51
+ readonly light: "#94a3b8";
52
+ readonly dark: "#475569";
53
+ readonly hc: "#e2e8f0";
54
+ };
55
+ readonly textPrimary: {
56
+ readonly light: "#1e293b";
57
+ readonly dark: "#f1f5f9";
58
+ readonly hc: "#ffffff";
59
+ };
60
+ readonly textSecondary: {
61
+ readonly light: "#64748b";
62
+ readonly dark: "#94a3b8";
63
+ readonly hc: "#cbd5e1";
64
+ };
65
+ readonly headerText: {
66
+ readonly light: "#374151";
67
+ readonly dark: "#e5e7eb";
68
+ readonly hc: "#ffffff";
69
+ };
70
+ };
71
+ /**
72
+ * Maturity scale fill colors — Likert 1..5, danger→success.
73
+ * Used by Capability Map and any future maturity-based notation.
74
+ */
75
+ export declare const MATURITY_COLORS: {
76
+ readonly light: readonly ["#b91c1c", "#d97706", "#ca8a04", "#65a30d", "#15803d"];
77
+ readonly dark: readonly ["#7f1d1d", "#92400e", "#854d0e", "#3f6212", "#14532d"];
78
+ readonly hc: readonly ["#f87171", "#fb923c", "#facc15", "#a3e635", "#4ade80"];
79
+ };
80
+ /**
81
+ * Typography hierarchy. All previews resolve text styling from these roles
82
+ * — never from inline font-* attributes on individual <text> elements.
83
+ *
84
+ * fontFamily threads through the VS Code font setting so the preview reads
85
+ * as part of the editor; size + weight encode the visual hierarchy.
86
+ */
87
+ export declare const TYPOGRAPHY: {
88
+ readonly fontFamily: "var(--vscode-font-family, system-ui, -apple-system, sans-serif)";
89
+ readonly sizes: {
90
+ readonly header: 13;
91
+ readonly primary: 12;
92
+ readonly secondary: 11;
93
+ readonly id: 10;
94
+ readonly pill: 11;
95
+ readonly caption: 11;
96
+ };
97
+ readonly weights: {
98
+ readonly header: 700;
99
+ readonly primary: 600;
100
+ readonly secondary: 400;
101
+ readonly id: 600;
102
+ readonly pill: 500;
103
+ readonly caption: 400;
104
+ };
105
+ };
106
+ /** Adaptive shell tokens (background, text, border, status). */
107
+ export interface AdaptiveTokens {
108
+ bg: string;
109
+ bgSurface: string;
110
+ bgElevated: string;
111
+ text: string;
112
+ textMuted: string;
113
+ textInverse: string;
114
+ border: string;
115
+ divider: string;
116
+ statusSuccessBg: string;
117
+ statusSuccessFg: string;
118
+ statusWarningBg: string;
119
+ statusWarningFg: string;
120
+ statusInfoBg: string;
121
+ statusInfoFg: string;
122
+ statusErrorBg: string;
123
+ statusErrorFg: string;
124
+ }
125
+ /** CSS custom property names for --ts-* variables. */
126
+ export declare const CSS_VAR: {
127
+ readonly bg: "--ts-bg";
128
+ readonly bgSurface: "--ts-bg-surface";
129
+ readonly bgElevated: "--ts-bg-elevated";
130
+ readonly text: "--ts-text";
131
+ readonly textMuted: "--ts-text-muted";
132
+ readonly textInverse: "--ts-text-inverse";
133
+ readonly border: "--ts-border";
134
+ readonly divider: "--ts-divider";
135
+ readonly statusSuccessBg: "--ts-status-success-bg";
136
+ readonly statusSuccessFg: "--ts-status-success-fg";
137
+ readonly statusWarningBg: "--ts-status-warning-bg";
138
+ readonly statusWarningFg: "--ts-status-warning-fg";
139
+ readonly statusInfoBg: "--ts-status-info-bg";
140
+ readonly statusInfoFg: "--ts-status-info-fg";
141
+ readonly statusErrorBg: "--ts-status-error-bg";
142
+ readonly statusErrorFg: "--ts-status-error-fg";
143
+ readonly layerFactor: "--ts-layer-factor";
144
+ readonly layerGoal: "--ts-layer-goal";
145
+ readonly layerChange: "--ts-layer-change";
146
+ readonly layerActivity: "--ts-layer-activity";
147
+ readonly nodeStroke: "--ts-node-stroke";
148
+ readonly edgeStroke: "--ts-edge-stroke";
149
+ readonly textPrimary: "--ts-text-primary";
150
+ readonly textSecondary: "--ts-text-secondary";
151
+ readonly headerText: "--ts-header-text";
152
+ readonly maturity1: "--ts-maturity-1";
153
+ readonly maturity2: "--ts-maturity-2";
154
+ readonly maturity3: "--ts-maturity-3";
155
+ readonly maturity4: "--ts-maturity-4";
156
+ readonly maturity5: "--ts-maturity-5";
157
+ };
158
+ export declare function getBaseResetCss(): string;
@@ -0,0 +1,105 @@
1
+ /** Transitrix brand palette. */
2
+ export const BRAND = {
3
+ petrol: '#004d67',
4
+ amber: '#ffaf00',
5
+ orange: '#ff4d00',
6
+ };
7
+ /** Functional status colors. */
8
+ export const FUNCTIONAL = {
9
+ success: '#1a7f5c',
10
+ warning: '#c07030',
11
+ error: '#b91c1c',
12
+ info: '#1d6fa8',
13
+ };
14
+ /** Fill colors for FGCA notation columns. */
15
+ export const LAYER_COLORS = {
16
+ factor: { light: '#fef3c7', dark: '#292108', hc: '#f59e0b' },
17
+ goal: { light: '#e0e7ff', dark: '#1e1b4b', hc: '#818cf8' },
18
+ change: { light: '#dbeafe', dark: '#0c2042', hc: '#60a5fa' },
19
+ activity: { light: '#d4edda', dark: '#0a2414', hc: '#4ade80' },
20
+ };
21
+ /** Level fill colors for Goals tree nodes — 8 slots, cycled by level index. */
22
+ export const LEVEL_COLORS = {
23
+ light: ['#dbeafe', '#e0e7ff', '#d4edda', '#fef3c7', '#fce7f3', '#e0f2fe', '#f3e8ff', '#fef9c3'],
24
+ dark: ['#0c2042', '#1e1b4b', '#0a2414', '#292108', '#2a0c1f', '#071e2e', '#1a0c33', '#2a2107'],
25
+ hc: ['#60a5fa', '#818cf8', '#4ade80', '#f59e0b', '#f472b6', '#38bdf8', '#a78bfa', '#facc15'],
26
+ };
27
+ /** Structural diagram colors (nodes, edges, text). */
28
+ export const STRUCTURAL = {
29
+ nodeStroke: { light: '#94a3b8', dark: '#475569', hc: '#e2e8f0' },
30
+ edgeStroke: { light: '#94a3b8', dark: '#475569', hc: '#e2e8f0' },
31
+ textPrimary: { light: '#1e293b', dark: '#f1f5f9', hc: '#ffffff' },
32
+ textSecondary: { light: '#64748b', dark: '#94a3b8', hc: '#cbd5e1' },
33
+ headerText: { light: '#374151', dark: '#e5e7eb', hc: '#ffffff' },
34
+ };
35
+ /**
36
+ * Maturity scale fill colors — Likert 1..5, danger→success.
37
+ * Used by Capability Map and any future maturity-based notation.
38
+ */
39
+ export const MATURITY_COLORS = {
40
+ light: ['#b91c1c', '#d97706', '#ca8a04', '#65a30d', '#15803d'],
41
+ dark: ['#7f1d1d', '#92400e', '#854d0e', '#3f6212', '#14532d'],
42
+ hc: ['#f87171', '#fb923c', '#facc15', '#a3e635', '#4ade80'],
43
+ };
44
+ /**
45
+ * Typography hierarchy. All previews resolve text styling from these roles
46
+ * — never from inline font-* attributes on individual <text> elements.
47
+ *
48
+ * fontFamily threads through the VS Code font setting so the preview reads
49
+ * as part of the editor; size + weight encode the visual hierarchy.
50
+ */
51
+ export const TYPOGRAPHY = {
52
+ fontFamily: 'var(--vscode-font-family, system-ui, -apple-system, sans-serif)',
53
+ sizes: {
54
+ header: 13, // stage/column headers, diagram captions
55
+ primary: 12, // primary node/cell labels
56
+ secondary: 11, // annotations, secondary lines, meta
57
+ id: 10, // compact id/code chips
58
+ pill: 11, // pill labels (process-blueprint aspects, badges)
59
+ caption: 11, // figcaption under the canvas
60
+ },
61
+ weights: {
62
+ header: 700,
63
+ primary: 600,
64
+ secondary: 400,
65
+ id: 600,
66
+ pill: 500,
67
+ caption: 400,
68
+ },
69
+ };
70
+ /** CSS custom property names for --ts-* variables. */
71
+ export const CSS_VAR = {
72
+ bg: '--ts-bg',
73
+ bgSurface: '--ts-bg-surface',
74
+ bgElevated: '--ts-bg-elevated',
75
+ text: '--ts-text',
76
+ textMuted: '--ts-text-muted',
77
+ textInverse: '--ts-text-inverse',
78
+ border: '--ts-border',
79
+ divider: '--ts-divider',
80
+ statusSuccessBg: '--ts-status-success-bg',
81
+ statusSuccessFg: '--ts-status-success-fg',
82
+ statusWarningBg: '--ts-status-warning-bg',
83
+ statusWarningFg: '--ts-status-warning-fg',
84
+ statusInfoBg: '--ts-status-info-bg',
85
+ statusInfoFg: '--ts-status-info-fg',
86
+ statusErrorBg: '--ts-status-error-bg',
87
+ statusErrorFg: '--ts-status-error-fg',
88
+ layerFactor: '--ts-layer-factor',
89
+ layerGoal: '--ts-layer-goal',
90
+ layerChange: '--ts-layer-change',
91
+ layerActivity: '--ts-layer-activity',
92
+ nodeStroke: '--ts-node-stroke',
93
+ edgeStroke: '--ts-edge-stroke',
94
+ textPrimary: '--ts-text-primary',
95
+ textSecondary: '--ts-text-secondary',
96
+ headerText: '--ts-header-text',
97
+ maturity1: '--ts-maturity-1',
98
+ maturity2: '--ts-maturity-2',
99
+ maturity3: '--ts-maturity-3',
100
+ maturity4: '--ts-maturity-4',
101
+ maturity5: '--ts-maturity-5',
102
+ };
103
+ export function getBaseResetCss() {
104
+ return `*,*:before,*:after{box-sizing:border-box;}html,body{margin:0;padding:0;}`;
105
+ }
@@ -0,0 +1,20 @@
1
+ /** Extracts the TYPE prefix of a typed id, or null when `id` is not a typed
2
+ * reference (`PRODUCT-MOBILE-1` → `PRODUCT`, `CAPABILITY-V2` → `CAPABILITY`). */
3
+ export declare function typeOfId(id: unknown): string | null;
4
+ /** True when `id` is a well-formed integer-terminal canonical id. */
5
+ export declare function isCanonicalId(id: unknown): id is string;
6
+ /** True when `id` is a well-formed canonical id whose TYPE is exactly `type`. */
7
+ export declare function isCanonicalIdOfType(id: unknown, type: string): boolean;
8
+ /**
9
+ * A read-only view of an organisation's admitted canon, used to resolve typed
10
+ * cross-references during validation. Phase 1 validators accept it optionally:
11
+ * with no catalogue they perform shape + prefix-TYPE checks only; given one,
12
+ * they additionally enforce the resolution rules (REQ-002, ASSERT-002/004/005…)
13
+ * that depend on whether a referenced artefact actually exists.
14
+ *
15
+ * The compliance previews (Phase 2+) build a catalogue by scanning the repo.
16
+ */
17
+ export interface CanonCatalog {
18
+ /** TYPE of an admitted artefact with this id, or undefined if not admitted. */
19
+ typeOf(id: string): string | undefined;
20
+ }
@@ -0,0 +1,38 @@
1
+ // Canonical typed-ID grammar + cross-reference resolution catalogue.
2
+ //
3
+ // Every element ID and cross-reference in the Transitrix canon follows the
4
+ // grammar in methodology `notations/IDS_AND_REFERENCES.md` §1:
5
+ //
6
+ // <TYPE>-[<middle segment(s)>-]<INTEGER>
7
+ //
8
+ // - TYPE: uppercase, starts with a letter, may contain digits and `_`
9
+ // (multi-word TYPEs like INTERNAL_STANDARD / PROCESS_BLUEPRINT).
10
+ // - middle: optional, notation-specific segments.
11
+ // - INTEGER: terminal positive integer, no leading zeros.
12
+ //
13
+ // CAPABILITY is the one exception (§2): its terminal is a V/H diagram address
14
+ // (CAPABILITY-V1.2) rather than a plain integer. Compliance artefacts only
15
+ // *resolve* capability ids (they never own one), so the catalogue handles
16
+ // them; the strict integer-terminal grammar below is used only for an
17
+ // artefact's own id (REQUIREMENT-… / ASSERTION-…).
18
+ /** TYPE prefix of a typed id — the segment before the first hyphen. */
19
+ const TYPE_PREFIX_RE = /^([A-Z][A-Z0-9_]*)-/;
20
+ /** Full integer-terminal canonical id. Middle segments may be mixed-case
21
+ * (real canon ids such as INTERNAL_STANDARD-coding-conventions-1 exist). */
22
+ const CANONICAL_ID_RE = /^[A-Z][A-Z0-9_]*(?:-[A-Za-z0-9]+)*-[1-9][0-9]*$/;
23
+ /** Extracts the TYPE prefix of a typed id, or null when `id` is not a typed
24
+ * reference (`PRODUCT-MOBILE-1` → `PRODUCT`, `CAPABILITY-V2` → `CAPABILITY`). */
25
+ export function typeOfId(id) {
26
+ if (typeof id !== 'string')
27
+ return null;
28
+ const m = TYPE_PREFIX_RE.exec(id);
29
+ return m ? m[1] : null;
30
+ }
31
+ /** True when `id` is a well-formed integer-terminal canonical id. */
32
+ export function isCanonicalId(id) {
33
+ return typeof id === 'string' && CANONICAL_ID_RE.test(id);
34
+ }
35
+ /** True when `id` is a well-formed canonical id whose TYPE is exactly `type`. */
36
+ export function isCanonicalIdOfType(id, type) {
37
+ return isCanonicalId(id) && typeOfId(id) === type;
38
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shared validation result shape across every notation module in this
3
+ * package.
4
+ *
5
+ * Before this file existed, each notation declared its own
6
+ * `ValidationError` / `ValidationWarning` / `ValidationResult` triple inside
7
+ * its own `validate.ts`. The shapes happened to agree (or almost agree —
8
+ * some had an optional `path` field, others didn't), but having N parallel
9
+ * declarations made it easy to accidentally drift one of them, and made the
10
+ * "what does our validator return?" answer fuzzier than it should be.
11
+ *
12
+ * The pre-release code review on 2026-05-21 called this out as a
13
+ * `should-fix` cross-module concern; this is the canonical shape.
14
+ *
15
+ * Notations that historically exported PREFIXED type names — `FGCA…` and
16
+ * `Activity…` — keep those names as type aliases re-exported from their own
17
+ * modules, so existing consumers continue to compile.
18
+ */
19
+ export interface ValidationError {
20
+ code: string;
21
+ message: string;
22
+ /** Optional JSON-path-ish locator inside the source document. */
23
+ path?: string;
24
+ }
25
+ export interface ValidationWarning {
26
+ code: string;
27
+ message: string;
28
+ path?: string;
29
+ }
30
+ export interface ValidationResult {
31
+ valid: boolean;
32
+ errors: ValidationError[];
33
+ warnings: ValidationWarning[];
34
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Step 4 parity check: every supported notation must render through the
3
+ * webview bundle's `render(kind, source)` API from the same example fixtures
4
+ * the VS Code previews consume — a valid document yields `status: 'ok'` with
5
+ * non-empty markup, and a malformed document degrades to the error panel
6
+ * (structured errors, no thrown exception reaching the JVM host).
7
+ */
8
+ import { readFileSync } from 'node:fs';
9
+ import path from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { describe, expect, it } from 'vitest';
12
+ import { api, render } from '../entry.js';
13
+ const EXAMPLES = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../../tests/fixtures/notation-corpus');
14
+ // Mirrors the fixtures used by the VS Code previews. One representative
15
+ // example per notation is enough to prove the dispatch + renderer wiring.
16
+ const FIXTURES = [
17
+ { kind: 'goals', file: 'goals/strategy-2026.goals.transitrix.yaml', markup: 'svg' },
18
+ { kind: 'fgca', file: 'fgca/strategy-2026.fgca.transitrix.yaml', markup: 'svg' },
19
+ { kind: 'fga', file: 'fga/strategy-2026.fga.transitrix.yaml', markup: 'svg' },
20
+ { kind: 'activities', file: 'activities/platform-launch.activities.transitrix.yaml', markup: 'svg' },
21
+ { kind: 'activity-card', file: 'activity-card/eu-programme.activity-card.transitrix.yaml', markup: 'svg' },
22
+ { kind: 'process-blueprint', file: 'process-blueprint/order-fulfilment.process-blueprint.transitrix.yaml', markup: 'svg' },
23
+ { kind: 'blocks', file: 'blocks/architecture.blocks.transitrix.yaml', markup: 'svg' },
24
+ { kind: 'applications', file: 'applications/portfolio-2026.applications.transitrix.yaml', markup: 'section' },
25
+ { kind: 'products', file: 'products/portfolio-2026.products.transitrix.yaml', markup: 'section' },
26
+ { kind: 'process-map', file: 'process-map/enterprise.process-map.transitrix.yaml', markup: 'section' },
27
+ { kind: 'scenarios', file: 'scenarios/omnichannel-2028.scenarios.transitrix.yaml', markup: 'section' },
28
+ { kind: 'capability-map', file: 'capability-map/business.capability-map.transitrix.yaml', markup: 'section' },
29
+ ];
30
+ describe('webview/entry — Step 4 notation coverage', () => {
31
+ it('wires every supported kind (no kind left on NOTATION-NOT-WIRED)', () => {
32
+ // The fixture table must cover the full supported-kinds surface, so a new
33
+ // kind added to the bundle without a renderer fails this test loudly.
34
+ const covered = new Set(FIXTURES.map((f) => f.kind));
35
+ for (const kind of api.supportedKinds) {
36
+ expect(covered.has(kind)).toBe(true);
37
+ }
38
+ });
39
+ for (const fx of FIXTURES) {
40
+ it(`renders ${fx.kind} from its example fixture`, () => {
41
+ const source = readFileSync(path.join(EXAMPLES, fx.file), 'utf8');
42
+ const r = render(fx.kind, source);
43
+ expect(r.notation).toBe(fx.kind);
44
+ expect(r.errors).toEqual([]);
45
+ expect(r.status).toBe('ok');
46
+ expect(r.svg.length).toBeGreaterThan(0);
47
+ expect(r.svg).toContain(fx.markup === 'svg' ? '<svg ' : '<section');
48
+ });
49
+ }
50
+ it('degrades malformed input to the error panel for a diagram notation', () => {
51
+ const r = render('process-blueprint', 'process_blueprint:\n stages: "not a list"\n');
52
+ expect(r.status).toBe('error');
53
+ expect(r.errors.length).toBeGreaterThan(0);
54
+ expect(r.svg).toBe('');
55
+ });
56
+ it('degrades malformed input to the error panel for a catalogue notation', () => {
57
+ const r = render('applications', 'applications_catalogue:\n applications: "not a list"\n');
58
+ expect(r.status).toBe('error');
59
+ expect(r.errors.length).toBeGreaterThan(0);
60
+ expect(r.svg).toBe('');
61
+ });
62
+ });
@@ -0,0 +1 @@
1
+ export {};