@n-dx/web 0.1.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 (671) hide show
  1. package/LICENSE +96 -0
  2. package/README.md +5 -0
  3. package/build.js +243 -0
  4. package/dist/cli/index.d.ts +8 -0
  5. package/dist/cli/index.js +50 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/landing/index.html +325 -0
  8. package/dist/landing/landing.d.ts +38 -0
  9. package/dist/landing/landing.js +299 -0
  10. package/dist/landing/landing.js.map +1 -0
  11. package/dist/public.d.ts +55 -0
  12. package/dist/public.js +51 -0
  13. package/dist/public.js.map +1 -0
  14. package/dist/schema/features.d.ts +28 -0
  15. package/dist/schema/features.js +9 -0
  16. package/dist/schema/features.js.map +1 -0
  17. package/dist/schema/v1.d.ts +317 -0
  18. package/dist/schema/v1.js +3 -0
  19. package/dist/schema/v1.js.map +1 -0
  20. package/dist/server/aggregation-cache.d.ts +105 -0
  21. package/dist/server/aggregation-cache.js +163 -0
  22. package/dist/server/aggregation-cache.js.map +1 -0
  23. package/dist/server/concurrent-execution-metrics.d.ts +103 -0
  24. package/dist/server/concurrent-execution-metrics.js +253 -0
  25. package/dist/server/concurrent-execution-metrics.js.map +1 -0
  26. package/dist/server/domain-gateway.d.ts +18 -0
  27. package/dist/server/domain-gateway.js +19 -0
  28. package/dist/server/domain-gateway.js.map +1 -0
  29. package/dist/server/incremental-task-usage.d.ts +92 -0
  30. package/dist/server/incremental-task-usage.js +251 -0
  31. package/dist/server/incremental-task-usage.js.map +1 -0
  32. package/dist/server/index.d.ts +39 -0
  33. package/dist/server/index.js +36 -0
  34. package/dist/server/index.js.map +1 -0
  35. package/dist/server/port.d.ts +96 -0
  36. package/dist/server/port.js +134 -0
  37. package/dist/server/port.js.map +1 -0
  38. package/dist/server/pr-markdown-refresh-diagnostics.d.ts +59 -0
  39. package/dist/server/pr-markdown-refresh-diagnostics.js +429 -0
  40. package/dist/server/pr-markdown-refresh-diagnostics.js.map +1 -0
  41. package/dist/server/prd-io.d.ts +40 -0
  42. package/dist/server/prd-io.js +66 -0
  43. package/dist/server/prd-io.js.map +1 -0
  44. package/dist/server/process-memory-tracker.d.ts +79 -0
  45. package/dist/server/process-memory-tracker.js +194 -0
  46. package/dist/server/process-memory-tracker.js.map +1 -0
  47. package/dist/server/register-scheduler.d.ts +53 -0
  48. package/dist/server/register-scheduler.js +36 -0
  49. package/dist/server/register-scheduler.js.map +1 -0
  50. package/dist/server/rex-gateway.d.ts +39 -0
  51. package/dist/server/rex-gateway.js +47 -0
  52. package/dist/server/rex-gateway.js.map +1 -0
  53. package/dist/server/routes-adaptive.d.ts +21 -0
  54. package/dist/server/routes-adaptive.js +659 -0
  55. package/dist/server/routes-adaptive.js.map +1 -0
  56. package/dist/server/routes-config.d.ts +47 -0
  57. package/dist/server/routes-config.js +222 -0
  58. package/dist/server/routes-config.js.map +1 -0
  59. package/dist/server/routes-data.d.ts +14 -0
  60. package/dist/server/routes-data.js +129 -0
  61. package/dist/server/routes-data.js.map +1 -0
  62. package/dist/server/routes-features.d.ts +14 -0
  63. package/dist/server/routes-features.js +245 -0
  64. package/dist/server/routes-features.js.map +1 -0
  65. package/dist/server/routes-hench.d.ts +116 -0
  66. package/dist/server/routes-hench.js +2016 -0
  67. package/dist/server/routes-hench.js.map +1 -0
  68. package/dist/server/routes-integrations.d.ts +23 -0
  69. package/dist/server/routes-integrations.js +277 -0
  70. package/dist/server/routes-integrations.js.map +1 -0
  71. package/dist/server/routes-mcp.d.ts +31 -0
  72. package/dist/server/routes-mcp.js +175 -0
  73. package/dist/server/routes-mcp.js.map +1 -0
  74. package/dist/server/routes-notion.d.ts +23 -0
  75. package/dist/server/routes-notion.js +723 -0
  76. package/dist/server/routes-notion.js.map +1 -0
  77. package/dist/server/routes-project.d.ts +47 -0
  78. package/dist/server/routes-project.js +128 -0
  79. package/dist/server/routes-project.js.map +1 -0
  80. package/dist/server/routes-rex/analysis.d.ts +11 -0
  81. package/dist/server/routes-rex/analysis.js +583 -0
  82. package/dist/server/routes-rex/analysis.js.map +1 -0
  83. package/dist/server/routes-rex/execution.d.ts +37 -0
  84. package/dist/server/routes-rex/execution.js +355 -0
  85. package/dist/server/routes-rex/execution.js.map +1 -0
  86. package/dist/server/routes-rex/health.d.ts +8 -0
  87. package/dist/server/routes-rex/health.js +136 -0
  88. package/dist/server/routes-rex/health.js.map +1 -0
  89. package/dist/server/routes-rex/index.d.ts +35 -0
  90. package/dist/server/routes-rex/index.js +72 -0
  91. package/dist/server/routes-rex/index.js.map +1 -0
  92. package/dist/server/routes-rex/items.d.ts +8 -0
  93. package/dist/server/routes-rex/items.js +359 -0
  94. package/dist/server/routes-rex/items.js.map +1 -0
  95. package/dist/server/routes-rex/prune.d.ts +11 -0
  96. package/dist/server/routes-rex/prune.js +379 -0
  97. package/dist/server/routes-rex/prune.js.map +1 -0
  98. package/dist/server/routes-rex/reads.d.ts +9 -0
  99. package/dist/server/routes-rex/reads.js +119 -0
  100. package/dist/server/routes-rex/reads.js.map +1 -0
  101. package/dist/server/routes-rex/requirements.d.ts +10 -0
  102. package/dist/server/routes-rex/requirements.js +408 -0
  103. package/dist/server/routes-rex/requirements.js.map +1 -0
  104. package/dist/server/routes-rex/shared.d.ts +37 -0
  105. package/dist/server/routes-rex/shared.js +73 -0
  106. package/dist/server/routes-rex/shared.js.map +1 -0
  107. package/dist/server/routes-search.d.ts +26 -0
  108. package/dist/server/routes-search.js +82 -0
  109. package/dist/server/routes-search.js.map +1 -0
  110. package/dist/server/routes-sourcevision.d.ts +18 -0
  111. package/dist/server/routes-sourcevision.js +444 -0
  112. package/dist/server/routes-sourcevision.js.map +1 -0
  113. package/dist/server/routes-static.d.ts +20 -0
  114. package/dist/server/routes-static.js +168 -0
  115. package/dist/server/routes-static.js.map +1 -0
  116. package/dist/server/routes-status.d.ts +58 -0
  117. package/dist/server/routes-status.js +191 -0
  118. package/dist/server/routes-status.js.map +1 -0
  119. package/dist/server/routes-token-usage.d.ts +63 -0
  120. package/dist/server/routes-token-usage.js +720 -0
  121. package/dist/server/routes-token-usage.js.map +1 -0
  122. package/dist/server/routes-validation.d.ts +10 -0
  123. package/dist/server/routes-validation.js +365 -0
  124. package/dist/server/routes-validation.js.map +1 -0
  125. package/dist/server/routes-workflow.d.ts +15 -0
  126. package/dist/server/routes-workflow.js +498 -0
  127. package/dist/server/routes-workflow.js.map +1 -0
  128. package/dist/server/search-index.d.ts +111 -0
  129. package/dist/server/search-index.js +348 -0
  130. package/dist/server/search-index.js.map +1 -0
  131. package/dist/server/shared-types.d.ts +65 -0
  132. package/dist/server/shared-types.js +31 -0
  133. package/dist/server/shared-types.js.map +1 -0
  134. package/dist/server/start.d.ts +68 -0
  135. package/dist/server/start.js +568 -0
  136. package/dist/server/start.js.map +1 -0
  137. package/dist/server/task-usage.d.ts +17 -0
  138. package/dist/server/task-usage.js +20 -0
  139. package/dist/server/task-usage.js.map +1 -0
  140. package/dist/server/types.d.ts +27 -0
  141. package/dist/server/types.js +26 -0
  142. package/dist/server/types.js.map +1 -0
  143. package/dist/server/usage-cleanup-scheduler.d.ts +107 -0
  144. package/dist/server/usage-cleanup-scheduler.js +232 -0
  145. package/dist/server/usage-cleanup-scheduler.js.map +1 -0
  146. package/dist/server/websocket.d.ts +131 -0
  147. package/dist/server/websocket.js +512 -0
  148. package/dist/server/websocket.js.map +1 -0
  149. package/dist/shared/data-files.d.ts +17 -0
  150. package/dist/shared/data-files.js +18 -0
  151. package/dist/shared/data-files.js.map +1 -0
  152. package/dist/shared/index.d.ts +9 -0
  153. package/dist/shared/index.js +9 -0
  154. package/dist/shared/index.js.map +1 -0
  155. package/dist/shared/view-id.d.ts +8 -0
  156. package/dist/shared/view-id.js +9 -0
  157. package/dist/shared/view-id.js.map +1 -0
  158. package/dist/viewer/Hench-F.png +0 -0
  159. package/dist/viewer/Rex-F.png +0 -0
  160. package/dist/viewer/SourceVision-F.png +0 -0
  161. package/dist/viewer/SourceVision.png +0 -0
  162. package/dist/viewer/api.d.ts +19 -0
  163. package/dist/viewer/api.js +17 -0
  164. package/dist/viewer/api.js.map +1 -0
  165. package/dist/viewer/bootstrap.d.ts +13 -0
  166. package/dist/viewer/bootstrap.js +40 -0
  167. package/dist/viewer/bootstrap.js.map +1 -0
  168. package/dist/viewer/components/active-tasks-panel.d.ts +36 -0
  169. package/dist/viewer/components/active-tasks-panel.js +183 -0
  170. package/dist/viewer/components/active-tasks-panel.js.map +1 -0
  171. package/dist/viewer/components/breadcrumb.d.ts +21 -0
  172. package/dist/viewer/components/breadcrumb.js +117 -0
  173. package/dist/viewer/components/breadcrumb.js.map +1 -0
  174. package/dist/viewer/components/concurrency-panel.d.ts +18 -0
  175. package/dist/viewer/components/concurrency-panel.js +175 -0
  176. package/dist/viewer/components/concurrency-panel.js.map +1 -0
  177. package/dist/viewer/components/config-footer.d.ts +11 -0
  178. package/dist/viewer/components/config-footer.js +132 -0
  179. package/dist/viewer/components/config-footer.js.map +1 -0
  180. package/dist/viewer/components/constants.d.ts +10 -0
  181. package/dist/viewer/components/constants.js +11 -0
  182. package/dist/viewer/components/constants.js.map +1 -0
  183. package/dist/viewer/components/copy-link-button.d.ts +30 -0
  184. package/dist/viewer/components/copy-link-button.js +74 -0
  185. package/dist/viewer/components/copy-link-button.js.map +1 -0
  186. package/dist/viewer/components/crash-recovery-banner.d.ts +28 -0
  187. package/dist/viewer/components/crash-recovery-banner.js +47 -0
  188. package/dist/viewer/components/crash-recovery-banner.js.map +1 -0
  189. package/dist/viewer/components/data-display/collapsible-section.d.ts +14 -0
  190. package/dist/viewer/components/data-display/collapsible-section.js +66 -0
  191. package/dist/viewer/components/data-display/collapsible-section.js.map +1 -0
  192. package/dist/viewer/components/data-display/findings-list.d.ts +13 -0
  193. package/dist/viewer/components/data-display/findings-list.js +136 -0
  194. package/dist/viewer/components/data-display/findings-list.js.map +1 -0
  195. package/dist/viewer/components/data-display/health-gauge.d.ts +37 -0
  196. package/dist/viewer/components/data-display/health-gauge.js +62 -0
  197. package/dist/viewer/components/data-display/health-gauge.js.map +1 -0
  198. package/dist/viewer/components/data-display/mini-charts.d.ts +36 -0
  199. package/dist/viewer/components/data-display/mini-charts.js +124 -0
  200. package/dist/viewer/components/data-display/mini-charts.js.map +1 -0
  201. package/dist/viewer/components/data-display/tree-view.d.ts +18 -0
  202. package/dist/viewer/components/data-display/tree-view.js +107 -0
  203. package/dist/viewer/components/data-display/tree-view.js.map +1 -0
  204. package/dist/viewer/components/data-display/zone-map.d.ts +28 -0
  205. package/dist/viewer/components/data-display/zone-map.js +197 -0
  206. package/dist/viewer/components/data-display/zone-map.js.map +1 -0
  207. package/dist/viewer/components/degradation-banner.d.ts +28 -0
  208. package/dist/viewer/components/degradation-banner.js +47 -0
  209. package/dist/viewer/components/degradation-banner.js.map +1 -0
  210. package/dist/viewer/components/detail-panel.d.ts +12 -0
  211. package/dist/viewer/components/detail-panel.js +166 -0
  212. package/dist/viewer/components/detail-panel.js.map +1 -0
  213. package/dist/viewer/components/elapsed-time.d.ts +38 -0
  214. package/dist/viewer/components/elapsed-time.js +35 -0
  215. package/dist/viewer/components/elapsed-time.js.map +1 -0
  216. package/dist/viewer/components/faq.d.ts +12 -0
  217. package/dist/viewer/components/faq.js +237 -0
  218. package/dist/viewer/components/faq.js.map +1 -0
  219. package/dist/viewer/components/favicon.d.ts +30 -0
  220. package/dist/viewer/components/favicon.js +90 -0
  221. package/dist/viewer/components/favicon.js.map +1 -0
  222. package/dist/viewer/components/guide.d.ts +5 -0
  223. package/dist/viewer/components/guide.js +116 -0
  224. package/dist/viewer/components/guide.js.map +1 -0
  225. package/dist/viewer/components/index.d.ts +37 -0
  226. package/dist/viewer/components/index.js +46 -0
  227. package/dist/viewer/components/index.js.map +1 -0
  228. package/dist/viewer/components/logos.d.ts +42 -0
  229. package/dist/viewer/components/logos.js +46 -0
  230. package/dist/viewer/components/logos.js.map +1 -0
  231. package/dist/viewer/components/memory-panel.d.ts +19 -0
  232. package/dist/viewer/components/memory-panel.js +181 -0
  233. package/dist/viewer/components/memory-panel.js.map +1 -0
  234. package/dist/viewer/components/memory-warning.d.ts +23 -0
  235. package/dist/viewer/components/memory-warning.js +42 -0
  236. package/dist/viewer/components/memory-warning.js.map +1 -0
  237. package/dist/viewer/components/notion-schema-wizard.d.ts +16 -0
  238. package/dist/viewer/components/notion-schema-wizard.js +263 -0
  239. package/dist/viewer/components/notion-schema-wizard.js.map +1 -0
  240. package/dist/viewer/components/polling-suspension-indicator.d.ts +24 -0
  241. package/dist/viewer/components/polling-suspension-indicator.js +31 -0
  242. package/dist/viewer/components/polling-suspension-indicator.js.map +1 -0
  243. package/dist/viewer/components/prd-tree/add-item-form.d.ts +31 -0
  244. package/dist/viewer/components/prd-tree/add-item-form.js +231 -0
  245. package/dist/viewer/components/prd-tree/add-item-form.js.map +1 -0
  246. package/dist/viewer/components/prd-tree/analyze-panel.d.ts +13 -0
  247. package/dist/viewer/components/prd-tree/analyze-panel.js +245 -0
  248. package/dist/viewer/components/prd-tree/analyze-panel.js.map +1 -0
  249. package/dist/viewer/components/prd-tree/batch-import-panel.d.ts +34 -0
  250. package/dist/viewer/components/prd-tree/batch-import-panel.js +415 -0
  251. package/dist/viewer/components/prd-tree/batch-import-panel.js.map +1 -0
  252. package/dist/viewer/components/prd-tree/bulk-actions.d.ts +19 -0
  253. package/dist/viewer/components/prd-tree/bulk-actions.js +90 -0
  254. package/dist/viewer/components/prd-tree/bulk-actions.js.map +1 -0
  255. package/dist/viewer/components/prd-tree/compute.d.ts +32 -0
  256. package/dist/viewer/components/prd-tree/compute.js +129 -0
  257. package/dist/viewer/components/prd-tree/compute.js.map +1 -0
  258. package/dist/viewer/components/prd-tree/delete-confirmation.d.ts +23 -0
  259. package/dist/viewer/components/prd-tree/delete-confirmation.js +83 -0
  260. package/dist/viewer/components/prd-tree/delete-confirmation.js.map +1 -0
  261. package/dist/viewer/components/prd-tree/execution-panel.d.ts +14 -0
  262. package/dist/viewer/components/prd-tree/execution-panel.js +291 -0
  263. package/dist/viewer/components/prd-tree/execution-panel.js.map +1 -0
  264. package/dist/viewer/components/prd-tree/facet-filter.d.ts +40 -0
  265. package/dist/viewer/components/prd-tree/facet-filter.js +188 -0
  266. package/dist/viewer/components/prd-tree/facet-filter.js.map +1 -0
  267. package/dist/viewer/components/prd-tree/index.d.ts +24 -0
  268. package/dist/viewer/components/prd-tree/index.js +16 -0
  269. package/dist/viewer/components/prd-tree/index.js.map +1 -0
  270. package/dist/viewer/components/prd-tree/inline-add-form.d.ts +32 -0
  271. package/dist/viewer/components/prd-tree/inline-add-form.js +175 -0
  272. package/dist/viewer/components/prd-tree/inline-add-form.js.map +1 -0
  273. package/dist/viewer/components/prd-tree/inline-status-picker.d.ts +31 -0
  274. package/dist/viewer/components/prd-tree/inline-status-picker.js +110 -0
  275. package/dist/viewer/components/prd-tree/inline-status-picker.js.map +1 -0
  276. package/dist/viewer/components/prd-tree/lazy-children.d.ts +40 -0
  277. package/dist/viewer/components/prd-tree/lazy-children.js +73 -0
  278. package/dist/viewer/components/prd-tree/lazy-children.js.map +1 -0
  279. package/dist/viewer/components/prd-tree/levels.d.ts +31 -0
  280. package/dist/viewer/components/prd-tree/levels.js +72 -0
  281. package/dist/viewer/components/prd-tree/levels.js.map +1 -0
  282. package/dist/viewer/components/prd-tree/listener-lifecycle.d.ts +105 -0
  283. package/dist/viewer/components/prd-tree/listener-lifecycle.js +173 -0
  284. package/dist/viewer/components/prd-tree/listener-lifecycle.js.map +1 -0
  285. package/dist/viewer/components/prd-tree/merge-preview.d.ts +25 -0
  286. package/dist/viewer/components/prd-tree/merge-preview.js +181 -0
  287. package/dist/viewer/components/prd-tree/merge-preview.js.map +1 -0
  288. package/dist/viewer/components/prd-tree/prd-tree.d.ts +91 -0
  289. package/dist/viewer/components/prd-tree/prd-tree.js +565 -0
  290. package/dist/viewer/components/prd-tree/prd-tree.js.map +1 -0
  291. package/dist/viewer/components/prd-tree/proposal-editor.d.ts +44 -0
  292. package/dist/viewer/components/prd-tree/proposal-editor.js +438 -0
  293. package/dist/viewer/components/prd-tree/proposal-editor.js.map +1 -0
  294. package/dist/viewer/components/prd-tree/prune-confirmation.d.ts +25 -0
  295. package/dist/viewer/components/prd-tree/prune-confirmation.js +336 -0
  296. package/dist/viewer/components/prd-tree/prune-confirmation.js.map +1 -0
  297. package/dist/viewer/components/prd-tree/prune-diff-tree.d.ts +39 -0
  298. package/dist/viewer/components/prd-tree/prune-diff-tree.js +319 -0
  299. package/dist/viewer/components/prd-tree/prune-diff-tree.js.map +1 -0
  300. package/dist/viewer/components/prd-tree/reorganize-panel.d.ts +16 -0
  301. package/dist/viewer/components/prd-tree/reorganize-panel.js +213 -0
  302. package/dist/viewer/components/prd-tree/reorganize-panel.js.map +1 -0
  303. package/dist/viewer/components/prd-tree/smart-add-input.d.ts +19 -0
  304. package/dist/viewer/components/prd-tree/smart-add-input.js +383 -0
  305. package/dist/viewer/components/prd-tree/smart-add-input.js.map +1 -0
  306. package/dist/viewer/components/prd-tree/status-filter.d.ts +40 -0
  307. package/dist/viewer/components/prd-tree/status-filter.js +131 -0
  308. package/dist/viewer/components/prd-tree/status-filter.js.map +1 -0
  309. package/dist/viewer/components/prd-tree/task-detail.d.ts +41 -0
  310. package/dist/viewer/components/prd-tree/task-detail.js +1205 -0
  311. package/dist/viewer/components/prd-tree/task-detail.js.map +1 -0
  312. package/dist/viewer/components/prd-tree/task-utilization.d.ts +7 -0
  313. package/dist/viewer/components/prd-tree/task-utilization.js +25 -0
  314. package/dist/viewer/components/prd-tree/task-utilization.js.map +1 -0
  315. package/dist/viewer/components/prd-tree/tree-differ.d.ts +59 -0
  316. package/dist/viewer/components/prd-tree/tree-differ.js +200 -0
  317. package/dist/viewer/components/prd-tree/tree-differ.js.map +1 -0
  318. package/dist/viewer/components/prd-tree/tree-event-delegate.d.ts +70 -0
  319. package/dist/viewer/components/prd-tree/tree-event-delegate.js +176 -0
  320. package/dist/viewer/components/prd-tree/tree-event-delegate.js.map +1 -0
  321. package/dist/viewer/components/prd-tree/tree-search.d.ts +65 -0
  322. package/dist/viewer/components/prd-tree/tree-search.js +178 -0
  323. package/dist/viewer/components/prd-tree/tree-search.js.map +1 -0
  324. package/dist/viewer/components/prd-tree/tree-utils.d.ts +38 -0
  325. package/dist/viewer/components/prd-tree/tree-utils.js +107 -0
  326. package/dist/viewer/components/prd-tree/tree-utils.js.map +1 -0
  327. package/dist/viewer/components/prd-tree/types.d.ts +93 -0
  328. package/dist/viewer/components/prd-tree/types.js +16 -0
  329. package/dist/viewer/components/prd-tree/types.js.map +1 -0
  330. package/dist/viewer/components/prd-tree/virtual-scroll.d.ts +119 -0
  331. package/dist/viewer/components/prd-tree/virtual-scroll.js +169 -0
  332. package/dist/viewer/components/prd-tree/virtual-scroll.js.map +1 -0
  333. package/dist/viewer/components/progressive-loader.d.ts +114 -0
  334. package/dist/viewer/components/progressive-loader.js +225 -0
  335. package/dist/viewer/components/progressive-loader.js.map +1 -0
  336. package/dist/viewer/components/refresh-queue-status.d.ts +20 -0
  337. package/dist/viewer/components/refresh-queue-status.js +65 -0
  338. package/dist/viewer/components/refresh-queue-status.js.map +1 -0
  339. package/dist/viewer/components/rex-task-link.d.ts +50 -0
  340. package/dist/viewer/components/rex-task-link.js +218 -0
  341. package/dist/viewer/components/rex-task-link.js.map +1 -0
  342. package/dist/viewer/components/search-filter.d.ts +20 -0
  343. package/dist/viewer/components/search-filter.js +28 -0
  344. package/dist/viewer/components/search-filter.js.map +1 -0
  345. package/dist/viewer/components/search-overlay.d.ts +31 -0
  346. package/dist/viewer/components/search-overlay.js +472 -0
  347. package/dist/viewer/components/search-overlay.js.map +1 -0
  348. package/dist/viewer/components/sidebar.d.ts +18 -0
  349. package/dist/viewer/components/sidebar.js +357 -0
  350. package/dist/viewer/components/sidebar.js.map +1 -0
  351. package/dist/viewer/components/status-indicators.d.ts +63 -0
  352. package/dist/viewer/components/status-indicators.js +136 -0
  353. package/dist/viewer/components/status-indicators.js.map +1 -0
  354. package/dist/viewer/components/theme-toggle.d.ts +8 -0
  355. package/dist/viewer/components/theme-toggle.js +28 -0
  356. package/dist/viewer/components/theme-toggle.js.map +1 -0
  357. package/dist/viewer/components/throttle-controls.d.ts +18 -0
  358. package/dist/viewer/components/throttle-controls.js +304 -0
  359. package/dist/viewer/components/throttle-controls.js.map +1 -0
  360. package/dist/viewer/components/ws-health-panel.d.ts +18 -0
  361. package/dist/viewer/components/ws-health-panel.js +250 -0
  362. package/dist/viewer/components/ws-health-panel.js.map +1 -0
  363. package/dist/viewer/components/zone-slideout.d.ts +17 -0
  364. package/dist/viewer/components/zone-slideout.js +162 -0
  365. package/dist/viewer/components/zone-slideout.js.map +1 -0
  366. package/dist/viewer/crash/crash-detector.d.ts +69 -0
  367. package/dist/viewer/crash/crash-detector.js +239 -0
  368. package/dist/viewer/crash/crash-detector.js.map +1 -0
  369. package/dist/viewer/crash/index.d.ts +7 -0
  370. package/dist/viewer/crash/index.js +8 -0
  371. package/dist/viewer/crash/index.js.map +1 -0
  372. package/dist/viewer/deployed-mode.d.ts +37 -0
  373. package/dist/viewer/deployed-mode.js +94 -0
  374. package/dist/viewer/deployed-mode.js.map +1 -0
  375. package/dist/viewer/external.d.ts +17 -0
  376. package/dist/viewer/external.js +17 -0
  377. package/dist/viewer/external.js.map +1 -0
  378. package/dist/viewer/graph/index.d.ts +9 -0
  379. package/dist/viewer/graph/index.js +12 -0
  380. package/dist/viewer/graph/index.js.map +1 -0
  381. package/dist/viewer/graph/physics.d.ts +96 -0
  382. package/dist/viewer/graph/physics.js +366 -0
  383. package/dist/viewer/graph/physics.js.map +1 -0
  384. package/dist/viewer/graph/renderer.d.ts +184 -0
  385. package/dist/viewer/graph/renderer.js +1438 -0
  386. package/dist/viewer/graph/renderer.js.map +1 -0
  387. package/dist/viewer/hooks/index.d.ts +27 -0
  388. package/dist/viewer/hooks/index.js +28 -0
  389. package/dist/viewer/hooks/index.js.map +1 -0
  390. package/dist/viewer/hooks/use-app-data.d.ts +31 -0
  391. package/dist/viewer/hooks/use-app-data.js +152 -0
  392. package/dist/viewer/hooks/use-app-data.js.map +1 -0
  393. package/dist/viewer/hooks/use-crash-recovery.d.ts +50 -0
  394. package/dist/viewer/hooks/use-crash-recovery.js +76 -0
  395. package/dist/viewer/hooks/use-crash-recovery.js.map +1 -0
  396. package/dist/viewer/hooks/use-delete-actions.d.ts +48 -0
  397. package/dist/viewer/hooks/use-delete-actions.js +103 -0
  398. package/dist/viewer/hooks/use-delete-actions.js.map +1 -0
  399. package/dist/viewer/hooks/use-dom-performance-monitor.d.ts +68 -0
  400. package/dist/viewer/hooks/use-dom-performance-monitor.js +71 -0
  401. package/dist/viewer/hooks/use-dom-performance-monitor.js.map +1 -0
  402. package/dist/viewer/hooks/use-facet-state.d.ts +32 -0
  403. package/dist/viewer/hooks/use-facet-state.js +119 -0
  404. package/dist/viewer/hooks/use-facet-state.js.map +1 -0
  405. package/dist/viewer/hooks/use-feature-toggle.d.ts +18 -0
  406. package/dist/viewer/hooks/use-feature-toggle.js +57 -0
  407. package/dist/viewer/hooks/use-feature-toggle.js.map +1 -0
  408. package/dist/viewer/hooks/use-file-edges.d.ts +23 -0
  409. package/dist/viewer/hooks/use-file-edges.js +221 -0
  410. package/dist/viewer/hooks/use-file-edges.js.map +1 -0
  411. package/dist/viewer/hooks/use-graceful-degradation.d.ts +30 -0
  412. package/dist/viewer/hooks/use-graceful-degradation.js +45 -0
  413. package/dist/viewer/hooks/use-graceful-degradation.js.map +1 -0
  414. package/dist/viewer/hooks/use-item-selection.d.ts +49 -0
  415. package/dist/viewer/hooks/use-item-selection.js +117 -0
  416. package/dist/viewer/hooks/use-item-selection.js.map +1 -0
  417. package/dist/viewer/hooks/use-memory-monitor.d.ts +39 -0
  418. package/dist/viewer/hooks/use-memory-monitor.js +73 -0
  419. package/dist/viewer/hooks/use-memory-monitor.js.map +1 -0
  420. package/dist/viewer/hooks/use-pan-zoom.d.ts +33 -0
  421. package/dist/viewer/hooks/use-pan-zoom.js +110 -0
  422. package/dist/viewer/hooks/use-pan-zoom.js.map +1 -0
  423. package/dist/viewer/hooks/use-persistent-filter.d.ts +24 -0
  424. package/dist/viewer/hooks/use-persistent-filter.js +37 -0
  425. package/dist/viewer/hooks/use-persistent-filter.js.map +1 -0
  426. package/dist/viewer/hooks/use-polling-suspension.d.ts +32 -0
  427. package/dist/viewer/hooks/use-polling-suspension.js +41 -0
  428. package/dist/viewer/hooks/use-polling-suspension.js.map +1 -0
  429. package/dist/viewer/hooks/use-polling.d.ts +39 -0
  430. package/dist/viewer/hooks/use-polling.js +55 -0
  431. package/dist/viewer/hooks/use-polling.js.map +1 -0
  432. package/dist/viewer/hooks/use-prd-actions.d.ts +126 -0
  433. package/dist/viewer/hooks/use-prd-actions.js +250 -0
  434. package/dist/viewer/hooks/use-prd-actions.js.map +1 -0
  435. package/dist/viewer/hooks/use-prd-data.d.ts +45 -0
  436. package/dist/viewer/hooks/use-prd-data.js +159 -0
  437. package/dist/viewer/hooks/use-prd-data.js.map +1 -0
  438. package/dist/viewer/hooks/use-prd-deep-link.d.ts +45 -0
  439. package/dist/viewer/hooks/use-prd-deep-link.js +60 -0
  440. package/dist/viewer/hooks/use-prd-deep-link.js.map +1 -0
  441. package/dist/viewer/hooks/use-prd-websocket.d.ts +47 -0
  442. package/dist/viewer/hooks/use-prd-websocket.js +139 -0
  443. package/dist/viewer/hooks/use-prd-websocket.js.map +1 -0
  444. package/dist/viewer/hooks/use-project-metadata.d.ts +25 -0
  445. package/dist/viewer/hooks/use-project-metadata.js +55 -0
  446. package/dist/viewer/hooks/use-project-metadata.js.map +1 -0
  447. package/dist/viewer/hooks/use-project-status.d.ts +60 -0
  448. package/dist/viewer/hooks/use-project-status.js +133 -0
  449. package/dist/viewer/hooks/use-project-status.js.map +1 -0
  450. package/dist/viewer/hooks/use-refresh-throttle.d.ts +45 -0
  451. package/dist/viewer/hooks/use-refresh-throttle.js +52 -0
  452. package/dist/viewer/hooks/use-refresh-throttle.js.map +1 -0
  453. package/dist/viewer/hooks/use-route-state.d.ts +18 -0
  454. package/dist/viewer/hooks/use-route-state.js +115 -0
  455. package/dist/viewer/hooks/use-route-state.js.map +1 -0
  456. package/dist/viewer/hooks/use-subzone-edges.d.ts +21 -0
  457. package/dist/viewer/hooks/use-subzone-edges.js +147 -0
  458. package/dist/viewer/hooks/use-subzone-edges.js.map +1 -0
  459. package/dist/viewer/hooks/use-tab-visibility.d.ts +31 -0
  460. package/dist/viewer/hooks/use-tab-visibility.js +43 -0
  461. package/dist/viewer/hooks/use-tab-visibility.js.map +1 -0
  462. package/dist/viewer/hooks/use-tick.d.ts +43 -0
  463. package/dist/viewer/hooks/use-tick.js +76 -0
  464. package/dist/viewer/hooks/use-tick.js.map +1 -0
  465. package/dist/viewer/hooks/use-toast.d.ts +24 -0
  466. package/dist/viewer/hooks/use-toast.js +26 -0
  467. package/dist/viewer/hooks/use-toast.js.map +1 -0
  468. package/dist/viewer/hooks/use-zone-drag.d.ts +30 -0
  469. package/dist/viewer/hooks/use-zone-drag.js +60 -0
  470. package/dist/viewer/hooks/use-zone-drag.js.map +1 -0
  471. package/dist/viewer/index.html +36 -0
  472. package/dist/viewer/loader.d.ts +33 -0
  473. package/dist/viewer/loader.js +195 -0
  474. package/dist/viewer/loader.js.map +1 -0
  475. package/dist/viewer/main.d.ts +1 -0
  476. package/dist/viewer/main.js +121 -0
  477. package/dist/viewer/main.js.map +1 -0
  478. package/dist/viewer/messaging/call-rate-limiter.d.ts +50 -0
  479. package/dist/viewer/messaging/call-rate-limiter.js +103 -0
  480. package/dist/viewer/messaging/call-rate-limiter.js.map +1 -0
  481. package/dist/viewer/messaging/fetch-pipeline.d.ts +58 -0
  482. package/dist/viewer/messaging/fetch-pipeline.js +58 -0
  483. package/dist/viewer/messaging/fetch-pipeline.js.map +1 -0
  484. package/dist/viewer/messaging/index.d.ts +43 -0
  485. package/dist/viewer/messaging/index.js +46 -0
  486. package/dist/viewer/messaging/index.js.map +1 -0
  487. package/dist/viewer/messaging/message-coalescer.d.ts +96 -0
  488. package/dist/viewer/messaging/message-coalescer.js +121 -0
  489. package/dist/viewer/messaging/message-coalescer.js.map +1 -0
  490. package/dist/viewer/messaging/message-throttle.d.ts +95 -0
  491. package/dist/viewer/messaging/message-throttle.js +147 -0
  492. package/dist/viewer/messaging/message-throttle.js.map +1 -0
  493. package/dist/viewer/messaging/request-dedup.d.ts +43 -0
  494. package/dist/viewer/messaging/request-dedup.js +55 -0
  495. package/dist/viewer/messaging/request-dedup.js.map +1 -0
  496. package/dist/viewer/messaging/ws-pipeline.d.ts +85 -0
  497. package/dist/viewer/messaging/ws-pipeline.js +68 -0
  498. package/dist/viewer/messaging/ws-pipeline.js.map +1 -0
  499. package/dist/viewer/n-dx.png +0 -0
  500. package/dist/viewer/performance/dom-performance-monitor.d.ts +157 -0
  501. package/dist/viewer/performance/dom-performance-monitor.js +341 -0
  502. package/dist/viewer/performance/dom-performance-monitor.js.map +1 -0
  503. package/dist/viewer/performance/dom-update-gate.d.ts +122 -0
  504. package/dist/viewer/performance/dom-update-gate.js +229 -0
  505. package/dist/viewer/performance/dom-update-gate.js.map +1 -0
  506. package/dist/viewer/performance/graceful-degradation.d.ts +73 -0
  507. package/dist/viewer/performance/graceful-degradation.js +152 -0
  508. package/dist/viewer/performance/graceful-degradation.js.map +1 -0
  509. package/dist/viewer/performance/index.d.ts +14 -0
  510. package/dist/viewer/performance/index.js +20 -0
  511. package/dist/viewer/performance/index.js.map +1 -0
  512. package/dist/viewer/performance/memory-monitor.d.ts +78 -0
  513. package/dist/viewer/performance/memory-monitor.js +218 -0
  514. package/dist/viewer/performance/memory-monitor.js.map +1 -0
  515. package/dist/viewer/performance/refresh-throttle.d.ts +90 -0
  516. package/dist/viewer/performance/refresh-throttle.js +266 -0
  517. package/dist/viewer/performance/refresh-throttle.js.map +1 -0
  518. package/dist/viewer/performance/response-buffer-gate.d.ts +108 -0
  519. package/dist/viewer/performance/response-buffer-gate.js +170 -0
  520. package/dist/viewer/performance/response-buffer-gate.js.map +1 -0
  521. package/dist/viewer/performance/update-batcher.d.ts +79 -0
  522. package/dist/viewer/performance/update-batcher.js +119 -0
  523. package/dist/viewer/performance/update-batcher.js.map +1 -0
  524. package/dist/viewer/polling/batched-tick-dispatcher.d.ts +83 -0
  525. package/dist/viewer/polling/batched-tick-dispatcher.js +183 -0
  526. package/dist/viewer/polling/batched-tick-dispatcher.js.map +1 -0
  527. package/dist/viewer/polling/index.d.ts +13 -0
  528. package/dist/viewer/polling/index.js +16 -0
  529. package/dist/viewer/polling/index.js.map +1 -0
  530. package/dist/viewer/polling/polling-manager.d.ts +82 -0
  531. package/dist/viewer/polling/polling-manager.js +254 -0
  532. package/dist/viewer/polling/polling-manager.js.map +1 -0
  533. package/dist/viewer/polling/polling-restart.d.ts +45 -0
  534. package/dist/viewer/polling/polling-restart.js +98 -0
  535. package/dist/viewer/polling/polling-restart.js.map +1 -0
  536. package/dist/viewer/polling/polling-state.d.ts +182 -0
  537. package/dist/viewer/polling/polling-state.js +306 -0
  538. package/dist/viewer/polling/polling-state.js.map +1 -0
  539. package/dist/viewer/polling/tab-visibility.d.ts +112 -0
  540. package/dist/viewer/polling/tab-visibility.js +276 -0
  541. package/dist/viewer/polling/tab-visibility.js.map +1 -0
  542. package/dist/viewer/polling/tick-timer.d.ts +70 -0
  543. package/dist/viewer/polling/tick-timer.js +168 -0
  544. package/dist/viewer/polling/tick-timer.js.map +1 -0
  545. package/dist/viewer/polling/tick-visibility-gate.d.ts +92 -0
  546. package/dist/viewer/polling/tick-visibility-gate.js +146 -0
  547. package/dist/viewer/polling/tick-visibility-gate.js.map +1 -0
  548. package/dist/viewer/route-state.d.ts +8 -0
  549. package/dist/viewer/route-state.js +77 -0
  550. package/dist/viewer/route-state.js.map +1 -0
  551. package/dist/viewer/schema-compat.d.ts +17 -0
  552. package/dist/viewer/schema-compat.js +49 -0
  553. package/dist/viewer/schema-compat.js.map +1 -0
  554. package/dist/viewer/types.d.ts +66 -0
  555. package/dist/viewer/types.js +2 -0
  556. package/dist/viewer/types.js.map +1 -0
  557. package/dist/viewer/usage/constants.d.ts +14 -0
  558. package/dist/viewer/usage/constants.js +14 -0
  559. package/dist/viewer/usage/constants.js.map +1 -0
  560. package/dist/viewer/usage/index.d.ts +7 -0
  561. package/dist/viewer/usage/index.js +8 -0
  562. package/dist/viewer/usage/index.js.map +1 -0
  563. package/dist/viewer/utils.d.ts +25 -0
  564. package/dist/viewer/utils.js +48 -0
  565. package/dist/viewer/utils.js.map +1 -0
  566. package/dist/viewer/validate.d.ts +23 -0
  567. package/dist/viewer/validate.js +275 -0
  568. package/dist/viewer/validate.js.map +1 -0
  569. package/dist/viewer/views/analysis.d.ts +10 -0
  570. package/dist/viewer/views/analysis.js +109 -0
  571. package/dist/viewer/views/analysis.js.map +1 -0
  572. package/dist/viewer/views/architecture.d.ts +10 -0
  573. package/dist/viewer/views/architecture.js +44 -0
  574. package/dist/viewer/views/architecture.js.map +1 -0
  575. package/dist/viewer/views/domain-hench.d.ts +13 -0
  576. package/dist/viewer/views/domain-hench.js +14 -0
  577. package/dist/viewer/views/domain-hench.js.map +1 -0
  578. package/dist/viewer/views/domain-rex.d.ts +17 -0
  579. package/dist/viewer/views/domain-rex.js +18 -0
  580. package/dist/viewer/views/domain-rex.js.map +1 -0
  581. package/dist/viewer/views/domain-settings.d.ts +12 -0
  582. package/dist/viewer/views/domain-settings.js +13 -0
  583. package/dist/viewer/views/domain-settings.js.map +1 -0
  584. package/dist/viewer/views/domain-sourcevision.d.ts +20 -0
  585. package/dist/viewer/views/domain-sourcevision.js +21 -0
  586. package/dist/viewer/views/domain-sourcevision.js.map +1 -0
  587. package/dist/viewer/views/enrichment-thresholds.d.ts +11 -0
  588. package/dist/viewer/views/enrichment-thresholds.js +12 -0
  589. package/dist/viewer/views/enrichment-thresholds.js.map +1 -0
  590. package/dist/viewer/views/feature-toggles.d.ts +13 -0
  591. package/dist/viewer/views/feature-toggles.js +185 -0
  592. package/dist/viewer/views/feature-toggles.js.map +1 -0
  593. package/dist/viewer/views/files.d.ts +13 -0
  594. package/dist/viewer/views/files.js +174 -0
  595. package/dist/viewer/views/files.js.map +1 -0
  596. package/dist/viewer/views/graph.d.ts +12 -0
  597. package/dist/viewer/views/graph.js +316 -0
  598. package/dist/viewer/views/graph.js.map +1 -0
  599. package/dist/viewer/views/hench-config.d.ts +39 -0
  600. package/dist/viewer/views/hench-config.js +473 -0
  601. package/dist/viewer/views/hench-config.js.map +1 -0
  602. package/dist/viewer/views/hench-runs.d.ts +19 -0
  603. package/dist/viewer/views/hench-runs.js +460 -0
  604. package/dist/viewer/views/hench-runs.js.map +1 -0
  605. package/dist/viewer/views/hench-templates.d.ts +17 -0
  606. package/dist/viewer/views/hench-templates.js +262 -0
  607. package/dist/viewer/views/hench-templates.js.map +1 -0
  608. package/dist/viewer/views/integration-config.d.ts +73 -0
  609. package/dist/viewer/views/integration-config.js +524 -0
  610. package/dist/viewer/views/integration-config.js.map +1 -0
  611. package/dist/viewer/views/notion-config.d.ts +16 -0
  612. package/dist/viewer/views/notion-config.js +357 -0
  613. package/dist/viewer/views/notion-config.js.map +1 -0
  614. package/dist/viewer/views/overview.d.ts +10 -0
  615. package/dist/viewer/views/overview.js +187 -0
  616. package/dist/viewer/views/overview.js.map +1 -0
  617. package/dist/viewer/views/pr-markdown.d.ts +3 -0
  618. package/dist/viewer/views/pr-markdown.js +350 -0
  619. package/dist/viewer/views/pr-markdown.js.map +1 -0
  620. package/dist/viewer/views/prd.d.ts +34 -0
  621. package/dist/viewer/views/prd.js +257 -0
  622. package/dist/viewer/views/prd.js.map +1 -0
  623. package/dist/viewer/views/problems.d.ts +8 -0
  624. package/dist/viewer/views/problems.js +50 -0
  625. package/dist/viewer/views/problems.js.map +1 -0
  626. package/dist/viewer/views/rex-dashboard.d.ts +14 -0
  627. package/dist/viewer/views/rex-dashboard.js +334 -0
  628. package/dist/viewer/views/rex-dashboard.js.map +1 -0
  629. package/dist/viewer/views/routes.d.ts +8 -0
  630. package/dist/viewer/views/routes.js +216 -0
  631. package/dist/viewer/views/routes.js.map +1 -0
  632. package/dist/viewer/views/sourcevision-tabs.d.ts +18 -0
  633. package/dist/viewer/views/sourcevision-tabs.js +14 -0
  634. package/dist/viewer/views/sourcevision-tabs.js.map +1 -0
  635. package/dist/viewer/views/suggestions.d.ts +8 -0
  636. package/dist/viewer/views/suggestions.js +36 -0
  637. package/dist/viewer/views/suggestions.js.map +1 -0
  638. package/dist/viewer/views/task-audit.d.ts +18 -0
  639. package/dist/viewer/views/task-audit.js +413 -0
  640. package/dist/viewer/views/task-audit.js.map +1 -0
  641. package/dist/viewer/views/token-usage.d.ts +10 -0
  642. package/dist/viewer/views/token-usage.js +410 -0
  643. package/dist/viewer/views/token-usage.js.map +1 -0
  644. package/dist/viewer/views/validation.d.ts +11 -0
  645. package/dist/viewer/views/validation.js +475 -0
  646. package/dist/viewer/views/validation.js.map +1 -0
  647. package/dist/viewer/views/view-registry.d.ts +27 -0
  648. package/dist/viewer/views/view-registry.js +70 -0
  649. package/dist/viewer/views/view-registry.js.map +1 -0
  650. package/dist/viewer/views/workflow-optimization.d.ts +12 -0
  651. package/dist/viewer/views/workflow-optimization.js +311 -0
  652. package/dist/viewer/views/workflow-optimization.js.map +1 -0
  653. package/dist/viewer/views/zone-types.d.ts +69 -0
  654. package/dist/viewer/views/zone-types.js +5 -0
  655. package/dist/viewer/views/zone-types.js.map +1 -0
  656. package/dist/viewer/views/zones.d.ts +50 -0
  657. package/dist/viewer/views/zones.js +1438 -0
  658. package/dist/viewer/views/zones.js.map +1 -0
  659. package/dist/viewer/visualization/colors.d.ts +16 -0
  660. package/dist/viewer/visualization/colors.js +31 -0
  661. package/dist/viewer/visualization/colors.js.map +1 -0
  662. package/dist/viewer/visualization/flow.d.ts +54 -0
  663. package/dist/viewer/visualization/flow.js +123 -0
  664. package/dist/viewer/visualization/flow.js.map +1 -0
  665. package/dist/viewer/visualization/index.d.ts +34 -0
  666. package/dist/viewer/visualization/index.js +40 -0
  667. package/dist/viewer/visualization/index.js.map +1 -0
  668. package/dist/viewer/visualization/metrics.d.ts +8 -0
  669. package/dist/viewer/visualization/metrics.js +16 -0
  670. package/dist/viewer/visualization/metrics.js.map +1 -0
  671. package/package.json +54 -0
