testeranto 0.200.1 → 0.203.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 (740) hide show
  1. package/README.md +49 -1
  2. package/UX/chache/index.md +11 -0
  3. package/design-editor/DesignEditor.tsx +40 -241
  4. package/dist/prebuild/App.css +171 -120
  5. package/dist/prebuild/App.js +47117 -11727
  6. package/dist/prebuild/testeranto.mjs +5048 -2578
  7. package/example/Calculator.go +63 -0
  8. package/example/Calculator.golingvu.adapter.go +81 -0
  9. package/example/Calculator.golingvu.go +67 -0
  10. package/example/Calculator.golingvu.implementation.go +95 -0
  11. package/example/Calculator.golingvu.specification.go +68 -0
  12. package/example/Calculator.pitono.adapter.py +68 -0
  13. package/example/Calculator.pitono.implementation.py +30 -0
  14. package/example/Calculator.pitono.specification.py +154 -0
  15. package/example/Calculator.pitono.test.py +47 -0
  16. package/example/Calculator.py +93 -0
  17. package/example/Calculator.test.adapter.ts +86 -0
  18. package/example/Calculator.test.implementation.ts +82 -0
  19. package/example/Calculator.test.specification.ts +213 -0
  20. package/example/Calculator.test.ts +13 -0
  21. package/example/Calculator.test.types.ts +50 -0
  22. package/example/Calculator.ts +130 -0
  23. package/example/README.md +1 -0
  24. package/example/base_suite_test.go +51 -0
  25. package/example/cmd/main.go +16 -0
  26. package/example/go.mod +9 -0
  27. package/example/main +0 -0
  28. package/example/test_example.py +143 -74
  29. package/example/testeranto/bundles/golang/core/Calculator.golingvu.go +53 -0
  30. package/example/testeranto/metafiles/golang/core.json +198 -0
  31. package/git-integration-plan.md +395 -0
  32. package/go.mod +3 -1
  33. package/golingvu.tmp.txt +68 -0
  34. package/log.txt +85 -0
  35. package/package.json +67 -46
  36. package/scripts/build-example.ts +245 -0
  37. package/src/App.tsx +226 -25
  38. package/src/Helpo.tsx +89 -0
  39. package/src/PM/PM_WithBuild.ts +183 -0
  40. package/src/PM/PM_WithEslintAndTsc.ts +109 -86
  41. package/src/PM/PM_WithGit.ts +632 -0
  42. package/src/PM/PM_WithHelpo.ts +341 -0
  43. package/src/PM/PM_WithProcesses.ts +900 -0
  44. package/src/PM/PM_WithWebSocket.ts +839 -0
  45. package/src/PM/base.ts +63 -1
  46. package/src/PM/golingvuBuild.ts +56 -0
  47. package/src/PM/index.ts +8 -5
  48. package/src/PM/main.ts +735 -1981
  49. package/src/PM/node.ts +18 -18
  50. package/src/PM/pitonoBuild.ts +56 -0
  51. package/src/PM/pure.ts +5 -13
  52. package/src/PM/types.ts +145 -0
  53. package/src/PM/utils.ts +262 -0
  54. package/src/PM/web.ts +8 -8
  55. package/src/README.md +122 -0
  56. package/src/ReportServer.ts +0 -12
  57. package/src/ReportServerLib.ts +0 -147
  58. package/src/Types.ts +1 -0
  59. package/src/app.scss +92 -140
  60. package/src/components/pure/AppFrame.tsx +354 -78
  61. package/src/components/pure/ArtifactTree.tsx +82 -0
  62. package/src/components/pure/BuildLogViewer.tsx +168 -0
  63. package/src/components/pure/DebugEnv.tsx +30 -0
  64. package/src/components/pure/FileTree.tsx +58 -0
  65. package/src/components/pure/FileTreeItem.tsx +49 -0
  66. package/src/components/pure/GitHubLoginButton.tsx +31 -0
  67. package/src/components/pure/GitIntegrationView.tsx +732 -0
  68. package/src/components/pure/HelpoChatDrawer.tsx +222 -0
  69. package/src/components/pure/MagicRobotModal.tsx +136 -0
  70. package/src/components/pure/ProcessDetails.tsx +99 -0
  71. package/src/components/pure/ProcessInput.tsx +67 -0
  72. package/src/components/pure/ProcessList.tsx +89 -0
  73. package/src/components/pure/ProcessLogs.tsx +54 -0
  74. package/src/components/pure/ProcessManager.tsx +38 -46
  75. package/src/components/pure/ProcessManagerView.tsx +44 -373
  76. package/src/components/pure/ProcessManagerViewTypes.ts +10 -0
  77. package/src/components/pure/ProcessSidebar.tsx +88 -0
  78. package/src/components/pure/ProcessTerminal.tsx +51 -0
  79. package/src/components/pure/ProjectPageView.tsx +6 -224
  80. package/src/components/pure/Settings.test.tsx +34 -0
  81. package/src/components/pure/Settings.tsx +163 -0
  82. package/src/components/pure/SignIn.tsx +33 -0
  83. package/src/components/pure/SingleProcessView.tsx +85 -180
  84. package/src/components/pure/TerminalInput.tsx +73 -0
  85. package/src/components/pure/TerminalLogs.tsx +80 -0
  86. package/src/components/pure/TestPageView.test/specification.ts +1 -0
  87. package/src/components/pure/TestPageView.tsx +308 -912
  88. package/src/components/pure/TestPageView_utils.tsx +287 -0
  89. package/src/components/pure/TestTable.tsx +88 -0
  90. package/src/components/pure/ToastNotification.tsx +19 -0
  91. package/src/components/pure/UserProfile.tsx +44 -0
  92. package/src/components/stateful/AuthCallbackPage.tsx +21 -0
  93. package/src/components/stateful/DratoPage.tsx +457 -0
  94. package/src/components/stateful/FeaturesReporter.tsx +3 -1
  95. package/src/components/stateful/FileTree.tsx +58 -58
  96. package/src/components/stateful/GenericXMLEditor/AttributeEditor.tsx +87 -0
  97. package/src/components/stateful/GenericXMLEditor/Drawer.tsx +174 -0
  98. package/src/components/stateful/GenericXMLEditor/GenericPreview.tsx +160 -0
  99. package/src/components/stateful/GenericXMLEditor/GenericTextEditor.tsx +104 -0
  100. package/src/components/stateful/GenericXMLEditor/GenericTree.tsx +104 -0
  101. package/src/components/stateful/GenericXMLEditorPage.tsx +346 -0
  102. package/src/components/stateful/GitIntegrationPage.tsx +263 -0
  103. package/src/components/stateful/GrafeoPage.tsx +563 -0
  104. package/src/components/stateful/ProcessManagerPage.tsx +13 -17
  105. package/src/components/stateful/ProjectPage.tsx +6 -5
  106. package/src/components/stateful/ProjectsPage.tsx +17 -19
  107. package/src/components/stateful/SVGEditor/CircleForm.tsx +68 -0
  108. package/src/components/stateful/SVGEditor/GroupForm.tsx +56 -0
  109. package/src/components/stateful/SVGEditor/RectForm.tsx +74 -0
  110. package/src/components/stateful/SVGEditor/SVGAttributeField.tsx +29 -0
  111. package/src/components/stateful/SVGEditor/SVGAttributesEditor.tsx +91 -0
  112. package/src/components/stateful/SVGEditor/SVGEditorControls.tsx +45 -0
  113. package/src/components/stateful/SVGEditor/SVGElementForm.tsx +45 -0
  114. package/src/components/stateful/SVGEditor/SVGPreview.tsx +227 -0
  115. package/src/components/stateful/SVGEditor/SVGTextEditor.tsx +166 -0
  116. package/src/components/stateful/SVGEditor/SVGTree.tsx +159 -0
  117. package/src/components/stateful/SVGEditor/SVGTypes.ts +36 -0
  118. package/src/components/stateful/SVGEditor/svg.xsd.xml +3038 -0
  119. package/src/components/stateful/SVGEditorPage.tsx +517 -0
  120. package/src/components/stateful/SingleProcessPage.tsx +133 -144
  121. package/src/components/stateful/SkriboPage.tsx +765 -0
  122. package/src/components/stateful/TestPage.tsx +27 -23
  123. package/src/esbuildConfigs/node.ts +1 -1
  124. package/src/example/go.mod +9 -0
  125. package/src/example/main.go +61 -0
  126. package/src/golingvu/PM/golang_test.go +103 -0
  127. package/src/golingvu/README.md +186 -2
  128. package/src/golingvu/base_given.go +89 -2
  129. package/src/golingvu/base_suite.go +48 -2
  130. package/src/golingvu/go.mod +6 -0
  131. package/src/golingvu/golingvu.go +724 -14
  132. package/src/golingvu/types.go +0 -14
  133. package/src/helpo/directives.md +5 -0
  134. package/src/helpo/prompt.txt +38 -0
  135. package/src/hooks/useGitMode.ts +20 -0
  136. package/src/hooks/useTerminalWebSocket.ts +49 -0
  137. package/src/lib/BaseGiven.ts +126 -28
  138. package/src/lib/BaseSuite.test/mock.ts +16 -10
  139. package/src/lib/BaseSuite.test/test.ts +165 -207
  140. package/src/lib/BaseSuite.ts +52 -10
  141. package/src/lib/BaseThen.ts +34 -38
  142. package/src/lib/BaseWhen.ts +9 -2
  143. package/src/lib/Tiposkripto.test/MockTiposkripto.ts +178 -14
  144. package/src/lib/Tiposkripto.test/Tiposkripto.adapter.ts +9 -14
  145. package/src/lib/Tiposkripto.test/Tiposkripto.implementation.ts +78 -38
  146. package/src/lib/Tiposkripto.test/Tiposkripto.specification.ts +51 -8
  147. package/src/lib/Tiposkripto.test/Tiposkripto.types.ts +5 -0
  148. package/src/lib/Tiposkripto.ts +64 -7
  149. package/src/lib/index.ts +7 -0
  150. package/src/lib/pmProxy.test/specification.ts +168 -166
  151. package/src/lib/pmProxy.ts +55 -18
  152. package/src/pitono/PM/python.py +165 -0
  153. package/src/pitono/Pitono.py +298 -0
  154. package/src/pitono/PitonoTest.py +25 -0
  155. package/src/pitono/README.md +21 -0
  156. package/src/pitono/__init__.py +6 -0
  157. package/{pitono → src/pitono}/base_given.py +42 -20
  158. package/{pitono → src/pitono}/base_suite.py +55 -2
  159. package/{pitono → src/pitono}/base_then.py +15 -1
  160. package/{pitono → src/pitono}/base_when.py +15 -1
  161. package/{pitono → src/pitono}/pitono.egg-info/PKG-INFO +25 -0
  162. package/{pitono → src/pitono}/pitono.egg-info/SOURCES.txt +1 -0
  163. package/src/pitono/types.py +87 -0
  164. package/src/services/FileService.ts +677 -0
  165. package/src/services/GitHubAuthService.ts +240 -0
  166. package/src/testeranto.ts +133 -245
  167. package/src/utils/api.ts +15 -13
  168. package/src/utils/gitTest.ts +29 -0
  169. package/src/utils/golingvuMetafile.ts +822 -118
  170. package/src/utils/golingvuWatcher.ts +285 -0
  171. package/src/utils/logFiles.ts +10 -2
  172. package/src/utils/makePrompt.ts +12 -1
  173. package/src/utils/pitonoMetafile.ts +326 -54
  174. package/src/utils/pitonoWatcher.ts +157 -0
  175. package/src/utils.ts +21 -12
  176. package/testeranto/App.css +171 -120
  177. package/testeranto/App.js +47117 -11727
  178. package/testeranto/bundles/node/core/chunk-MJTSYIAQ.mjs +1099 -0
  179. package/testeranto/bundles/node/core/src/lib/BaseSuite.test/node.test.mjs +58 -1147
  180. package/testeranto/bundles/node/core/src/lib/TipoSkripto.test/TipoSkripto.mjs +572 -0
  181. package/testeranto/bundles/node/core/src/lib/pmProxy.test/index.mjs +4795 -0
  182. package/testeranto/bundles/pure/core/chunk-6HR24P27.mjs +1003 -0
  183. package/testeranto/bundles/pure/core/src/Pure.test.mjs +410 -0
  184. package/testeranto/bundles/pure/core/src/lib/BaseSuite.test/pure.test.mjs +57 -1062
  185. package/testeranto/bundles/web/core/MPLUSRounded1c-Black-O75GP5JI.ttf +0 -0
  186. package/testeranto/bundles/web/core/MPLUSRounded1c-Bold-R524Q5BH.ttf +0 -0
  187. package/testeranto/bundles/web/core/MPLUSRounded1c-ExtraBold-C6GRMYVT.ttf +0 -0
  188. package/testeranto/bundles/web/core/MPLUSRounded1c-Light-WKN65Y2C.ttf +0 -0
  189. package/testeranto/bundles/web/core/MPLUSRounded1c-Medium-ZC4DWL7C.ttf +0 -0
  190. package/testeranto/bundles/web/core/MPLUSRounded1c-Regular-DT6EKZ3S.ttf +0 -0
  191. package/testeranto/bundles/web/core/MPLUSRounded1c-Thin-YWDNVG6M.ttf +0 -0
  192. package/testeranto/bundles/web/core/chunk-AZZHJNSU.mjs +30278 -0
  193. package/testeranto/bundles/web/core/chunk-ME6I6FJZ.mjs +3005 -0
  194. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.html +15 -0
  195. package/testeranto/bundles/web/core/src/components/pure/FeaturesReporterView.test/index.mjs +162 -0
  196. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.css +11619 -0
  197. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.html +15 -0
  198. package/testeranto/bundles/web/core/src/components/pure/ProjectPageView.test/index.mjs +6924 -0
  199. package/testeranto/bundles/web/core/src/lib/BaseSuite.test/web.test.mjs +71 -1050
  200. package/testeranto/helpo_chat_history.json +1 -0
  201. package/testeranto/metafiles/golang/core.json +42 -47
  202. package/testeranto/metafiles/node/core.json +584 -125
  203. package/testeranto/metafiles/pure/core.json +152 -51
  204. package/testeranto/metafiles/python/core.json +87 -0
  205. package/testeranto/metafiles/web/core.json +16365 -75
  206. package/testeranto/reports/core/config.json +66 -2
  207. package/testeranto/reports/core/example/Calculator.golingvu/golang/exit.log +1 -0
  208. package/testeranto/reports/core/example/Calculator.golingvu/golang/stderr.log +2 -0
  209. package/testeranto/reports/core/example/Calculator.golingvu/golang/stdout.log +1 -0
  210. package/testeranto/reports/core/example/Calculator.pitono.test/python/exit.log +1 -0
  211. package/testeranto/reports/core/example/Calculator.pitono.test/python/stderr.log +11 -0
  212. package/testeranto/reports/core/example/Calculator.pitono.test/python/stdout.log +1 -0
  213. package/testeranto/reports/core/example/Calculator.test/node/exit.log +1 -0
  214. package/testeranto/reports/core/example/Calculator.test/node/lint_errors.txt +2 -0
  215. package/testeranto/reports/core/example/Calculator.test/node/message.txt +16 -0
  216. package/testeranto/reports/core/example/Calculator.test/node/prompt.txt +13 -0
  217. package/testeranto/reports/core/example/Calculator.test/node/stderr.log +33 -0
  218. package/testeranto/reports/core/example/Calculator.test/node/stdout.log +1076 -0
  219. package/testeranto/reports/core/example/Calculator.test/node/tests.json +1109 -0
  220. package/testeranto/reports/core/example/Calculator.test/node/type_errors.txt +34 -0
  221. package/testeranto/reports/core/example/test_example/python/exit.log +1 -0
  222. package/testeranto/reports/core/example/test_example/python/stderr.log +24 -0
  223. package/testeranto/reports/core/src/Pure.test/pure/message.txt +16 -0
  224. package/testeranto/reports/core/src/Pure.test/pure/prompt.txt +13 -0
  225. package/testeranto/reports/core/src/Pure.test/pure/type_errors.txt +86 -0
  226. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/exit.log +0 -0
  227. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/info.log +0 -0
  228. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/lint_errors.txt +0 -0
  229. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/message.txt +17 -0
  230. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/prompt.txt +26 -0
  231. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/type_errors.txt +69 -0
  232. package/testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/warn.log +0 -0
  233. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/debug.log +0 -0
  234. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/error.log +0 -0
  235. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/exit.log +0 -0
  236. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/info.log +0 -0
  237. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/lint_errors.txt +16 -0
  238. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/message.txt +17 -0
  239. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/prompt.txt +27 -0
  240. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/type_errors.txt +42 -0
  241. package/testeranto/reports/core/src/components/pure/ModalContent.test/index/web/warn.log +0 -0
  242. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/debug.log +0 -0
  243. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/error.log +0 -0
  244. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/exit.log +0 -0
  245. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/info.log +0 -0
  246. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/lint_errors.txt +30 -0
  247. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/message.txt +17 -0
  248. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/prompt.txt +30 -0
  249. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/type_errors.txt +58 -0
  250. package/testeranto/reports/core/src/components/pure/ProjectPageView.test/index/web/warn.log +0 -0
  251. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/exit.log +1 -1
  252. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/lint_errors.txt +0 -6
  253. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/prompt.txt +9 -12
  254. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stderr.log +1 -0
  255. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/stdout.log +4 -0
  256. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/tests.json +99 -8
  257. package/testeranto/reports/core/src/lib/BaseSuite.test/node.test/node/type_errors.txt +57 -44
  258. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/lint_errors.txt +0 -2
  259. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/message.txt +1 -2
  260. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +4 -16
  261. package/testeranto/reports/core/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +62 -44
  262. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/error.log +0 -1
  263. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/exit.log +0 -1
  264. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/lint_errors.txt +0 -2
  265. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/prompt.txt +13 -13
  266. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/type_errors.txt +57 -44
  267. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/exit.log +1 -0
  268. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/lint_errors.txt +0 -0
  269. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/message.txt +16 -0
  270. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/prompt.txt +13 -0
  271. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stderr.log +88 -0
  272. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/stdout.log +521 -0
  273. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/tests.json +166 -0
  274. package/testeranto/reports/core/src/lib/TipoSkripto.test/TipoSkripto/node/type_errors.txt +78 -0
  275. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/exit.log +1 -0
  276. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/lint_errors.txt +15 -0
  277. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/message.txt +17 -0
  278. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/prompt.txt +25 -0
  279. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stderr.log +0 -0
  280. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/stdout.log +2 -0
  281. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/tests.json +31 -0
  282. package/testeranto/reports/core/src/lib/pmProxy.test/index/node/type_errors.txt +62 -0
  283. package/testeranto/reports/core/summary.json +66 -11
  284. package/testeranto.config.ts +38 -44
  285. package/tsc.log +141 -91
  286. package/tsconfig.json +6 -2
  287. package/dist/cjs-shim.js +0 -12
  288. package/dist/common/design-editor/DesignEditor.js +0 -242
  289. package/dist/common/design-editor/index.js +0 -18
  290. package/dist/common/design-editor/server.js +0 -98
  291. package/dist/common/design-editor/types.js +0 -2
  292. package/dist/common/package.json +0 -3
  293. package/dist/common/src/App.js +0 -77
  294. package/dist/common/src/CoreTypes.js +0 -2
  295. package/dist/common/src/Init.js +0 -48
  296. package/dist/common/src/Node.js +0 -40
  297. package/dist/common/src/NodeSidecar.js +0 -15
  298. package/dist/common/src/PM/PM_WithEslintAndTsc.js +0 -192
  299. package/dist/common/src/PM/__tests__/nodeSidecar.testeranto.js +0 -108
  300. package/dist/common/src/PM/__tests__/pureSidecar.testeranto.js +0 -93
  301. package/dist/common/src/PM/__tests__/webSidecar.testeranto.js +0 -93
  302. package/dist/common/src/PM/base.js +0 -257
  303. package/dist/common/src/PM/index.js +0 -6
  304. package/dist/common/src/PM/main.js +0 -1815
  305. package/dist/common/src/PM/node.js +0 -185
  306. package/dist/common/src/PM/nodeSidecar.js +0 -65
  307. package/dist/common/src/PM/pitonoRunner.js +0 -54
  308. package/dist/common/src/PM/pure.js +0 -111
  309. package/dist/common/src/PM/pureSidecar.js +0 -48
  310. package/dist/common/src/PM/sidecar.js +0 -11
  311. package/dist/common/src/PM/types.js +0 -1
  312. package/dist/common/src/PM/web.js +0 -112
  313. package/dist/common/src/PM/webSidecar.js +0 -47
  314. package/dist/common/src/Pure.js +0 -52
  315. package/dist/common/src/Pure.test.js +0 -180
  316. package/dist/common/src/PureSidecar.js +0 -13
  317. package/dist/common/src/ReportServer.js +0 -11
  318. package/dist/common/src/ReportServer.test.ts/index.js +0 -78
  319. package/dist/common/src/ReportServerLib.js +0 -141
  320. package/dist/common/src/Types.js +0 -2
  321. package/dist/common/src/Web.js +0 -61
  322. package/dist/common/src/WebSidecar.js +0 -14
  323. package/dist/common/src/components/DesignEditorPage.js +0 -205
  324. package/dist/common/src/components/SunriseAnimation.js +0 -291
  325. package/dist/common/src/components/SunriseAnimation.test/implementation.js +0 -1
  326. package/dist/common/src/components/SunriseAnimation.test/index.js +0 -1
  327. package/dist/common/src/components/SunriseAnimation.test/interface.js +0 -68
  328. package/dist/common/src/components/SunriseAnimation.test/specification.js +0 -1
  329. package/dist/common/src/components/SunriseAnimation.test/types.js +0 -2
  330. package/dist/common/src/components/TestStatusBadge.js +0 -35
  331. package/dist/common/src/components/pure/AppFrame.js +0 -69
  332. package/dist/common/src/components/pure/AppFrame.test/implementation.js +0 -63
  333. package/dist/common/src/components/pure/AppFrame.test/index.js +0 -14
  334. package/dist/common/src/components/pure/AppFrame.test/specification.js +0 -25
  335. package/dist/common/src/components/pure/AppFrame.test/types.js +0 -3
  336. package/dist/common/src/components/pure/FeaturesReporterView.js +0 -23
  337. package/dist/common/src/components/pure/FeaturesReporterView.test/implementation.js +0 -84
  338. package/dist/common/src/components/pure/FeaturesReporterView.test/index.js +0 -14
  339. package/dist/common/src/components/pure/FeaturesReporterView.test/specification.js +0 -27
  340. package/dist/common/src/components/pure/FeaturesReporterView.test/types.js +0 -2
  341. package/dist/common/src/components/pure/ModalContent.js +0 -86
  342. package/dist/common/src/components/pure/ModalContent.test/implementation.js +0 -35
  343. package/dist/common/src/components/pure/ModalContent.test/index.js +0 -58
  344. package/dist/common/src/components/pure/ModalContent.test/specification.js +0 -19
  345. package/dist/common/src/components/pure/ModalContent.test/types.js +0 -4
  346. package/dist/common/src/components/pure/NavBar.js +0 -44
  347. package/dist/common/src/components/pure/ProcessManager.js +0 -112
  348. package/dist/common/src/components/pure/ProcessManagerView.js +0 -237
  349. package/dist/common/src/components/pure/ProjectPageView.js +0 -181
  350. package/dist/common/src/components/pure/ProjectPageView.test/implementation.js +0 -184
  351. package/dist/common/src/components/pure/ProjectPageView.test/index.js +0 -14
  352. package/dist/common/src/components/pure/ProjectPageView.test/specification.js +0 -32
  353. package/dist/common/src/components/pure/ProjectPageView.test/types.js +0 -4
  354. package/dist/common/src/components/pure/ProjectsPageView.js +0 -72
  355. package/dist/common/src/components/pure/SettingsButton.js +0 -13
  356. package/dist/common/src/components/pure/SingleProcessView.js +0 -214
  357. package/dist/common/src/components/pure/TestPageView.js +0 -628
  358. package/dist/common/src/components/pure/TestPageView.test/implementation.js +0 -157
  359. package/dist/common/src/components/pure/TestPageView.test/index.js +0 -15
  360. package/dist/common/src/components/pure/TestPageView.test/specification.js +0 -26
  361. package/dist/common/src/components/pure/TestPageView.test/types.js +0 -4
  362. package/dist/common/src/components/pure/ThemeCard.js +0 -15
  363. package/dist/common/src/components/stateful/FeaturesReporter.js +0 -59
  364. package/dist/common/src/components/stateful/FileTree.js +0 -40
  365. package/dist/common/src/components/stateful/ProcessManagerPage.js +0 -112
  366. package/dist/common/src/components/stateful/ProjectPage.js +0 -101
  367. package/dist/common/src/components/stateful/ProjectsPage.js +0 -118
  368. package/dist/common/src/components/stateful/SettingsPage.js +0 -72
  369. package/dist/common/src/components/stateful/SingleProcessPage.js +0 -147
  370. package/dist/common/src/components/stateful/TestPage.js +0 -268
  371. package/dist/common/src/components/stateful/TextEditorPage.js +0 -154
  372. package/dist/common/src/defaultConfig.js +0 -19
  373. package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +0 -38
  374. package/dist/common/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -21
  375. package/dist/common/src/esbuildConfigs/featuresPlugin.js +0 -39
  376. package/dist/common/src/esbuildConfigs/index.js +0 -21
  377. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +0 -30
  378. package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -24
  379. package/dist/common/src/esbuildConfigs/node.js +0 -24
  380. package/dist/common/src/esbuildConfigs/pure.js +0 -42
  381. package/dist/common/src/esbuildConfigs/rebuildPlugin.js +0 -19
  382. package/dist/common/src/esbuildConfigs/web.js +0 -48
  383. package/dist/common/src/init-docs.js +0 -9
  384. package/dist/common/src/lib/BaseGiven.js +0 -99
  385. package/dist/common/src/lib/BaseSuite.js +0 -91
  386. package/dist/common/src/lib/BaseSuite.test/mock.js +0 -61
  387. package/dist/common/src/lib/BaseSuite.test/node.test.js +0 -10
  388. package/dist/common/src/lib/BaseSuite.test/pure.test.js +0 -10
  389. package/dist/common/src/lib/BaseSuite.test/test.js +0 -253
  390. package/dist/common/src/lib/BaseSuite.test/web.test.js +0 -10
  391. package/dist/common/src/lib/BaseThen.js +0 -64
  392. package/dist/common/src/lib/BaseWhen.js +0 -45
  393. package/dist/common/src/lib/Sidecar.js +0 -7
  394. package/dist/common/src/lib/Tiposkripto.js +0 -149
  395. package/dist/common/src/lib/Tiposkripto.test/MockTiposkripto.js +0 -36
  396. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +0 -35
  397. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +0 -173
  398. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.js +0 -11
  399. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.specification.js +0 -42
  400. package/dist/common/src/lib/Tiposkripto.test/Tiposkripto.types.js +0 -2
  401. package/dist/common/src/lib/abstractBase.test/MockGiven.js +0 -24
  402. package/dist/common/src/lib/abstractBase.test/MockThen.js +0 -16
  403. package/dist/common/src/lib/abstractBase.test/MockWhen.js +0 -20
  404. package/dist/common/src/lib/abstractBase.test/adapter.js +0 -24
  405. package/dist/common/src/lib/abstractBase.test/implementation.js +0 -38
  406. package/dist/common/src/lib/abstractBase.test/index.js +0 -18
  407. package/dist/common/src/lib/abstractBase.test/specification.js +0 -19
  408. package/dist/common/src/lib/abstractBase.test/types.js +0 -2
  409. package/dist/common/src/lib/index.js +0 -31
  410. package/dist/common/src/lib/pmProxy.js +0 -293
  411. package/dist/common/src/lib/pmProxy.test/adapter.js +0 -54
  412. package/dist/common/src/lib/pmProxy.test/implementation.js +0 -137
  413. package/dist/common/src/lib/pmProxy.test/index.js +0 -15
  414. package/dist/common/src/lib/pmProxy.test/mockPM.js +0 -34
  415. package/dist/common/src/lib/pmProxy.test/mockPMBase.js +0 -131
  416. package/dist/common/src/lib/pmProxy.test/specification.js +0 -64
  417. package/dist/common/src/lib/pmProxy.test/types.js +0 -2
  418. package/dist/common/src/lib/types.js +0 -3
  419. package/dist/common/src/mothership/index.js +0 -21
  420. package/dist/common/src/mothership/test.js +0 -83
  421. package/dist/common/src/run.js +0 -49
  422. package/dist/common/src/testeranto.js +0 -283
  423. package/dist/common/src/types/features.js +0 -34
  424. package/dist/common/src/utils/api.js +0 -89
  425. package/dist/common/src/utils/buildTemplates.js +0 -37
  426. package/dist/common/src/utils/featureUtils.js +0 -29
  427. package/dist/common/src/utils/golingvuMetafile.js +0 -116
  428. package/dist/common/src/utils/logFiles.js +0 -52
  429. package/dist/common/src/utils/makePrompt.js +0 -116
  430. package/dist/common/src/utils/pitonoMetafile.js +0 -67
  431. package/dist/common/src/utils/queue.js +0 -36
  432. package/dist/common/src/utils.js +0 -133
  433. package/dist/common/src/web.html.js +0 -18
  434. package/dist/common/testeranto.config.js +0 -98
  435. package/dist/common/tsconfig.common.tsbuildinfo +0 -1
  436. package/dist/module/design-editor/DesignEditor.js +0 -206
  437. package/dist/module/design-editor/index.js +0 -2
  438. package/dist/module/design-editor/server.js +0 -92
  439. package/dist/module/design-editor/types.js +0 -1
  440. package/dist/module/package.json +0 -3
  441. package/dist/module/src/App.js +0 -70
  442. package/dist/module/src/CoreTypes.js +0 -1
  443. package/dist/module/src/Init.js +0 -43
  444. package/dist/module/src/Node.js +0 -33
  445. package/dist/module/src/NodeSidecar.js +0 -11
  446. package/dist/module/src/PM/PM_WithEslintAndTsc.js +0 -185
  447. package/dist/module/src/PM/__tests__/nodeSidecar.testeranto.js +0 -103
  448. package/dist/module/src/PM/__tests__/pureSidecar.testeranto.js +0 -88
  449. package/dist/module/src/PM/__tests__/webSidecar.testeranto.js +0 -88
  450. package/dist/module/src/PM/base.js +0 -250
  451. package/dist/module/src/PM/index.js +0 -2
  452. package/dist/module/src/PM/main.js +0 -1775
  453. package/dist/module/src/PM/node.js +0 -178
  454. package/dist/module/src/PM/nodeSidecar.js +0 -58
  455. package/dist/module/src/PM/pitonoRunner.js +0 -47
  456. package/dist/module/src/PM/pure.js +0 -107
  457. package/dist/module/src/PM/pureSidecar.js +0 -41
  458. package/dist/module/src/PM/sidecar.js +0 -7
  459. package/dist/module/src/PM/types.js +0 -1
  460. package/dist/module/src/PM/web.js +0 -108
  461. package/dist/module/src/PM/webSidecar.js +0 -40
  462. package/dist/module/src/Pure.js +0 -45
  463. package/dist/module/src/Pure.test.js +0 -175
  464. package/dist/module/src/PureSidecar.js +0 -9
  465. package/dist/module/src/ReportServer.js +0 -9
  466. package/dist/module/src/ReportServer.test.ts/index.js +0 -73
  467. package/dist/module/src/ReportServerLib.js +0 -134
  468. package/dist/module/src/Types.js +0 -1
  469. package/dist/module/src/Web.js +0 -54
  470. package/dist/module/src/WebSidecar.js +0 -10
  471. package/dist/module/src/components/DesignEditorPage.js +0 -168
  472. package/dist/module/src/components/SunriseAnimation.js +0 -256
  473. package/dist/module/src/components/SunriseAnimation.test/implementation.js +0 -1
  474. package/dist/module/src/components/SunriseAnimation.test/index.js +0 -1
  475. package/dist/module/src/components/SunriseAnimation.test/interface.js +0 -32
  476. package/dist/module/src/components/SunriseAnimation.test/specification.js +0 -1
  477. package/dist/module/src/components/SunriseAnimation.test/types.js +0 -1
  478. package/dist/module/src/components/TestStatusBadge.js +0 -28
  479. package/dist/module/src/components/pure/AppFrame.js +0 -32
  480. package/dist/module/src/components/pure/AppFrame.test/implementation.js +0 -57
  481. package/dist/module/src/components/pure/AppFrame.test/index.js +0 -9
  482. package/dist/module/src/components/pure/AppFrame.test/specification.js +0 -21
  483. package/dist/module/src/components/pure/AppFrame.test/types.js +0 -2
  484. package/dist/module/src/components/pure/FeaturesReporterView.js +0 -16
  485. package/dist/module/src/components/pure/FeaturesReporterView.test/implementation.js +0 -81
  486. package/dist/module/src/components/pure/FeaturesReporterView.test/index.js +0 -9
  487. package/dist/module/src/components/pure/FeaturesReporterView.test/specification.js +0 -23
  488. package/dist/module/src/components/pure/FeaturesReporterView.test/types.js +0 -1
  489. package/dist/module/src/components/pure/ModalContent.js +0 -79
  490. package/dist/module/src/components/pure/ModalContent.test/implementation.js +0 -32
  491. package/dist/module/src/components/pure/ModalContent.test/index.js +0 -53
  492. package/dist/module/src/components/pure/ModalContent.test/specification.js +0 -15
  493. package/dist/module/src/components/pure/ModalContent.test/types.js +0 -3
  494. package/dist/module/src/components/pure/NavBar.js +0 -37
  495. package/dist/module/src/components/pure/ProcessManager.js +0 -75
  496. package/dist/module/src/components/pure/ProcessManagerView.js +0 -200
  497. package/dist/module/src/components/pure/ProjectPageView.js +0 -174
  498. package/dist/module/src/components/pure/ProjectPageView.test/implementation.js +0 -181
  499. package/dist/module/src/components/pure/ProjectPageView.test/index.js +0 -9
  500. package/dist/module/src/components/pure/ProjectPageView.test/specification.js +0 -28
  501. package/dist/module/src/components/pure/ProjectPageView.test/types.js +0 -3
  502. package/dist/module/src/components/pure/ProjectsPageView.js +0 -65
  503. package/dist/module/src/components/pure/SettingsButton.js +0 -6
  504. package/dist/module/src/components/pure/SingleProcessView.js +0 -214
  505. package/dist/module/src/components/pure/TestPageView.js +0 -591
  506. package/dist/module/src/components/pure/TestPageView.test/implementation.js +0 -121
  507. package/dist/module/src/components/pure/TestPageView.test/index.js +0 -10
  508. package/dist/module/src/components/pure/TestPageView.test/specification.js +0 -22
  509. package/dist/module/src/components/pure/TestPageView.test/types.js +0 -3
  510. package/dist/module/src/components/pure/ThemeCard.js +0 -8
  511. package/dist/module/src/components/stateful/FeaturesReporter.js +0 -22
  512. package/dist/module/src/components/stateful/FileTree.js +0 -33
  513. package/dist/module/src/components/stateful/ProcessManagerPage.js +0 -75
  514. package/dist/module/src/components/stateful/ProjectPage.js +0 -64
  515. package/dist/module/src/components/stateful/ProjectsPage.js +0 -81
  516. package/dist/module/src/components/stateful/SettingsPage.js +0 -35
  517. package/dist/module/src/components/stateful/SingleProcessPage.js +0 -110
  518. package/dist/module/src/components/stateful/TestPage.js +0 -231
  519. package/dist/module/src/components/stateful/TextEditorPage.js +0 -117
  520. package/dist/module/src/defaultConfig.js +0 -17
  521. package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +0 -32
  522. package/dist/module/src/esbuildConfigs/eslint-formatter-testeranto.js +0 -18
  523. package/dist/module/src/esbuildConfigs/featuresPlugin.js +0 -34
  524. package/dist/module/src/esbuildConfigs/index.js +0 -19
  525. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +0 -25
  526. package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +0 -21
  527. package/dist/module/src/esbuildConfigs/node.js +0 -19
  528. package/dist/module/src/esbuildConfigs/pure.js +0 -37
  529. package/dist/module/src/esbuildConfigs/rebuildPlugin.js +0 -14
  530. package/dist/module/src/esbuildConfigs/web.js +0 -43
  531. package/dist/module/src/init-docs.js +0 -4
  532. package/dist/module/src/lib/BaseGiven.js +0 -95
  533. package/dist/module/src/lib/BaseSuite.js +0 -87
  534. package/dist/module/src/lib/BaseSuite.test/mock.js +0 -54
  535. package/dist/module/src/lib/BaseSuite.test/node.test.js +0 -5
  536. package/dist/module/src/lib/BaseSuite.test/pure.test.js +0 -5
  537. package/dist/module/src/lib/BaseSuite.test/test.js +0 -249
  538. package/dist/module/src/lib/BaseSuite.test/web.test.js +0 -5
  539. package/dist/module/src/lib/BaseThen.js +0 -60
  540. package/dist/module/src/lib/BaseWhen.js +0 -41
  541. package/dist/module/src/lib/Sidecar.js +0 -3
  542. package/dist/module/src/lib/Tiposkripto.js +0 -146
  543. package/dist/module/src/lib/Tiposkripto.test/MockTiposkripto.js +0 -29
  544. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.adapter.js +0 -32
  545. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.implementation.js +0 -170
  546. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.js +0 -6
  547. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.specification.js +0 -38
  548. package/dist/module/src/lib/Tiposkripto.test/Tiposkripto.types.js +0 -1
  549. package/dist/module/src/lib/abstractBase.test/MockGiven.js +0 -20
  550. package/dist/module/src/lib/abstractBase.test/MockThen.js +0 -12
  551. package/dist/module/src/lib/abstractBase.test/MockWhen.js +0 -16
  552. package/dist/module/src/lib/abstractBase.test/adapter.js +0 -21
  553. package/dist/module/src/lib/abstractBase.test/implementation.js +0 -35
  554. package/dist/module/src/lib/abstractBase.test/index.js +0 -13
  555. package/dist/module/src/lib/abstractBase.test/specification.js +0 -15
  556. package/dist/module/src/lib/abstractBase.test/types.js +0 -1
  557. package/dist/module/src/lib/index.js +0 -26
  558. package/dist/module/src/lib/pmProxy.js +0 -284
  559. package/dist/module/src/lib/pmProxy.test/adapter.js +0 -51
  560. package/dist/module/src/lib/pmProxy.test/implementation.js +0 -134
  561. package/dist/module/src/lib/pmProxy.test/index.js +0 -10
  562. package/dist/module/src/lib/pmProxy.test/mockPM.js +0 -30
  563. package/dist/module/src/lib/pmProxy.test/mockPMBase.js +0 -127
  564. package/dist/module/src/lib/pmProxy.test/specification.js +0 -60
  565. package/dist/module/src/lib/pmProxy.test/types.js +0 -1
  566. package/dist/module/src/lib/types.js +0 -2
  567. package/dist/module/src/mothership/index.js +0 -16
  568. package/dist/module/src/mothership/test.js +0 -78
  569. package/dist/module/src/run.js +0 -49
  570. package/dist/module/src/testeranto.js +0 -245
  571. package/dist/module/src/types/features.js +0 -31
  572. package/dist/module/src/utils/api.js +0 -84
  573. package/dist/module/src/utils/buildTemplates.js +0 -33
  574. package/dist/module/src/utils/featureUtils.js +0 -24
  575. package/dist/module/src/utils/golingvuMetafile.js +0 -109
  576. package/dist/module/src/utils/logFiles.js +0 -47
  577. package/dist/module/src/utils/makePrompt.js +0 -109
  578. package/dist/module/src/utils/pitonoMetafile.js +0 -60
  579. package/dist/module/src/utils/queue.js +0 -32
  580. package/dist/module/src/utils.js +0 -121
  581. package/dist/module/src/web.html.js +0 -16
  582. package/dist/module/testeranto.config.js +0 -96
  583. package/dist/module/tsconfig.module.tsbuildinfo +0 -1
  584. package/dist/types/design-editor/DesignEditor.d.ts +0 -18
  585. package/dist/types/design-editor/server.d.ts +0 -1
  586. package/dist/types/src/App.d.ts +0 -1
  587. package/dist/types/src/CoreTypes.d.ts +0 -52
  588. package/dist/types/src/Init.d.ts +0 -2
  589. package/dist/types/src/Node.d.ts +0 -9
  590. package/dist/types/src/NodeSidecar.d.ts +0 -6
  591. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +0 -24
  592. package/dist/types/src/PM/__tests__/nodeSidecar.testeranto.d.ts +0 -2
  593. package/dist/types/src/PM/__tests__/pureSidecar.testeranto.d.ts +0 -2
  594. package/dist/types/src/PM/__tests__/webSidecar.testeranto.d.ts +0 -2
  595. package/dist/types/src/PM/base.d.ts +0 -35
  596. package/dist/types/src/PM/index.d.ts +0 -37
  597. package/dist/types/src/PM/main.d.ts +0 -79
  598. package/dist/types/src/PM/node.d.ts +0 -40
  599. package/dist/types/src/PM/nodeSidecar.d.ts +0 -13
  600. package/dist/types/src/PM/pitonoRunner.d.ts +0 -7
  601. package/dist/types/src/PM/pure.d.ts +0 -43
  602. package/dist/types/src/PM/pureSidecar.d.ts +0 -11
  603. package/dist/types/src/PM/sidecar.d.ts +0 -8
  604. package/dist/types/src/PM/web.d.ts +0 -43
  605. package/dist/types/src/PM/webSidecar.d.ts +0 -11
  606. package/dist/types/src/Pure.d.ts +0 -9
  607. package/dist/types/src/Pure.test.d.ts +0 -2
  608. package/dist/types/src/PureSidecar.d.ts +0 -8
  609. package/dist/types/src/ReportServer.d.ts +0 -1
  610. package/dist/types/src/ReportServer.test.ts/index.d.ts +0 -2
  611. package/dist/types/src/ReportServerLib.d.ts +0 -1
  612. package/dist/types/src/Types.d.ts +0 -118
  613. package/dist/types/src/Web.d.ts +0 -9
  614. package/dist/types/src/WebSidecar.d.ts +0 -8
  615. package/dist/types/src/components/DesignEditorPage.d.ts +0 -1
  616. package/dist/types/src/components/SunriseAnimation.d.ts +0 -5
  617. package/dist/types/src/components/SunriseAnimation.test/interface.d.ts +0 -11
  618. package/dist/types/src/components/SunriseAnimation.test/types.d.ts +0 -39
  619. package/dist/types/src/components/TestStatusBadge.d.ts +0 -15
  620. package/dist/types/src/components/pure/AppFrame.d.ts +0 -11
  621. package/dist/types/src/components/pure/AppFrame.test/implementation.d.ts +0 -3
  622. package/dist/types/src/components/pure/AppFrame.test/index.d.ts +0 -3
  623. package/dist/types/src/components/pure/AppFrame.test/specification.d.ts +0 -3
  624. package/dist/types/src/components/pure/AppFrame.test/types.d.ts +0 -33
  625. package/dist/types/src/components/pure/FeaturesReporterView.d.ts +0 -7
  626. package/dist/types/src/components/pure/FeaturesReporterView.test/implementation.d.ts +0 -3
  627. package/dist/types/src/components/pure/FeaturesReporterView.test/index.d.ts +0 -2
  628. package/dist/types/src/components/pure/FeaturesReporterView.test/specification.d.ts +0 -3
  629. package/dist/types/src/components/pure/FeaturesReporterView.test/types.d.ts +0 -54
  630. package/dist/types/src/components/pure/ModalContent.d.ts +0 -7
  631. package/dist/types/src/components/pure/ModalContent.test/implementation.d.ts +0 -3
  632. package/dist/types/src/components/pure/ModalContent.test/index.d.ts +0 -2
  633. package/dist/types/src/components/pure/ModalContent.test/specification.d.ts +0 -3
  634. package/dist/types/src/components/pure/ModalContent.test/types.d.ts +0 -45
  635. package/dist/types/src/components/pure/NavBar.d.ts +0 -23
  636. package/dist/types/src/components/pure/ProcessManager.d.ts +0 -8
  637. package/dist/types/src/components/pure/ProcessManagerView.d.ts +0 -20
  638. package/dist/types/src/components/pure/ProjectPageView.d.ts +0 -14
  639. package/dist/types/src/components/pure/ProjectPageView.test/implementation.d.ts +0 -3
  640. package/dist/types/src/components/pure/ProjectPageView.test/index.d.ts +0 -2
  641. package/dist/types/src/components/pure/ProjectPageView.test/specification.d.ts +0 -3
  642. package/dist/types/src/components/pure/ProjectPageView.test/types.d.ts +0 -57
  643. package/dist/types/src/components/pure/ProjectsPageView.d.ts +0 -29
  644. package/dist/types/src/components/pure/SettingsButton.d.ts +0 -2
  645. package/dist/types/src/components/pure/TestPageView.d.ts +0 -15
  646. package/dist/types/src/components/pure/TestPageView.test/implementation.d.ts +0 -12
  647. package/dist/types/src/components/pure/TestPageView.test/index.d.ts +0 -3
  648. package/dist/types/src/components/pure/TestPageView.test/specification.d.ts +0 -11
  649. package/dist/types/src/components/pure/TestPageView.test/types.d.ts +0 -65
  650. package/dist/types/src/components/pure/ThemeCard.d.ts +0 -9
  651. package/dist/types/src/components/stateful/FeaturesReporter.d.ts +0 -2
  652. package/dist/types/src/components/stateful/FileTree.d.ts +0 -8
  653. package/dist/types/src/components/stateful/ProcessManagerPage.d.ts +0 -2
  654. package/dist/types/src/components/stateful/ProjectPage.d.ts +0 -1
  655. package/dist/types/src/components/stateful/ProjectsPage.d.ts +0 -1
  656. package/dist/types/src/components/stateful/SettingsPage.d.ts +0 -2
  657. package/dist/types/src/components/stateful/SingleProcessPage.d.ts +0 -2
  658. package/dist/types/src/components/stateful/TestPage.d.ts +0 -1
  659. package/dist/types/src/components/stateful/TextEditorPage.d.ts +0 -1
  660. package/dist/types/src/defaultConfig.d.ts +0 -3
  661. package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +0 -2
  662. package/dist/types/src/esbuildConfigs/eslint-formatter-testeranto.d.ts +0 -2
  663. package/dist/types/src/esbuildConfigs/featuresPlugin.d.ts +0 -5
  664. package/dist/types/src/esbuildConfigs/index.d.ts +0 -4
  665. package/dist/types/src/esbuildConfigs/inputFilesPlugin.d.ts +0 -7
  666. package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +0 -2
  667. package/dist/types/src/esbuildConfigs/node.d.ts +0 -4
  668. package/dist/types/src/esbuildConfigs/pure.d.ts +0 -4
  669. package/dist/types/src/esbuildConfigs/rebuildPlugin.d.ts +0 -6
  670. package/dist/types/src/esbuildConfigs/web.d.ts +0 -4
  671. package/dist/types/src/init-docs.d.ts +0 -1
  672. package/dist/types/src/lib/BaseGiven.d.ts +0 -44
  673. package/dist/types/src/lib/BaseSuite.d.ts +0 -46
  674. package/dist/types/src/lib/BaseSuite.test/mock.d.ts +0 -21
  675. package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +0 -2
  676. package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +0 -2
  677. package/dist/types/src/lib/BaseSuite.test/test.d.ts +0 -36
  678. package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +0 -2
  679. package/dist/types/src/lib/BaseThen.d.ts +0 -27
  680. package/dist/types/src/lib/BaseWhen.d.ts +0 -27
  681. package/dist/types/src/lib/Sidecar.d.ts +0 -5
  682. package/dist/types/src/lib/Tiposkripto.d.ts +0 -35
  683. package/dist/types/src/lib/Tiposkripto.test/MockTiposkripto.d.ts +0 -15
  684. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.adapter.d.ts +0 -3
  685. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.d.ts +0 -2
  686. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.implementation.d.ts +0 -3
  687. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.specification.d.ts +0 -3
  688. package/dist/types/src/lib/Tiposkripto.test/Tiposkripto.types.d.ts +0 -53
  689. package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +0 -9
  690. package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +0 -6
  691. package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +0 -6
  692. package/dist/types/src/lib/abstractBase.test/adapter.d.ts +0 -3
  693. package/dist/types/src/lib/abstractBase.test/implementation.d.ts +0 -3
  694. package/dist/types/src/lib/abstractBase.test/index.d.ts +0 -2
  695. package/dist/types/src/lib/abstractBase.test/specification.d.ts +0 -3
  696. package/dist/types/src/lib/abstractBase.test/types.d.ts +0 -39
  697. package/dist/types/src/lib/index.d.ts +0 -67
  698. package/dist/types/src/lib/pmProxy.d.ts +0 -12
  699. package/dist/types/src/lib/pmProxy.test/adapter.d.ts +0 -3
  700. package/dist/types/src/lib/pmProxy.test/implementation.d.ts +0 -3
  701. package/dist/types/src/lib/pmProxy.test/index.d.ts +0 -6
  702. package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +0 -10
  703. package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +0 -40
  704. package/dist/types/src/lib/pmProxy.test/specification.d.ts +0 -3
  705. package/dist/types/src/lib/pmProxy.test/types.d.ts +0 -42
  706. package/dist/types/src/lib/types.d.ts +0 -24
  707. package/dist/types/src/mothership/index.d.ts +0 -2
  708. package/dist/types/src/mothership/test.d.ts +0 -2
  709. package/dist/types/src/testeranto.d.ts +0 -1
  710. package/dist/types/src/types/features.d.ts +0 -7
  711. package/dist/types/src/utils/api.d.ts +0 -9
  712. package/dist/types/src/utils/buildTemplates.d.ts +0 -1
  713. package/dist/types/src/utils/featureUtils.d.ts +0 -6
  714. package/dist/types/src/utils/golingvuMetafile.d.ts +0 -19
  715. package/dist/types/src/utils/logFiles.d.ts +0 -75
  716. package/dist/types/src/utils/makePrompt.d.ts +0 -2
  717. package/dist/types/src/utils/pitonoMetafile.d.ts +0 -7
  718. package/dist/types/src/utils/queue.d.ts +0 -11
  719. package/dist/types/src/utils.d.ts +0 -20
  720. package/dist/types/src/web.html.d.ts +0 -2
  721. package/dist/types/tsconfig.types.tsbuildinfo +0 -1
  722. package/pitono/__init__.py +0 -54
  723. package/pitono/types.py +0 -78
  724. package/src/golingvu/base_suite_test.go +0 -197
  725. package/src/templates/frontpage.html +0 -340
  726. package/src/templates/frontpage.md +0 -79
  727. package/testeranto/reports/core/src/lib/BaseSuite.test/web.test/web/tests.json +0 -29
  728. /package/{pitono → src/pitono}/core_generator.py +0 -0
  729. /package/{pitono → src/pitono}/pitono.egg-info/dependency_links.txt +0 -0
  730. /package/{pitono → src/pitono}/pitono.egg-info/entry_points.txt +0 -0
  731. /package/{pitono → src/pitono}/pitono.egg-info/top_level.txt +0 -0
  732. /package/{pitono → src/pitono}/pyproject.toml +0 -0
  733. /package/{pitono → src/pitono}/setup.py +0 -0
  734. /package/{pitono → src/pitono}/simple_adapter.py +0 -0
  735. /package/{dist/types/src/PM/types.d.ts → testeranto/helpo_chat_message.txt} +0 -0
  736. /package/{dist/types/src/components/SunriseAnimation.test/implementation.d.ts → testeranto/reports/core/example/test_example/python/stdout.log} +0 -0
  737. /package/{dist/types/src/components/SunriseAnimation.test/index.d.ts → testeranto/reports/core/src/Pure.test/pure/exit.log} +0 -0
  738. /package/{dist/types/src/components/SunriseAnimation.test/specification.d.ts → testeranto/reports/core/src/Pure.test/pure/lint_errors.txt} +0 -0
  739. /package/{dist/types/src/components/pure/SingleProcessView.d.ts → testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/debug.log} +0 -0
  740. /package/{dist/types/src/run.d.ts → testeranto/reports/core/src/components/pure/FeaturesReporterView.test/index/web/error.log} +0 -0
@@ -0,0 +1,839 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+ /* eslint-disable no-async-promise-executor */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ /* eslint-disable @typescript-eslint/no-unused-vars */
5
+
6
+ import { ChildProcess, spawn } from "node:child_process";
7
+ import fs from "fs";
8
+ import http from "http";
9
+ import url from "url";
10
+ import mime from "mime-types";
11
+ import { WebSocketServer } from "ws";
12
+
13
+ import { PM_Base } from "./base.js";
14
+ import {
15
+ WebSocketMessage,
16
+ ExecuteCommandMessage,
17
+ GetRunningProcessesMessage,
18
+ GetProcessMessage,
19
+ StdinMessage,
20
+ KillProcessMessage,
21
+ } from "./types.js";
22
+
23
+ export abstract class PM_WithWebSocket extends PM_Base {
24
+ wss: WebSocketServer;
25
+ clients: Set<any> = new Set();
26
+ httpServer: http.Server;
27
+ runningProcesses: Map<string, ChildProcess | Promise<any>> = new Map();
28
+ allProcesses: Map<
29
+ string,
30
+ {
31
+ child?: ChildProcess;
32
+ promise?: Promise<any>;
33
+ status: "running" | "exited" | "error" | "completed";
34
+ exitCode?: number;
35
+ error?: string;
36
+ command: string;
37
+ pid?: number;
38
+ timestamp: string;
39
+ type: "process" | "promise";
40
+ category: "aider" | "bdd-test" | "build-time" | "other";
41
+ testName?: string;
42
+ platform?: "node" | "web" | "pure" | "python" | "golang";
43
+ }
44
+ > = new Map();
45
+ processLogs: Map<string, string[]> = new Map();
46
+
47
+ constructor(configs: any) {
48
+ super(configs);
49
+
50
+ // Create HTTP server
51
+ this.httpServer = http.createServer(this.requestHandler.bind(this));
52
+
53
+ // Start WebSocket server attached to the HTTP server
54
+ this.wss = new WebSocketServer({ server: this.httpServer });
55
+
56
+ this.wss.on("connection", (ws) => {
57
+ this.clients.add(ws);
58
+ console.log("Client connected");
59
+
60
+ ws.on("message", (data) => {
61
+ try {
62
+ const message: WebSocketMessage = JSON.parse(data.toString());
63
+
64
+ // Handle chat messages first
65
+ if (message.type === "chatMessage") {
66
+ // Always record the message, even if aider is not available
67
+ console.log(`Received chat message: ${message.content}`);
68
+
69
+ // Pass to PM_WithHelpo if available
70
+ if ((this as any).handleChatMessage) {
71
+ (this as any).handleChatMessage(message.content);
72
+ } else {
73
+ console.log("PM_WithHelpo not available - message not processed");
74
+ }
75
+ return;
76
+ }
77
+
78
+ // Handle file operations via WebSocket
79
+ if (message.type === "listDirectory") {
80
+ this.handleWebSocketListDirectory(ws, message);
81
+ } else if (message.type === "executeCommand") {
82
+ const executeMessage = message as ExecuteCommandMessage;
83
+ // Validate the command starts with 'aider'
84
+ if (message.command && message.command.trim().startsWith("aider")) {
85
+ console.log(`Executing command: ${message.command}`);
86
+ // Execute the command
87
+ const processId = Date.now().toString();
88
+ const child = spawn(message.command, {
89
+ shell: true,
90
+ cwd: process.cwd(),
91
+ });
92
+
93
+ // Track the process in both maps
94
+ this.runningProcesses.set(processId, child);
95
+ this.allProcesses.set(processId, {
96
+ child,
97
+ status: "running",
98
+ command: message.command,
99
+ pid: child.pid,
100
+ timestamp: new Date().toISOString(),
101
+ type: "process",
102
+ category: "aider",
103
+ });
104
+
105
+ // Initialize logs for this process
106
+ this.processLogs.set(processId, []);
107
+
108
+ // Broadcast process started
109
+ this.broadcast({
110
+ type: "processStarted",
111
+ processId,
112
+ command: message.command,
113
+ timestamp: new Date().toISOString(),
114
+ logs: [],
115
+ });
116
+
117
+ // Capture stdout and stderr
118
+ child.stdout?.on("data", (data) => {
119
+ const logData = data.toString();
120
+ // Add to stored logs
121
+ const logs = this.processLogs.get(processId) || [];
122
+ logs.push(logData);
123
+ this.processLogs.set(processId, logs);
124
+
125
+ this.broadcast({
126
+ type: "processStdout",
127
+ processId,
128
+ data: logData,
129
+ timestamp: new Date().toISOString(),
130
+ });
131
+ });
132
+
133
+ child.stderr?.on("data", (data) => {
134
+ const logData = data.toString();
135
+ // Add to stored logs
136
+ const logs = this.processLogs.get(processId) || [];
137
+ logs.push(logData);
138
+ this.processLogs.set(processId, logs);
139
+
140
+ this.broadcast({
141
+ type: "processStderr",
142
+ processId,
143
+ data: logData,
144
+ timestamp: new Date().toISOString(),
145
+ });
146
+ });
147
+
148
+ child.on("error", (error) => {
149
+ console.error(`Failed to execute command: ${error}`);
150
+ this.runningProcesses.delete(processId);
151
+ // Update the process status to error
152
+ const processInfo = this.allProcesses.get(processId);
153
+ if (processInfo) {
154
+ this.allProcesses.set(processId, {
155
+ ...processInfo,
156
+ status: "error",
157
+ error: error.message,
158
+ });
159
+ }
160
+ this.broadcast({
161
+ type: "processError",
162
+ processId,
163
+ error: error.message,
164
+ timestamp: new Date().toISOString(),
165
+ });
166
+ });
167
+
168
+ child.on("exit", (code) => {
169
+ console.log(`Command exited with code ${code}`);
170
+ // Remove from running processes but keep in allProcesses
171
+ this.runningProcesses.delete(processId);
172
+ // Update the process status to exited
173
+ const processInfo = this.allProcesses.get(processId);
174
+ if (processInfo) {
175
+ this.allProcesses.set(processId, {
176
+ ...processInfo,
177
+ status: "exited",
178
+ exitCode: code,
179
+ });
180
+ }
181
+ this.broadcast({
182
+ type: "processExited",
183
+ processId,
184
+ exitCode: code,
185
+ timestamp: new Date().toISOString(),
186
+ });
187
+ });
188
+ } else {
189
+ console.error('Invalid command: must start with "aider"');
190
+ }
191
+ } else if (message.type === "getRunningProcesses") {
192
+ const getRunningMessage = message as GetRunningProcessesMessage;
193
+ // Send list of all processes (both running and completed) with their full logs
194
+ const processes = Array.from(this.allProcesses.entries()).map(
195
+ ([id, procInfo]) => ({
196
+ processId: id,
197
+ command: procInfo.command,
198
+ pid: procInfo.pid,
199
+ status: procInfo.status,
200
+ exitCode: procInfo.exitCode,
201
+ error: procInfo.error,
202
+ timestamp: procInfo.timestamp,
203
+ category: procInfo.category,
204
+ testName: procInfo.testName,
205
+ platform: procInfo.platform,
206
+ logs: this.processLogs.get(id) || [],
207
+ })
208
+ );
209
+ ws.send(
210
+ JSON.stringify({
211
+ type: "runningProcesses",
212
+ processes,
213
+ })
214
+ );
215
+ } else if (message.type === "getProcess") {
216
+ const getProcessMessage = message as GetProcessMessage;
217
+ // Send specific process with full logs
218
+ const processId = message.processId;
219
+ const procInfo = this.allProcesses.get(processId);
220
+ if (procInfo) {
221
+ ws.send(
222
+ JSON.stringify({
223
+ type: "processData",
224
+ processId,
225
+ command: procInfo.command,
226
+ pid: procInfo.pid,
227
+ status: procInfo.status,
228
+ exitCode: procInfo.exitCode,
229
+ error: procInfo.error,
230
+ timestamp: procInfo.timestamp,
231
+ category: procInfo.category,
232
+ testName: procInfo.testName,
233
+ platform: procInfo.platform,
234
+ logs: this.processLogs.get(processId) || [],
235
+ })
236
+ );
237
+ }
238
+ } else if (message.type === "stdin") {
239
+ const stdinMessage = message as StdinMessage;
240
+ // Handle stdin input for a process
241
+ const processId = message.processId;
242
+ const data = message.data;
243
+ console.log("Received stdin for process", processId, ":", data);
244
+ const childProcess = this.runningProcesses.get(processId);
245
+
246
+ if (childProcess && childProcess.stdin) {
247
+ console.log("Writing to process stdin");
248
+ childProcess.stdin.write(data);
249
+ } else {
250
+ console.log(
251
+ "Cannot write to stdin - process not found or no stdin:",
252
+ {
253
+ processExists: !!childProcess,
254
+ stdinExists: childProcess?.stdin ? true : false,
255
+ }
256
+ );
257
+ }
258
+ } else if (message.type === "killProcess") {
259
+ const killProcessMessage = message as KillProcessMessage;
260
+ // Handle killing a process
261
+ const processId = message.processId;
262
+ console.log("Received killProcess for process", processId);
263
+ const childProcess = this.runningProcesses.get(processId);
264
+
265
+ if (childProcess) {
266
+ console.log("Killing process");
267
+ childProcess.kill("SIGTERM");
268
+ // The process exit handler will update the status and broadcast the change
269
+ } else {
270
+ console.log("Cannot kill process - process not found:", {
271
+ processExists: !!childProcess,
272
+ });
273
+ }
274
+ } else if (message.type === "getChatHistory") {
275
+ // Handle request for chat history
276
+ // Pass to PM_WithHelpo if available
277
+ if ((this as any).getChatHistory) {
278
+ (this as any).getChatHistory().then((history: any) => {
279
+ ws.send(JSON.stringify({
280
+ type: "chatHistory",
281
+ messages: history
282
+ }));
283
+ }).catch((error: any) => {
284
+ console.error("Error getting chat history:", error);
285
+ ws.send(JSON.stringify({
286
+ type: "error",
287
+ message: "Failed to get chat history"
288
+ }));
289
+ });
290
+ }
291
+ }
292
+ } catch (error) {
293
+ console.error("Error handling WebSocket message:", error);
294
+ }
295
+ });
296
+
297
+ ws.on("close", () => {
298
+ this.clients.delete(ws);
299
+ console.log("Client disconnected");
300
+ });
301
+
302
+ ws.on("error", (error) => {
303
+ console.error("WebSocket error:", error);
304
+ this.clients.delete(ws);
305
+ });
306
+ });
307
+
308
+ // Start HTTP server
309
+ const httpPort = Number(process.env.HTTP_PORT) || 3000;
310
+ this.httpServer.listen(httpPort, () => {
311
+ console.log(`HTTP server running on http://localhost:${httpPort}`);
312
+ });
313
+ }
314
+
315
+ requestHandler(req: http.IncomingMessage, res: http.ServerResponse) {
316
+ // Parse the URL
317
+ const parsedUrl = url.parse(req.url || "/", true);
318
+ const pathname = parsedUrl.pathname || "/";
319
+
320
+ // Handle file system API endpoints
321
+ if (pathname?.startsWith("/api/files/")) {
322
+ this.handleFilesApi(req, res);
323
+ return;
324
+ }
325
+
326
+ // Handle health check endpoint
327
+ if (pathname === "/health") {
328
+ res.writeHead(200, { "Content-Type": "application/json" });
329
+ res.end(
330
+ JSON.stringify({ status: "ok", timestamp: new Date().toISOString() })
331
+ );
332
+ return;
333
+ }
334
+
335
+ // Handle root path
336
+ let processedPathname = pathname;
337
+ if (processedPathname === "/") {
338
+ processedPathname = "/index.html";
339
+ }
340
+
341
+ // Remove leading slash
342
+ let filePath = processedPathname.substring(1);
343
+
344
+ // Determine which directory to serve from
345
+ if (filePath.startsWith("reports/")) {
346
+ // Serve from reports directory
347
+ filePath = `testeranto/${filePath}`;
348
+ } else if (filePath.startsWith("metafiles/")) {
349
+ // Serve from metafiles directory
350
+ filePath = `testeranto/${filePath}`;
351
+ } else if (filePath === "projects.json") {
352
+ // Serve projects.json
353
+ filePath = `testeranto/${filePath}`;
354
+ } else {
355
+ // For frontend assets, try multiple possible locations
356
+ // First, try the dist directory
357
+ const possiblePaths = [
358
+ `dist/${filePath}`,
359
+ `testeranto/dist/${filePath}`,
360
+ `../dist/${filePath}`,
361
+ `./${filePath}`,
362
+ ];
363
+
364
+ // Find the first existing file
365
+ let foundPath = null;
366
+ for (const possiblePath of possiblePaths) {
367
+ if (fs.existsSync(possiblePath)) {
368
+ foundPath = possiblePath;
369
+ break;
370
+ }
371
+ }
372
+
373
+ if (foundPath) {
374
+ filePath = foundPath;
375
+ } else {
376
+ // If no file found, serve index.html for SPA routing
377
+ const indexPath = this.findIndexHtml();
378
+ if (indexPath) {
379
+ fs.readFile(indexPath, (err, data) => {
380
+ if (err) {
381
+ res.writeHead(404, { "Content-Type": "text/plain" });
382
+ res.end("404 Not Found");
383
+ return;
384
+ }
385
+ res.writeHead(200, { "Content-Type": "text/html" });
386
+ res.end(data);
387
+ });
388
+ return;
389
+ } else {
390
+ res.writeHead(404, { "Content-Type": "text/plain" });
391
+ res.end("404 Not Found");
392
+ return;
393
+ }
394
+ }
395
+ }
396
+
397
+ // Check if file exists
398
+ fs.exists(filePath, (exists) => {
399
+ if (!exists) {
400
+ // For SPA routing, serve index.html if the path looks like a route
401
+ if (!processedPathname.includes(".") && processedPathname !== "/") {
402
+ const indexPath = this.findIndexHtml();
403
+ if (indexPath) {
404
+ fs.readFile(indexPath, (err, data) => {
405
+ if (err) {
406
+ res.writeHead(404, { "Content-Type": "text/plain" });
407
+ res.end("404 Not Found");
408
+ return;
409
+ }
410
+ res.writeHead(200, { "Content-Type": "text/html" });
411
+ res.end(data);
412
+ });
413
+ return;
414
+ } else {
415
+ // Serve a simple message if index.html is not found
416
+ res.writeHead(200, { "Content-Type": "text/html" });
417
+ res.end(`
418
+ <html>
419
+ <body>
420
+ <h1>Testeranto is running</h1>
421
+ <p>Frontend files are not built yet. Run 'npm run build' to build the frontend.</p>
422
+ </body>
423
+ </html>
424
+ `);
425
+ return;
426
+ }
427
+ }
428
+ res.writeHead(404, { "Content-Type": "text/plain" });
429
+ res.end("404 Not Found");
430
+ return;
431
+ }
432
+
433
+ // Read and serve the file
434
+ fs.readFile(filePath, (err, data) => {
435
+ if (err) {
436
+ res.writeHead(500, { "Content-Type": "text/plain" });
437
+ res.end("500 Internal Server Error");
438
+ return;
439
+ }
440
+
441
+ // For HTML files, inject the configuration
442
+ if (filePath.endsWith(".html")) {
443
+ let content = data.toString();
444
+ // Inject the configuration script before the closing </body> tag
445
+ if (content.includes("</body>")) {
446
+ const configScript = `
447
+ <script>
448
+ window.testerantoConfig = ${JSON.stringify({
449
+ githubOAuth: {
450
+ clientId: process.env.GITHUB_CLIENT_ID || "",
451
+ },
452
+ serverOrigin:
453
+ process.env.SERVER_ORIGIN || "http://localhost:3000",
454
+ })};
455
+ </script>
456
+ `;
457
+ content = content.replace("</body>", `${configScript}</body>`);
458
+ }
459
+ res.writeHead(200, { "Content-Type": "text/html" });
460
+ res.end(content);
461
+ } else {
462
+ // Get MIME type for other files
463
+ const mimeType = mime.lookup(filePath) || "application/octet-stream";
464
+ res.writeHead(200, { "Content-Type": mimeType });
465
+ res.end(data);
466
+ }
467
+ });
468
+ });
469
+ }
470
+
471
+ private handleFilesApi(req: http.IncomingMessage, res: http.ServerResponse) {
472
+ const parsedUrl = url.parse(req.url || "/", true);
473
+ const pathname = parsedUrl.pathname || "/";
474
+ const query = parsedUrl.query || {};
475
+
476
+ // Set CORS headers
477
+ res.setHeader("Access-Control-Allow-Origin", "*");
478
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
479
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type");
480
+
481
+ if (req.method === "OPTIONS") {
482
+ res.writeHead(200);
483
+ res.end();
484
+ return;
485
+ }
486
+
487
+ try {
488
+ if (pathname === "/api/files/list" && req.method === "GET") {
489
+ this.handleListDirectory(req, res, query);
490
+ } else if (pathname === "/api/files/read" && req.method === "GET") {
491
+ this.handleReadFile(req, res, query);
492
+ } else if (pathname === "/api/files/exists" && req.method === "GET") {
493
+ this.handleFileExists(req, res, query);
494
+ } else {
495
+ res.writeHead(404, { "Content-Type": "application/json" });
496
+ res.end(JSON.stringify({ error: "Not found" }));
497
+ }
498
+ } catch (error) {
499
+ res.writeHead(500, { "Content-Type": "application/json" });
500
+ res.end(JSON.stringify({ error: "Internal server error" }));
501
+ }
502
+ }
503
+
504
+ private async handleListDirectory(req: http.IncomingMessage, res: http.ServerResponse, query: any) {
505
+ const path = query.path as string;
506
+ if (!path) {
507
+ res.writeHead(400, { "Content-Type": "application/json" });
508
+ res.end(JSON.stringify({ error: "Path parameter required" }));
509
+ return;
510
+ }
511
+
512
+ try {
513
+ // Resolve the path relative to the current working directory
514
+ const fullPath = this.resolvePath(path);
515
+ const items = await this.listDirectory(fullPath);
516
+ res.writeHead(200, { "Content-Type": "application/json" });
517
+ res.end(JSON.stringify(items));
518
+ } catch (error) {
519
+ console.error('Error listing directory:', error);
520
+ res.writeHead(500, { "Content-Type": "application/json" });
521
+ res.end(JSON.stringify({ error: "Failed to list directory" }));
522
+ }
523
+ }
524
+
525
+ private async handleReadFile(req: http.IncomingMessage, res: http.ServerResponse, query: any) {
526
+ const path = query.path as string;
527
+ if (!path) {
528
+ res.writeHead(400, { "Content-Type": "application/json" });
529
+ res.end(JSON.stringify({ error: "Path parameter required" }));
530
+ return;
531
+ }
532
+
533
+ try {
534
+ const fullPath = this.resolvePath(path);
535
+ const content = await fs.promises.readFile(fullPath, 'utf-8');
536
+ res.writeHead(200, { "Content-Type": "text/plain" });
537
+ res.end(content);
538
+ } catch (error) {
539
+ console.error('Error reading file:', error);
540
+ res.writeHead(500, { "Content-Type": "application/json" });
541
+ res.end(JSON.stringify({ error: "Failed to read file" }));
542
+ }
543
+ }
544
+
545
+ private async handleFileExists(req: http.IncomingMessage, res: http.ServerResponse, query: any) {
546
+ const path = query.path as string;
547
+ if (!path) {
548
+ res.writeHead(400, { "Content-Type": "application/json" });
549
+ res.end(JSON.stringify({ error: "Path parameter required" }));
550
+ return;
551
+ }
552
+
553
+ try {
554
+ const fullPath = this.resolvePath(path);
555
+ const exists = fs.existsSync(fullPath);
556
+ res.writeHead(200, { "Content-Type": "application/json" });
557
+ res.end(JSON.stringify({ exists }));
558
+ } catch (error) {
559
+ console.error('Error checking file existence:', error);
560
+ res.writeHead(500, { "Content-Type": "application/json" });
561
+ res.end(JSON.stringify({ error: "Failed to check file existence" }));
562
+ }
563
+ }
564
+
565
+ private resolvePath(requestedPath: string): string {
566
+ // Security: Prevent directory traversal attacks
567
+ // Normalize the path and ensure it doesn't go outside the current working directory
568
+ const normalizedPath = requestedPath
569
+ .replace(/\.\./g, '') // Remove any '..' sequences
570
+ .replace(/^\//, '') // Remove leading slash
571
+ .replace(/\/+/g, '/'); // Collapse multiple slashes
572
+
573
+ return `${process.cwd()}/${normalizedPath}`;
574
+ }
575
+
576
+ private async listDirectory(dirPath: string): Promise<any[]> {
577
+ try {
578
+ const items = await fs.promises.readdir(dirPath, { withFileTypes: true });
579
+ const result: any[] = [];
580
+
581
+ for (const item of items) {
582
+ // Skip hidden files and directories
583
+ if (item.name.startsWith('.')) continue;
584
+
585
+ const fullPath = `${dirPath}/${item.name}`;
586
+ const relativePath = fullPath.replace(process.cwd(), '').replace(/^\//, '');
587
+
588
+ if (item.isDirectory()) {
589
+ result.push({
590
+ name: item.name,
591
+ type: 'folder',
592
+ path: '/' + relativePath
593
+ });
594
+ } else if (item.isFile()) {
595
+ result.push({
596
+ name: item.name,
597
+ type: 'file',
598
+ path: '/' + relativePath
599
+ });
600
+ }
601
+ }
602
+
603
+ return result;
604
+ } catch (error) {
605
+ console.error('Error listing directory:', error);
606
+ throw error;
607
+ }
608
+ }
609
+
610
+ findIndexHtml(): string | null {
611
+ const possiblePaths = [
612
+ "dist/index.html",
613
+ "testeranto/dist/index.html",
614
+ "../dist/index.html",
615
+ "./index.html",
616
+ ];
617
+
618
+ for (const path of possiblePaths) {
619
+ if (fs.existsSync(path)) {
620
+ return path;
621
+ }
622
+ }
623
+ return null;
624
+ }
625
+
626
+ // Add a method to track promise-based processes
627
+ addPromiseProcess(
628
+ processId: string,
629
+ promise: Promise<any>,
630
+ command: string,
631
+ category: "aider" | "bdd-test" | "build-time" | "other" = "other",
632
+ testName?: string,
633
+ platform?: "node" | "web" | "pure" | "python" | "golang",
634
+ onResolve?: (result: any) => void,
635
+ onReject?: (error: any) => void
636
+ ) {
637
+ // Track the promise in both maps
638
+ this.runningProcesses.set(processId, promise);
639
+ this.allProcesses.set(processId, {
640
+ promise,
641
+ status: "running",
642
+ command,
643
+ timestamp: new Date().toISOString(),
644
+ type: "promise",
645
+ category,
646
+ testName,
647
+ platform,
648
+ });
649
+
650
+ // Initialize logs for this process
651
+ this.processLogs.set(processId, []);
652
+
653
+ // Add log entry for process start
654
+ const startMessage = `Starting: ${command}`;
655
+ const logs = this.processLogs.get(processId) || [];
656
+ logs.push(startMessage);
657
+ this.processLogs.set(processId, logs);
658
+
659
+ // Broadcast process started
660
+ this.broadcast({
661
+ type: "processStarted",
662
+ processId,
663
+ command,
664
+ timestamp: new Date().toISOString(),
665
+ logs: [startMessage],
666
+ });
667
+
668
+ // Handle promise resolution
669
+ promise
670
+ .then((result) => {
671
+ this.runningProcesses.delete(processId);
672
+ // Update the process status to completed
673
+ const processInfo = this.allProcesses.get(processId);
674
+ if (processInfo) {
675
+ this.allProcesses.set(processId, {
676
+ ...processInfo,
677
+ status: "completed",
678
+ exitCode: 0,
679
+ });
680
+ }
681
+
682
+ // Add log entry for process completion
683
+ const successMessage = `Completed successfully with result: ${JSON.stringify(
684
+ result
685
+ )}`;
686
+ const currentLogs = this.processLogs.get(processId) || [];
687
+ currentLogs.push(successMessage);
688
+ this.processLogs.set(processId, currentLogs);
689
+
690
+ this.broadcast({
691
+ type: "processExited",
692
+ processId,
693
+ exitCode: 0,
694
+ timestamp: new Date().toISOString(),
695
+ logs: [successMessage],
696
+ });
697
+ if (onResolve) onResolve(result);
698
+ })
699
+ .catch((error) => {
700
+ this.runningProcesses.delete(processId);
701
+ // Update the process status to error
702
+ const processInfo = this.allProcesses.get(processId);
703
+ if (processInfo) {
704
+ this.allProcesses.set(processId, {
705
+ ...processInfo,
706
+ status: "error",
707
+ error: error.message,
708
+ });
709
+ }
710
+
711
+ // Add log entry for process error
712
+ const errorMessage = `Failed with error: ${error.message}`;
713
+ const currentLogs = this.processLogs.get(processId) || [];
714
+ currentLogs.push(errorMessage);
715
+ this.processLogs.set(processId, currentLogs);
716
+
717
+ this.broadcast({
718
+ type: "processError",
719
+ processId,
720
+ error: error.message,
721
+ timestamp: new Date().toISOString(),
722
+ logs: [errorMessage],
723
+ });
724
+ if (onReject) onReject(error);
725
+ });
726
+
727
+ return processId;
728
+ }
729
+
730
+ private async handleWebSocketListDirectory(ws: WebSocket, message: any) {
731
+ try {
732
+ const path = message.path;
733
+ if (!path) {
734
+ ws.send(JSON.stringify({
735
+ type: 'error',
736
+ message: 'Path parameter required'
737
+ }));
738
+ return;
739
+ }
740
+
741
+ const fullPath = this.resolvePath(path);
742
+ const items = await this.listDirectory(fullPath);
743
+
744
+ ws.send(JSON.stringify({
745
+ type: 'directoryListing',
746
+ path: path,
747
+ items: items
748
+ }));
749
+ } catch (error) {
750
+ console.error('Error handling WebSocket directory listing:', error);
751
+ ws.send(JSON.stringify({
752
+ type: 'error',
753
+ message: 'Failed to list directory'
754
+ }));
755
+ }
756
+ }
757
+
758
+ broadcast(message: any) {
759
+ const data =
760
+ typeof message === "string" ? message : JSON.stringify(message);
761
+ this.clients.forEach((client) => {
762
+ if (client.readyState === 1) {
763
+ // WebSocket.OPEN
764
+ client.send(data);
765
+ }
766
+ });
767
+ }
768
+
769
+ // Helper methods to get processes by category
770
+ getProcessesByCategory(
771
+ category: "aider" | "bdd-test" | "build-time" | "other"
772
+ ) {
773
+ return Array.from(this.allProcesses.entries())
774
+ .filter(([id, procInfo]) => procInfo.category === category)
775
+ .map(([id, procInfo]) => ({
776
+ processId: id,
777
+ command: procInfo.command,
778
+ pid: procInfo.pid,
779
+ status: procInfo.status,
780
+ exitCode: procInfo.exitCode,
781
+ error: procInfo.error,
782
+ timestamp: procInfo.timestamp,
783
+ category: procInfo.category,
784
+ testName: procInfo.testName,
785
+ platform: procInfo.platform,
786
+ logs: this.processLogs.get(id) || [],
787
+ }));
788
+ }
789
+
790
+ getBDDTestProcesses() {
791
+ return this.getProcessesByCategory("bdd-test");
792
+ }
793
+
794
+ getBuildTimeProcesses() {
795
+ return this.getProcessesByCategory("build-time");
796
+ }
797
+
798
+ getAiderProcesses() {
799
+ return this.getProcessesByCategory("aider");
800
+ }
801
+
802
+ getProcessesByTestName(testName: string) {
803
+ return Array.from(this.allProcesses.entries())
804
+ .filter(([id, procInfo]) => procInfo.testName === testName)
805
+ .map(([id, procInfo]) => ({
806
+ processId: id,
807
+ command: procInfo.command,
808
+ pid: procInfo.pid,
809
+ status: procInfo.status,
810
+ exitCode: procInfo.exitCode,
811
+ error: procInfo.error,
812
+ timestamp: procInfo.timestamp,
813
+ category: procInfo.category,
814
+ testName: procInfo.testName,
815
+ platform: procInfo.platform,
816
+ logs: this.processLogs.get(id) || [],
817
+ }));
818
+ }
819
+
820
+ getProcessesByPlatform(
821
+ platform: "node" | "web" | "pure" | "pitono" | "golang"
822
+ ) {
823
+ return Array.from(this.allProcesses.entries())
824
+ .filter(([id, procInfo]) => procInfo.platform === platform)
825
+ .map(([id, procInfo]) => ({
826
+ processId: id,
827
+ command: procInfo.command,
828
+ pid: procInfo.pid,
829
+ status: procInfo.status,
830
+ exitCode: procInfo.exitCode,
831
+ error: procInfo.error,
832
+ timestamp: procInfo.timestamp,
833
+ category: procInfo.category,
834
+ testName: procInfo.testName,
835
+ platform: procInfo.platform,
836
+ logs: this.processLogs.get(id) || [],
837
+ }));
838
+ }
839
+ }