@@ -0,0 +1,460 @@
1
+ /**
2
+ * Hench Runs view — execution history showing past agent runs.
3
+ *
4
+ * Displays a list of runs with task name, status, duration, turns,
5
+ * and token usage. Clicking a run shows the full summary/detail.
6
+ * Each run links back to its Rex task.
7
+ *
8
+ * Data comes from GET /api/hench/runs (list) and
9
+ * GET /api/hench/runs/:id (detail).
10
+ */
11
+ import { h } from "preact";
12
+ import { useState, useEffect, useCallback, useMemo, useRef } from "preact/hooks";
13
+ import { MetricCard } from "../visualization/index.js";
14
+ import { BrandedHeader, RexTaskLink, CopyLinkButton, ActiveTasksPanel, ConcurrencyPanel, MemoryPanel, WsHealthPanel, ThrottleControlsPanel, } from "../components/index.js";
15
+ import { usePolling } from "../hooks/index.js";
16
+ // ── Helpers ──────────────────────────────────────────────────────────
17
+ function fmtTokens(n) {
18
+ if (n >= 1_000_000)
19
+ return `${(n / 1_000_000).toFixed(1)}M`;
20
+ if (n >= 1_000)
21
+ return `${(n / 1_000).toFixed(1)}k`;
22
+ return String(n);
23
+ }
24
+ function fmtDuration(start, end) {
25
+ if (!end)
26
+ return "running…";
27
+ const ms = new Date(end).getTime() - new Date(start).getTime();
28
+ if (ms < 0)
29
+ return "—";
30
+ const secs = Math.floor(ms / 1000);
31
+ if (secs < 60)
32
+ return `${secs}s`;
33
+ const mins = Math.floor(secs / 60);
34
+ const remainSecs = secs % 60;
35
+ if (mins < 60)
36
+ return `${mins}m ${remainSecs}s`;
37
+ const hours = Math.floor(mins / 60);
38
+ const remainMins = mins % 60;
39
+ return `${hours}h ${remainMins}m`;
40
+ }
41
+ function fmtTimestamp(iso) {
42
+ const d = new Date(iso);
43
+ const now = new Date();
44
+ const diffMs = now.getTime() - d.getTime();
45
+ const diffHours = diffMs / (1000 * 60 * 60);
46
+ // If within last 24 hours, show relative time
47
+ if (diffHours < 1) {
48
+ const mins = Math.floor(diffMs / (1000 * 60));
49
+ return mins <= 0 ? "just now" : `${mins}m ago`;
50
+ }
51
+ if (diffHours < 24) {
52
+ return `${Math.floor(diffHours)}h ago`;
53
+ }
54
+ // If within last 7 days, show day + time
55
+ if (diffHours < 168) {
56
+ return d.toLocaleDateString(undefined, { weekday: "short", hour: "numeric", minute: "2-digit" });
57
+ }
58
+ // Otherwise full date
59
+ return d.toLocaleDateString(undefined, { month: "short", day: "numeric", hour: "numeric", minute: "2-digit" });
60
+ }
61
+ const STATUS_CONFIG = {
62
+ completed: { icon: "●", label: "Completed", color: "var(--green)" },
63
+ failed: { icon: "✕", label: "Failed", color: "var(--red)" },
64
+ running: { icon: "◐", label: "Running", color: "var(--accent)" },
65
+ in_progress: { icon: "◐", label: "Running", color: "var(--accent)" },
66
+ error: { icon: "✕", label: "Error", color: "var(--red)" },
67
+ };
68
+ function getStatusConfig(status) {
69
+ return STATUS_CONFIG[status] ?? { icon: "○", label: status, color: "var(--text-dim)" };
70
+ }
71
+ const STALE_THRESHOLD_MS = 5 * 60 * 1000;
72
+ function isStaleRun(run) {
73
+ if (run.status !== "running")
74
+ return false;
75
+ if (!run.lastActivityAt)
76
+ return true; // Legacy run without timestamp
77
+ return Date.now() - new Date(run.lastActivityAt).getTime() > STALE_THRESHOLD_MS;
78
+ }
79
+ // ── Sub-components ───────────────────────────────────────────────────
80
+ /** Aggregate metrics shown above the runs list. */
81
+ function RunMetrics({ runs }) {
82
+ const totalRuns = runs.length;
83
+ const completed = runs.filter((r) => r.status === "completed").length;
84
+ const failed = runs.filter((r) => r.status === "failed" || r.status === "error").length;
85
+ const totalTokens = runs.reduce((sum, r) => {
86
+ const t = r.tokenUsage;
87
+ return sum + (t.input ?? 0) + (t.output ?? 0) + (t.cacheCreationInput ?? 0) + (t.cacheReadInput ?? 0);
88
+ }, 0);
89
+ const totalTurns = runs.reduce((sum, r) => sum + (r.turns ?? 0), 0);
90
+ return h("div", { class: "overview-metrics hench-metrics" }, h(MetricCard, { value: totalRuns, label: "Total Runs" }), h(MetricCard, {
91
+ value: completed,
92
+ label: "Succeeded",
93
+ color: "var(--green)",
94
+ }), failed > 0
95
+ ? h(MetricCard, {
96
+ value: failed,
97
+ label: "Failed",
98
+ color: "var(--red)",
99
+ })
100
+ : null, h(MetricCard, {
101
+ value: totalTurns,
102
+ label: "Total Turns",
103
+ color: "var(--brand-purple)",
104
+ }), h(MetricCard, {
105
+ value: fmtTokens(totalTokens),
106
+ label: "Total Tokens",
107
+ color: "var(--brand-teal)",
108
+ }));
109
+ }
110
+ /** Individual run card in the list. */
111
+ function RunCard({ run, isSelected, isHighlighted, onClick, navigateTo, cardRef }) {
112
+ const status = getStatusConfig(run.status);
113
+ const stale = isStaleRun(run);
114
+ const totalTokens = (run.tokenUsage.input ?? 0)
115
+ + (run.tokenUsage.output ?? 0)
116
+ + (run.tokenUsage.cacheCreationInput ?? 0)
117
+ + (run.tokenUsage.cacheReadInput ?? 0);
118
+ const counts = run.structuredSummary?.counts;
119
+ return h("div", {
120
+ ref: cardRef,
121
+ class: `hench-run-card${isSelected ? " selected" : ""}${run.status === "failed" || run.status === "error" ? " failed" : ""}${stale ? " stale" : ""}${isHighlighted ? " hench-run-highlighted" : ""}`,
122
+ onClick,
123
+ role: "button",
124
+ tabIndex: 0,
125
+ onKeyDown: (e) => {
126
+ if (e.key === "Enter" || e.key === " ") {
127
+ e.preventDefault();
128
+ onClick();
129
+ }
130
+ },
131
+ },
132
+ // Top row: status + task link + timestamp
133
+ h("div", { class: "hench-run-header" }, h("span", {
134
+ class: "hench-run-status",
135
+ style: `color: ${status.color}`,
136
+ title: status.label,
137
+ }, status.icon), navigateTo && run.taskId
138
+ ? h(RexTaskLink, {
139
+ task: {
140
+ id: run.taskId,
141
+ title: run.taskTitle,
142
+ status: run.taskStatus ?? "pending",
143
+ },
144
+ navigateTo,
145
+ compact: true,
146
+ showStatus: false,
147
+ class: "hench-run-task-link",
148
+ })
149
+ : h("span", { class: "hench-run-title" }, run.taskTitle), h("span", { class: "hench-run-time" }, fmtTimestamp(run.startedAt))),
150
+ // Bottom row: metadata chips
151
+ h("div", { class: "hench-run-meta" }, h("span", { class: "hench-run-chip" }, fmtDuration(run.startedAt, run.finishedAt)), h("span", { class: "hench-run-chip" }, `${run.turns} turns`), h("span", { class: "hench-run-chip" }, fmtTokens(totalTokens) + " tokens"), h("span", { class: `hench-run-model hench-run-model-${run.model}` }, run.model), counts && counts.filesChanged > 0
152
+ ? h("span", { class: "hench-run-chip" }, `${counts.filesChanged} file${counts.filesChanged === 1 ? "" : "s"} changed`)
153
+ : null, run.lastActivityAt && run.status === "running"
154
+ ? h("span", { class: "hench-run-chip" }, `Active ${fmtTimestamp(run.lastActivityAt)}`)
155
+ : null, stale
156
+ ? h("span", { class: "hench-run-chip hench-run-chip-warning" }, "Possibly stuck")
157
+ : null));
158
+ }
159
+ /** Detail panel for the selected run. */
160
+ function RunDetailView({ run, onBack, navigateTo }) {
161
+ const status = getStatusConfig(run.status);
162
+ const totalTokens = (run.tokenUsage.input ?? 0)
163
+ + (run.tokenUsage.output ?? 0)
164
+ + (run.tokenUsage.cacheCreationInput ?? 0)
165
+ + (run.tokenUsage.cacheReadInput ?? 0);
166
+ const counts = run.structuredSummary?.counts;
167
+ return h("div", { class: "hench-run-detail" },
168
+ // Back button + header
169
+ h("div", { class: "hench-detail-header" }, h("div", { class: "hench-detail-header-top" }, h("button", {
170
+ class: "hench-back-btn",
171
+ onClick: onBack,
172
+ "aria-label": "Back to runs list",
173
+ }, "\u2190 Back"), h(CopyLinkButton, { path: `/hench-runs/${run.id}`, compact: true })), h("div", { class: "hench-detail-title-row" }, h("span", {
174
+ class: "hench-run-status",
175
+ style: `color: ${status.color}; font-size: 18px`,
176
+ }, status.icon), h("h2", null, run.taskTitle))),
177
+ // Rex Task link — bidirectional navigation
178
+ run.taskId
179
+ ? h("div", { class: "hench-detail-section hench-detail-task-section" }, h("h3", null, "Rex Task"), h("div", { class: "hench-detail-task-card" }, h(RexTaskLink, {
180
+ task: {
181
+ id: run.taskId,
182
+ title: run.taskTitle,
183
+ status: run.taskStatus ?? "pending",
184
+ },
185
+ navigateTo,
186
+ showStatus: true,
187
+ showLevel: false,
188
+ }), h("div", { class: "hench-detail-task-id" }, run.taskId)))
189
+ : null,
190
+ // Info grid
191
+ h("div", { class: "hench-detail-info" }, h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Status"), h("span", { class: "hench-info-value", style: `color: ${status.color}` }, status.label)), h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Started"), h("span", { class: "hench-info-value" }, new Date(run.startedAt).toLocaleString())), run.finishedAt
192
+ ? h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Duration"), h("span", { class: "hench-info-value" }, fmtDuration(run.startedAt, run.finishedAt)))
193
+ : null, h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Model"), h("span", { class: "hench-info-value" }, run.model)), h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Turns"), h("span", { class: "hench-info-value" }, String(run.turns))), h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Tokens"), h("span", { class: "hench-info-value" }, fmtTokens(totalTokens))), h("div", { class: "hench-info-row" }, h("span", { class: "hench-info-label" }, "Run ID"), h("span", { class: "hench-info-value hench-info-mono" }, run.id))),
194
+ // Activity counts
195
+ counts
196
+ ? h("div", { class: "hench-detail-section" }, h("h3", null, "Activity"), h("div", { class: "hench-activity-grid" }, counts.filesRead > 0
197
+ ? h("div", { class: "hench-activity-item" }, h("span", { class: "hench-activity-val" }, String(counts.filesRead)), h("span", { class: "hench-activity-label" }, "Files Read"))
198
+ : null, counts.filesChanged > 0
199
+ ? h("div", { class: "hench-activity-item" }, h("span", { class: "hench-activity-val" }, String(counts.filesChanged)), h("span", { class: "hench-activity-label" }, "Files Changed"))
200
+ : null, counts.commandsExecuted > 0
201
+ ? h("div", { class: "hench-activity-item" }, h("span", { class: "hench-activity-val" }, String(counts.commandsExecuted)), h("span", { class: "hench-activity-label" }, "Commands"))
202
+ : null, counts.testsRun > 0
203
+ ? h("div", { class: "hench-activity-item" }, h("span", { class: "hench-activity-val" }, String(counts.testsRun)), h("span", { class: "hench-activity-label" }, "Tests Run"))
204
+ : null, counts.toolCallsTotal > 0
205
+ ? h("div", { class: "hench-activity-item" }, h("span", { class: "hench-activity-val" }, String(counts.toolCallsTotal)), h("span", { class: "hench-activity-label" }, "Tool Calls"))
206
+ : null))
207
+ : null,
208
+ // Token breakdown
209
+ h("div", { class: "hench-detail-section" }, h("h3", null, "Token Breakdown"), h("div", { class: "hench-token-grid" }, h("div", { class: "hench-token-item" }, h("span", { class: "hench-token-val" }, fmtTokens(run.tokenUsage.input ?? 0)), h("span", { class: "hench-token-label" }, "Input")), h("div", { class: "hench-token-item" }, h("span", { class: "hench-token-val" }, fmtTokens(run.tokenUsage.output ?? 0)), h("span", { class: "hench-token-label" }, "Output")), run.tokenUsage.cacheCreationInput
210
+ ? h("div", { class: "hench-token-item" }, h("span", { class: "hench-token-val" }, fmtTokens(run.tokenUsage.cacheCreationInput)), h("span", { class: "hench-token-label" }, "Cache Write"))
211
+ : null, run.tokenUsage.cacheReadInput
212
+ ? h("div", { class: "hench-token-item" }, h("span", { class: "hench-token-val" }, fmtTokens(run.tokenUsage.cacheReadInput)), h("span", { class: "hench-token-label" }, "Cache Read"))
213
+ : null)),
214
+ // Error message
215
+ run.error
216
+ ? h("div", { class: "hench-detail-section" }, h("h3", null, "Error"), h("pre", { class: "hench-error-box" }, run.error))
217
+ : null,
218
+ // Summary (markdown text rendered as plain text for now)
219
+ run.summary
220
+ ? h("div", { class: "hench-detail-section" }, h("h3", null, "Summary"), h("pre", { class: "hench-summary-box" }, run.summary))
221
+ : null,
222
+ // Mark as stuck button — only for running runs
223
+ run.status === "running"
224
+ ? h("div", { class: "hench-detail-section" }, h("h3", null, "Actions"), h("div", { class: "hench-detail-actions" }, h("button", {
225
+ class: "btn btn-danger",
226
+ onClick: async () => {
227
+ try {
228
+ const resp = await fetch(`/api/hench/runs/${run.id}/mark-stuck`, { method: "POST" });
229
+ if (resp.ok) {
230
+ onBack(); // Return to list, which will re-fetch
231
+ }
232
+ }
233
+ catch {
234
+ // Silently fail — user can retry
235
+ }
236
+ },
237
+ }, "Mark as Stuck"), run.lastActivityAt
238
+ ? h("span", { class: "hench-detail-activity" }, `Last activity: ${new Date(run.lastActivityAt).toLocaleString()}`)
239
+ : h("span", { class: "hench-detail-activity hench-detail-activity-unknown" }, "No activity timestamp (legacy run)")))
240
+ : null);
241
+ }
242
+ export function HenchRunsView({ navigateTo, initialRunId } = {}) {
243
+ const [runs, setRuns] = useState([]);
244
+ const [loading, setLoading] = useState(true);
245
+ const [error, setError] = useState(null);
246
+ const [selectedRunId, setSelectedRunId] = useState(null);
247
+ const [runDetail, setRunDetail] = useState(null);
248
+ const [detailLoading, setDetailLoading] = useState(false);
249
+ const [statusFilter, setStatusFilter] = useState("all");
250
+ const [deepLinkError, setDeepLinkError] = useState(null);
251
+ /** Tracks the run ID that was deep-linked to, for highlight animation. */
252
+ const [highlightedRunId, setHighlightedRunId] = useState(null);
253
+ /** Whether the initial deep-link has been consumed. */
254
+ const deepLinkConsumedRef = useRef(false);
255
+ // Fetch the runs list
256
+ const fetchRuns = useCallback(async () => {
257
+ try {
258
+ const res = await fetch("/api/hench/runs");
259
+ if (!res.ok) {
260
+ setError(`Failed to load runs (${res.status})`);
261
+ return;
262
+ }
263
+ const json = await res.json();
264
+ setRuns(json.runs ?? []);
265
+ setError(null);
266
+ }
267
+ catch {
268
+ setError("Could not fetch runs. Is the server running?");
269
+ }
270
+ }, []);
271
+ useEffect(() => {
272
+ fetchRuns().then(() => setLoading(false));
273
+ }, [fetchRuns]);
274
+ // Visibility-aware polling via polling manager
275
+ usePolling("hench-runs", fetchRuns, 10_000);
276
+ // Deep-link: auto-select the target run once runs are loaded
277
+ useEffect(() => {
278
+ if (deepLinkConsumedRef.current || !initialRunId || loading || runs.length === 0)
279
+ return;
280
+ deepLinkConsumedRef.current = true;
281
+ const targetExists = runs.some((r) => r.id === initialRunId);
282
+ if (!targetExists) {
283
+ setDeepLinkError(`Run "${initialRunId}" not found`);
284
+ // Clean URL back to /hench-runs
285
+ history.replaceState({ view: "hench-runs", file: null, zone: null, runId: null }, "", "/hench-runs");
286
+ return;
287
+ }
288
+ // Auto-select and fetch detail
289
+ setSelectedRunId(initialRunId);
290
+ setHighlightedRunId(initialRunId);
291
+ fetchDetail(initialRunId);
292
+ // Clear highlight after animation completes
293
+ const timer = setTimeout(() => setHighlightedRunId(null), 3000);
294
+ return () => clearTimeout(timer);
295
+ }, [initialRunId, loading, runs]);
296
+ // Fetch detail for a specific run
297
+ const fetchDetail = useCallback(async (id) => {
298
+ setDetailLoading(true);
299
+ try {
300
+ const res = await fetch(`/api/hench/runs/${id}`);
301
+ if (!res.ok) {
302
+ setRunDetail(null);
303
+ if (id === initialRunId) {
304
+ setDeepLinkError(`Failed to load run details (${res.status})`);
305
+ }
306
+ return;
307
+ }
308
+ const json = await res.json();
309
+ setRunDetail(json);
310
+ }
311
+ catch {
312
+ setRunDetail(null);
313
+ }
314
+ finally {
315
+ setDetailLoading(false);
316
+ }
317
+ }, [initialRunId]);
318
+ const handleSelectRun = useCallback((id) => {
319
+ setDeepLinkError(null);
320
+ if (selectedRunId === id) {
321
+ // Toggle off — update URL to remove run ID
322
+ setSelectedRunId(null);
323
+ setRunDetail(null);
324
+ history.replaceState({ view: "hench-runs", file: null, zone: null, runId: null }, "", "/hench-runs");
325
+ }
326
+ else {
327
+ setSelectedRunId(id);
328
+ fetchDetail(id);
329
+ // Update URL to include run ID for shareability
330
+ history.replaceState({ view: "hench-runs", file: null, zone: null, runId: id }, "", `/hench-runs/${id}`);
331
+ }
332
+ }, [selectedRunId, fetchDetail]);
333
+ const handleBack = useCallback(() => {
334
+ setSelectedRunId(null);
335
+ setRunDetail(null);
336
+ setDeepLinkError(null);
337
+ // Clean URL back to /hench-runs
338
+ history.replaceState({ view: "hench-runs", file: null, zone: null, runId: null }, "", "/hench-runs");
339
+ }, []);
340
+ // Filter runs by status
341
+ const filteredRuns = useMemo(() => {
342
+ if (statusFilter === "all")
343
+ return runs;
344
+ if (statusFilter === "failed") {
345
+ return runs.filter((r) => r.status === "failed" || r.status === "error");
346
+ }
347
+ return runs.filter((r) => r.status === statusFilter);
348
+ }, [runs, statusFilter]);
349
+ // Status counts for the filter buttons
350
+ const statusCounts = useMemo(() => {
351
+ const counts = { all: runs.length, completed: 0, failed: 0, running: 0 };
352
+ for (const r of runs) {
353
+ if (r.status === "completed")
354
+ counts.completed++;
355
+ else if (r.status === "failed" || r.status === "error")
356
+ counts.failed++;
357
+ else if (r.status === "running" || r.status === "in_progress")
358
+ counts.running++;
359
+ }
360
+ return counts;
361
+ }, [runs]);
362
+ // Scroll the deep-linked run card into view when it renders
363
+ const scrolledRef = useRef(false);
364
+ const deepLinkCardRef = useCallback((el) => {
365
+ if (el && !scrolledRef.current) {
366
+ scrolledRef.current = true;
367
+ // Defer so the DOM has settled
368
+ requestAnimationFrame(() => {
369
+ el.scrollIntoView({ behavior: "smooth", block: "center" });
370
+ });
371
+ }
372
+ }, []);
373
+ // Extract running runs for the active tasks panel
374
+ const activeRuns = useMemo(() => {
375
+ return runs
376
+ .filter((r) => r.status === "running" || r.status === "in_progress")
377
+ .map((r) => ({
378
+ id: r.id,
379
+ taskId: r.taskId,
380
+ taskTitle: r.taskTitle,
381
+ taskStatus: r.taskStatus,
382
+ startedAt: r.startedAt,
383
+ lastActivityAt: r.lastActivityAt,
384
+ status: r.status,
385
+ turns: r.turns,
386
+ model: r.model,
387
+ }));
388
+ }, [runs]);
389
+ // ── Loading state ──
390
+ if (loading) {
391
+ return h("div", { class: "loading" }, "Loading execution history...");
392
+ }
393
+ // ── Error state ──
394
+ if (error) {
395
+ return h("div", { class: "prd-empty" }, h("p", null, error), h("button", { class: "btn", onClick: fetchRuns }, "Retry"));
396
+ }
397
+ // ── Empty state ──
398
+ if (runs.length === 0) {
399
+ return h("div", { class: "hench-runs-container" }, h("div", { class: "hench-runs-header" }, h(BrandedHeader, { product: "hench", title: "Hench", class: "branded-header-hench" }), h("h2", null, "Execution History")), deepLinkError
400
+ ? h("div", { class: "hench-deep-link-error", role: "alert" }, h("span", null, deepLinkError), h("button", {
401
+ class: "hench-deep-link-error-dismiss",
402
+ onClick: () => setDeepLinkError(null),
403
+ "aria-label": "Dismiss",
404
+ }, "×"))
405
+ : null, h("div", { class: "hench-empty" }, h("div", { class: "hench-empty-icon" }, "▶"), h("p", null, "No runs yet."), h("p", { class: "hench-empty-hint" }, "Run ", h("code", null, "ndx work"), " to start executing tasks.")));
406
+ }
407
+ // ── Detail view ──
408
+ if (selectedRunId && !detailLoading && runDetail) {
409
+ return h("div", { class: "hench-runs-container" }, h(RunDetailView, { run: runDetail, onBack: handleBack, navigateTo }));
410
+ }
411
+ if (selectedRunId && detailLoading) {
412
+ return h("div", { class: "hench-runs-container" }, h("div", { class: "loading" }, "Loading run detail..."));
413
+ }
414
+ // ── List view ──
415
+ return h("div", { class: "hench-runs-container" }, h("div", { class: "hench-runs-header" }, h(BrandedHeader, { product: "hench", title: "Hench", class: "branded-header-hench" }), h("div", { class: "hench-runs-title-row" }, h("h2", null, "Execution History"), h("div", { class: "hench-runs-count" }, `${runs.length} run${runs.length === 1 ? "" : "s"}`))),
416
+ // Deep-link error banner
417
+ deepLinkError
418
+ ? h("div", { class: "hench-deep-link-error", role: "alert" }, h("span", null, deepLinkError), h("button", {
419
+ class: "hench-deep-link-error-dismiss",
420
+ onClick: () => setDeepLinkError(null),
421
+ "aria-label": "Dismiss",
422
+ }, "×"))
423
+ : null,
424
+ // Active tasks panel — shown at top when there are running tasks
425
+ h(ActiveTasksPanel, { runs: activeRuns, navigateTo }),
426
+ // Concurrency status — shows process count, limits, and utilization
427
+ h(ConcurrencyPanel, null),
428
+ // Memory and resource health — system memory, per-task memory, health indicators
429
+ h(MemoryPanel, null),
430
+ // WebSocket connection health — active connections, cleanup metrics, broadcast stats
431
+ h(WsHealthPanel, null),
432
+ // Throttle controls — manual concurrency adjustment, pause/resume, emergency stop
433
+ h(ThrottleControlsPanel, null),
434
+ // Aggregate metrics
435
+ h(RunMetrics, { runs }),
436
+ // Filter bar
437
+ h("div", { class: "hench-filter-bar" }, ["all", "completed", "failed", "running"].map((key) => h("button", {
438
+ key,
439
+ class: `toggle-btn${statusFilter === key ? " active" : ""}`,
440
+ onClick: () => setStatusFilter(key),
441
+ }, key === "all" ? "All" : key.charAt(0).toUpperCase() + key.slice(1), statusCounts[key] > 0
442
+ ? h("span", { class: "hench-filter-count" }, ` (${statusCounts[key]})`)
443
+ : null))),
444
+ // Runs list
445
+ h("div", { class: "hench-runs-list" }, filteredRuns.map((run) => {
446
+ const isHL = highlightedRunId === run.id;
447
+ return h(RunCard, {
448
+ key: run.id,
449
+ run,
450
+ isSelected: selectedRunId === run.id,
451
+ isHighlighted: isHL,
452
+ onClick: () => handleSelectRun(run.id),
453
+ navigateTo,
454
+ cardRef: isHL ? deepLinkCardRef : undefined,
455
+ });
456
+ }), filteredRuns.length === 0
457
+ ? h("div", { class: "hench-no-results" }, "No runs match the selected filter.")
458
+ : null));
459
+ }
460
+ //# sourceMappingURL=hench-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hench-runs.js","sourceRoot":"","sources":["../../../src/viewer/views/hench-runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Hench Templates view — browse, apply, and manage workflow templates.
3
+ *
4
+ * Displays a gallery of built-in and user-defined templates with metadata,
5
+ * use cases, and config overrides. Users can apply templates to their
6
+ * current configuration or save their current config as a new template.
7
+ *
8
+ * Data comes from:
9
+ * GET /api/hench/templates (list)
10
+ * GET /api/hench/templates/:id (detail)
11
+ * POST /api/hench/templates/:id/apply (apply)
12
+ * POST /api/hench/templates (create)
13
+ * DELETE /api/hench/templates/:id (delete)
14
+ */
15
+ export declare function HenchTemplatesView(): import("preact").VNode<import("preact").ClassAttributes<HTMLElement> & {
16
+ class: string;
17
+ }>;