@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,98 @@
1
+ /**
2
+ * Polling restart coordinator.
3
+ *
4
+ * Bridges the graceful-degradation system to the centralized polling-state
5
+ * manager. When memory pressure disables the `autoRefresh` feature, this
6
+ * module calls `suspendAllSources()` to halt all non-essential polling
7
+ * sources in one atomic operation. When pressure subsides and `autoRefresh`
8
+ * is re-enabled, it calls `resumeAllSources()` to restart everything at
9
+ * original intervals.
10
+ *
11
+ * This provides a safety net that ensures **all** polling loops stop and
12
+ * restart together, even if an individual component forgets to handle
13
+ * degradation on its own. Components that also track degradation individually
14
+ * (e.g. status-indicators, use-app-data) coexist harmlessly — suspending
15
+ * an already-suspended source or resuming an already-active one is a no-op
16
+ * in both polling-state and polling-manager.
17
+ *
18
+ * Flow:
19
+ *
20
+ * memory-monitor → graceful-degradation → polling-restart
21
+ * ↓
22
+ * polling-state
23
+ * ↓ ↓
24
+ * polling-manager tick-timer
25
+ *
26
+ * Designed as a standalone module with zero framework dependencies.
27
+ */
28
+ import { suspendAllSources, resumeAllSources, } from "./polling-state.js";
29
+ import { onDegradationChange, isFeatureDisabled, } from "../performance/graceful-degradation.js";
30
+ // ─── Module state ────────────────────────────────────────────────────────────
31
+ let unsubscribeDegradation = null;
32
+ let started = false;
33
+ /**
34
+ * Whether the coordinator has triggered a global suspension.
35
+ * Tracked separately from polling-state's `isGlobalSuspended()` so we
36
+ * only call `resumeAllSources()` if **we** were the ones who suspended
37
+ * — avoids interfering with other suspension triggers (e.g. a future
38
+ * manual pause button).
39
+ */
40
+ let coordinatorSuspended = false;
41
+ // ─── Internal handler ────────────────────────────────────────────────────────
42
+ function handleDegradationChange(state) {
43
+ const autoRefreshDisabled = state.disabledFeatures.has("autoRefresh");
44
+ if (autoRefreshDisabled && !coordinatorSuspended) {
45
+ // Memory pressure activated — suspend all non-essential sources.
46
+ coordinatorSuspended = true;
47
+ suspendAllSources();
48
+ }
49
+ else if (!autoRefreshDisabled && coordinatorSuspended) {
50
+ // Memory pressure cleared — restart all sources at original intervals.
51
+ coordinatorSuspended = false;
52
+ resumeAllSources();
53
+ }
54
+ }
55
+ // ─── Public API ──────────────────────────────────────────────────────────────
56
+ /**
57
+ * Start the polling restart coordinator.
58
+ *
59
+ * Subscribes to degradation changes and evaluates the current state
60
+ * immediately. If `autoRefresh` is already disabled (e.g. the coordinator
61
+ * is started after memory pressure began), sources are suspended at once.
62
+ *
63
+ * Safe to call multiple times — restarts cleanly.
64
+ */
65
+ export function startPollingRestart() {
66
+ if (started)
67
+ stopPollingRestart();
68
+ started = true;
69
+ coordinatorSuspended = false;
70
+ // Subscribe to ongoing degradation changes.
71
+ unsubscribeDegradation = onDegradationChange(handleDegradationChange);
72
+ // Evaluate current state immediately (handles late-start scenarios).
73
+ if (isFeatureDisabled("autoRefresh")) {
74
+ coordinatorSuspended = true;
75
+ suspendAllSources();
76
+ }
77
+ }
78
+ /**
79
+ * Stop the polling restart coordinator.
80
+ *
81
+ * Unsubscribes from degradation changes. If the coordinator had
82
+ * triggered a global suspension, sources are resumed to avoid
83
+ * leaving polling permanently frozen.
84
+ */
85
+ export function stopPollingRestart() {
86
+ if (unsubscribeDegradation) {
87
+ unsubscribeDegradation();
88
+ unsubscribeDegradation = null;
89
+ }
90
+ // If we suspended sources, resume them so we don't leave
91
+ // polling frozen after the coordinator is stopped.
92
+ if (coordinatorSuspended) {
93
+ coordinatorSuspended = false;
94
+ resumeAllSources();
95
+ }
96
+ started = false;
97
+ }
98
+ //# sourceMappingURL=polling-restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling-restart.js","sourceRoot":"","sources":["../../../src/viewer/polling/polling-restart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GAIjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,wCAAwC,CAAC;AAEhD,gFAAgF;AAEhF,IAAI,sBAAsB,GAAwB,IAAI,CAAC;AACvD,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB;;;;;;GAMG;AACH,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,gFAAgF;AAEhF,SAAS,uBAAuB,CAAC,KAAuB;IACtD,MAAM,mBAAmB,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtE,IAAI,mBAAmB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,iEAAiE;QACjE,oBAAoB,GAAG,IAAI,CAAC;QAC5B,iBAAiB,EAAE,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,mBAAmB,IAAI,oBAAoB,EAAE,CAAC;QACxD,uEAAuE;QACvE,oBAAoB,GAAG,KAAK,CAAC;QAC7B,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,OAAO;QAAE,kBAAkB,EAAE,CAAC;IAElC,OAAO,GAAG,IAAI,CAAC;IACf,oBAAoB,GAAG,KAAK,CAAC;IAE7B,4CAA4C;IAC5C,sBAAsB,GAAG,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IAEtE,qEAAqE;IACrE,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,oBAAoB,GAAG,IAAI,CAAC;QAC5B,iBAAiB,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,sBAAsB,EAAE,CAAC;QACzB,sBAAsB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,yDAAyD;IACzD,mDAAmD;IACnD,IAAI,oBAAoB,EAAE,CAAC;QACzB,oBAAoB,GAAG,KAAK,CAAC;QAC7B,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,GAAG,KAAK,CAAC;AAClB,CAAC"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Centralized polling state manager.
3
+ *
4
+ * Provides a single registry for all interval-based polling sources in the
5
+ * application (polling-manager, memory-monitor, DOM performance monitor,
6
+ * tick timer, etc.). Enables coordinated suspension, resumption, and
7
+ * disposal of all polling sources from one location.
8
+ *
9
+ * Problems this solves:
10
+ *
11
+ * 1. **Orphaned intervals** — Without a central registry, independent
12
+ * modules that manage their own `setInterval` can leak timers if
13
+ * their stop functions are never called.
14
+ *
15
+ * 2. **No single "stop everything"** — Previously, shutting down all
16
+ * polling required calling individual stop functions across 4+
17
+ * modules. Now `disposeAllSources()` handles it.
18
+ *
19
+ * 3. **Component remount safety** — Module-level state persists across
20
+ * Preact component teardown/remount cycles. Generation IDs prevent
21
+ * stale callbacks from restarting disposed sources.
22
+ *
23
+ * 4. **Memory-pressure coordination** — Sources can be tagged as
24
+ * `essential` (e.g. memory-monitor must keep running to detect
25
+ * recovery) or non-essential (suspended during memory pressure).
26
+ *
27
+ * Generation tracking:
28
+ *
29
+ * Each `suspendAllSources()` / `resumeAllSources()` cycle increments a
30
+ * generation counter. Callers can snapshot the generation before an
31
+ * async operation and compare afterward to detect whether a
32
+ * suspend/resume cycle occurred while they were waiting — preventing
33
+ * stale restarts from orphaned component lifecycles.
34
+ *
35
+ * Designed as a standalone module with zero framework dependencies.
36
+ */
37
+ /** Status of an individual polling source. */
38
+ export type PollingSourceStatus = "active" | "suspended" | "disposed" | "idle";
39
+ /** Lifecycle callbacks for a registered polling source. */
40
+ export interface PollingSourceCallbacks {
41
+ /** Suspend the source (stop its interval but keep state for resume). */
42
+ suspend: () => void;
43
+ /** Resume the source (restart its interval). */
44
+ resume: () => void;
45
+ /** Fully dispose the source (stop interval, clear state). */
46
+ dispose: () => void;
47
+ /** Return the source's current status. */
48
+ getStatus: () => PollingSourceStatus;
49
+ }
50
+ /** Configuration for a polling source registration. */
51
+ export interface PollingSourceConfig {
52
+ /**
53
+ * Whether this source is essential and should NOT be suspended during
54
+ * memory pressure. The memory monitor itself is essential — it must
55
+ * keep running to detect when pressure subsides.
56
+ */
57
+ essential: boolean;
58
+ }
59
+ /** Read-only view of a registered polling source. */
60
+ export interface PollingSourceInfo {
61
+ readonly key: string;
62
+ readonly status: PollingSourceStatus;
63
+ readonly essential: boolean;
64
+ readonly registeredAt: string;
65
+ }
66
+ /** Read-only snapshot of the global polling state. */
67
+ export interface PollingStateSnapshot {
68
+ /** All registered polling sources. */
69
+ readonly sources: readonly PollingSourceInfo[];
70
+ /** Number of registered sources. */
71
+ readonly sourceCount: number;
72
+ /** Number of currently active (running) sources. */
73
+ readonly activeCount: number;
74
+ /** Number of currently suspended sources. */
75
+ readonly suspendedCount: number;
76
+ /** Whether global suspension is active. */
77
+ readonly globalSuspended: boolean;
78
+ /** Current generation counter (increments on suspend/resume cycles). */
79
+ readonly generation: number;
80
+ }
81
+ /** Callback invoked when the global polling state changes. */
82
+ export type PollingStateChangeHandler = (snapshot: PollingStateSnapshot) => void;
83
+ /**
84
+ * Register a polling source with the centralized state manager.
85
+ *
86
+ * If a source with the same key already exists, it is disposed and replaced.
87
+ * If global suspension is active and the source is not essential, it will
88
+ * be immediately suspended after registration.
89
+ *
90
+ * Returns an unregister function that removes the source from the registry
91
+ * WITHOUT calling dispose. This allows sources to voluntarily unregister
92
+ * (e.g. during their own stop/shutdown) without triggering re-entrant
93
+ * dispose calls. The `dispose` callback is only invoked by
94
+ * `disposeAllSources()` or when the source is replaced by a new
95
+ * registration with the same key.
96
+ *
97
+ * @param key - Unique identifier for this source.
98
+ * @param callbacks - Lifecycle callbacks (suspend, resume, dispose, getStatus).
99
+ * @param config - Source configuration (essential flag).
100
+ */
101
+ export declare function registerPollingSource(key: string, callbacks: PollingSourceCallbacks, config?: Partial<PollingSourceConfig>): () => void;
102
+ /**
103
+ * Remove a polling source from the registry WITHOUT calling dispose.
104
+ *
105
+ * Use this when the source is cleaning itself up voluntarily (e.g. a
106
+ * module's own stop function). The source is responsible for its own
107
+ * resource cleanup in this case. For forced cleanup, use
108
+ * `disposeAllSources()`.
109
+ */
110
+ export declare function unregisterPollingSource(key: string): void;
111
+ /**
112
+ * Suspend all non-essential polling sources.
113
+ *
114
+ * Essential sources (e.g. memory-monitor) continue running so they can
115
+ * detect when conditions improve. Increments the generation counter.
116
+ */
117
+ export declare function suspendAllSources(): void;
118
+ /**
119
+ * Resume all suspended polling sources.
120
+ *
121
+ * Restarts non-essential sources that were suspended. Essential sources
122
+ * that were already running are unaffected. Increments the generation counter.
123
+ */
124
+ export declare function resumeAllSources(): void;
125
+ /**
126
+ * Dispose all registered polling sources and clear the registry.
127
+ *
128
+ * After this call, all intervals are stopped and all sources are removed.
129
+ * The generation counter is incremented. New sources can still be registered.
130
+ */
131
+ export declare function disposeAllSources(): void;
132
+ /**
133
+ * Check if global suspension is active.
134
+ */
135
+ export declare function isGlobalSuspended(): boolean;
136
+ /**
137
+ * Get the current generation counter.
138
+ *
139
+ * The generation increments on every suspend/resume/dispose cycle.
140
+ * Callers can snapshot this value before an async operation and compare
141
+ * afterward to detect whether a lifecycle change occurred.
142
+ */
143
+ export declare function getGeneration(): number;
144
+ /**
145
+ * Check if a specific source is registered.
146
+ */
147
+ export declare function isSourceRegistered(key: string): boolean;
148
+ /**
149
+ * Get read-only information about a specific source, or null if not registered.
150
+ */
151
+ export declare function getSourceInfo(key: string): PollingSourceInfo | null;
152
+ /**
153
+ * Get a full snapshot of the global polling state.
154
+ */
155
+ export declare function getPollingState(): PollingStateSnapshot;
156
+ /**
157
+ * Subscribe to polling state changes. Returns an unsubscribe function.
158
+ */
159
+ export declare function onPollingStateChange(listener: PollingStateChangeHandler): () => void;
160
+ /**
161
+ * Get the number of registered polling sources.
162
+ */
163
+ export declare function getSourceCount(): number;
164
+ /**
165
+ * Validate that a generation value is still current.
166
+ *
167
+ * Returns `true` if the given generation matches the current generation,
168
+ * meaning no suspend/resume/dispose cycle has occurred since the value
169
+ * was captured. Useful for guarding against stale restarts in async code:
170
+ *
171
+ * ```ts
172
+ * const gen = getGeneration();
173
+ * await fetchData();
174
+ * if (!isGenerationCurrent(gen)) return; // stale — bail out
175
+ * ```
176
+ */
177
+ export declare function isGenerationCurrent(gen: number): boolean;
178
+ /**
179
+ * Reset all module state (for testing). Disposes all sources, clears
180
+ * listeners, and resets the generation counter.
181
+ */
182
+ export declare function resetPollingState(): void;
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Centralized polling state manager.
3
+ *
4
+ * Provides a single registry for all interval-based polling sources in the
5
+ * application (polling-manager, memory-monitor, DOM performance monitor,
6
+ * tick timer, etc.). Enables coordinated suspension, resumption, and
7
+ * disposal of all polling sources from one location.
8
+ *
9
+ * Problems this solves:
10
+ *
11
+ * 1. **Orphaned intervals** — Without a central registry, independent
12
+ * modules that manage their own `setInterval` can leak timers if
13
+ * their stop functions are never called.
14
+ *
15
+ * 2. **No single "stop everything"** — Previously, shutting down all
16
+ * polling required calling individual stop functions across 4+
17
+ * modules. Now `disposeAllSources()` handles it.
18
+ *
19
+ * 3. **Component remount safety** — Module-level state persists across
20
+ * Preact component teardown/remount cycles. Generation IDs prevent
21
+ * stale callbacks from restarting disposed sources.
22
+ *
23
+ * 4. **Memory-pressure coordination** — Sources can be tagged as
24
+ * `essential` (e.g. memory-monitor must keep running to detect
25
+ * recovery) or non-essential (suspended during memory pressure).
26
+ *
27
+ * Generation tracking:
28
+ *
29
+ * Each `suspendAllSources()` / `resumeAllSources()` cycle increments a
30
+ * generation counter. Callers can snapshot the generation before an
31
+ * async operation and compare afterward to detect whether a
32
+ * suspend/resume cycle occurred while they were waiting — preventing
33
+ * stale restarts from orphaned component lifecycles.
34
+ *
35
+ * Designed as a standalone module with zero framework dependencies.
36
+ */
37
+ // ─── Module state ────────────────────────────────────────────────────────────
38
+ const sources = new Map();
39
+ let globalSuspended = false;
40
+ let generation = 0;
41
+ let listeners = [];
42
+ // ─── Internal helpers ────────────────────────────────────────────────────────
43
+ /** Build a snapshot from current module state. */
44
+ function buildSnapshot() {
45
+ const infos = [];
46
+ let activeCount = 0;
47
+ let suspendedCount = 0;
48
+ for (const entry of sources.values()) {
49
+ const status = entry.callbacks.getStatus();
50
+ infos.push({
51
+ key: entry.key,
52
+ status,
53
+ essential: entry.config.essential,
54
+ registeredAt: entry.registeredAt,
55
+ });
56
+ if (status === "active")
57
+ activeCount++;
58
+ if (status === "suspended")
59
+ suspendedCount++;
60
+ }
61
+ return {
62
+ sources: infos,
63
+ sourceCount: sources.size,
64
+ activeCount,
65
+ suspendedCount,
66
+ globalSuspended,
67
+ generation,
68
+ };
69
+ }
70
+ function notifyListeners() {
71
+ const snapshot = buildSnapshot();
72
+ for (const listener of listeners) {
73
+ try {
74
+ listener(snapshot);
75
+ }
76
+ catch (err) {
77
+ console.warn("[polling-state] listener error:", err);
78
+ }
79
+ }
80
+ }
81
+ // ─── Public API ──────────────────────────────────────────────────────────────
82
+ /**
83
+ * Register a polling source with the centralized state manager.
84
+ *
85
+ * If a source with the same key already exists, it is disposed and replaced.
86
+ * If global suspension is active and the source is not essential, it will
87
+ * be immediately suspended after registration.
88
+ *
89
+ * Returns an unregister function that removes the source from the registry
90
+ * WITHOUT calling dispose. This allows sources to voluntarily unregister
91
+ * (e.g. during their own stop/shutdown) without triggering re-entrant
92
+ * dispose calls. The `dispose` callback is only invoked by
93
+ * `disposeAllSources()` or when the source is replaced by a new
94
+ * registration with the same key.
95
+ *
96
+ * @param key - Unique identifier for this source.
97
+ * @param callbacks - Lifecycle callbacks (suspend, resume, dispose, getStatus).
98
+ * @param config - Source configuration (essential flag).
99
+ */
100
+ export function registerPollingSource(key, callbacks, config = {}) {
101
+ // Dispose existing source with the same key (prevents orphaned intervals).
102
+ const existing = sources.get(key);
103
+ if (existing) {
104
+ try {
105
+ existing.callbacks.dispose();
106
+ }
107
+ catch (err) {
108
+ console.warn(`[polling-state] failed to dispose replaced source "${key}":`, err);
109
+ }
110
+ }
111
+ const entry = {
112
+ key,
113
+ callbacks,
114
+ config: {
115
+ essential: config.essential ?? false,
116
+ },
117
+ registeredAt: new Date().toISOString(),
118
+ };
119
+ sources.set(key, entry);
120
+ // If global suspension is active and this source is not essential,
121
+ // suspend it immediately to maintain consistent state.
122
+ if (globalSuspended && !entry.config.essential) {
123
+ try {
124
+ callbacks.suspend();
125
+ }
126
+ catch (err) {
127
+ console.warn(`[polling-state] failed to suspend new source "${key}":`, err);
128
+ }
129
+ }
130
+ notifyListeners();
131
+ return () => unregisterPollingSource(key);
132
+ }
133
+ /**
134
+ * Remove a polling source from the registry WITHOUT calling dispose.
135
+ *
136
+ * Use this when the source is cleaning itself up voluntarily (e.g. a
137
+ * module's own stop function). The source is responsible for its own
138
+ * resource cleanup in this case. For forced cleanup, use
139
+ * `disposeAllSources()`.
140
+ */
141
+ export function unregisterPollingSource(key) {
142
+ if (!sources.has(key))
143
+ return;
144
+ sources.delete(key);
145
+ notifyListeners();
146
+ }
147
+ /**
148
+ * Suspend all non-essential polling sources.
149
+ *
150
+ * Essential sources (e.g. memory-monitor) continue running so they can
151
+ * detect when conditions improve. Increments the generation counter.
152
+ */
153
+ export function suspendAllSources() {
154
+ if (globalSuspended)
155
+ return;
156
+ globalSuspended = true;
157
+ generation++;
158
+ for (const entry of sources.values()) {
159
+ if (entry.config.essential)
160
+ continue;
161
+ try {
162
+ entry.callbacks.suspend();
163
+ }
164
+ catch (err) {
165
+ console.warn(`[polling-state] failed to suspend source "${entry.key}":`, err);
166
+ }
167
+ }
168
+ notifyListeners();
169
+ }
170
+ /**
171
+ * Resume all suspended polling sources.
172
+ *
173
+ * Restarts non-essential sources that were suspended. Essential sources
174
+ * that were already running are unaffected. Increments the generation counter.
175
+ */
176
+ export function resumeAllSources() {
177
+ if (!globalSuspended)
178
+ return;
179
+ globalSuspended = false;
180
+ generation++;
181
+ for (const entry of sources.values()) {
182
+ if (entry.config.essential)
183
+ continue;
184
+ try {
185
+ entry.callbacks.resume();
186
+ }
187
+ catch (err) {
188
+ console.warn(`[polling-state] failed to resume source "${entry.key}":`, err);
189
+ }
190
+ }
191
+ notifyListeners();
192
+ }
193
+ /**
194
+ * Dispose all registered polling sources and clear the registry.
195
+ *
196
+ * After this call, all intervals are stopped and all sources are removed.
197
+ * The generation counter is incremented. New sources can still be registered.
198
+ */
199
+ export function disposeAllSources() {
200
+ generation++;
201
+ for (const entry of sources.values()) {
202
+ try {
203
+ entry.callbacks.dispose();
204
+ }
205
+ catch (err) {
206
+ console.warn(`[polling-state] failed to dispose source "${entry.key}":`, err);
207
+ }
208
+ }
209
+ sources.clear();
210
+ globalSuspended = false;
211
+ notifyListeners();
212
+ }
213
+ /**
214
+ * Check if global suspension is active.
215
+ */
216
+ export function isGlobalSuspended() {
217
+ return globalSuspended;
218
+ }
219
+ /**
220
+ * Get the current generation counter.
221
+ *
222
+ * The generation increments on every suspend/resume/dispose cycle.
223
+ * Callers can snapshot this value before an async operation and compare
224
+ * afterward to detect whether a lifecycle change occurred.
225
+ */
226
+ export function getGeneration() {
227
+ return generation;
228
+ }
229
+ /**
230
+ * Check if a specific source is registered.
231
+ */
232
+ export function isSourceRegistered(key) {
233
+ return sources.has(key);
234
+ }
235
+ /**
236
+ * Get read-only information about a specific source, or null if not registered.
237
+ */
238
+ export function getSourceInfo(key) {
239
+ const entry = sources.get(key);
240
+ if (!entry)
241
+ return null;
242
+ return {
243
+ key: entry.key,
244
+ status: entry.callbacks.getStatus(),
245
+ essential: entry.config.essential,
246
+ registeredAt: entry.registeredAt,
247
+ };
248
+ }
249
+ /**
250
+ * Get a full snapshot of the global polling state.
251
+ */
252
+ export function getPollingState() {
253
+ return buildSnapshot();
254
+ }
255
+ /**
256
+ * Subscribe to polling state changes. Returns an unsubscribe function.
257
+ */
258
+ export function onPollingStateChange(listener) {
259
+ listeners.push(listener);
260
+ return () => {
261
+ listeners = listeners.filter((l) => l !== listener);
262
+ };
263
+ }
264
+ /**
265
+ * Get the number of registered polling sources.
266
+ */
267
+ export function getSourceCount() {
268
+ return sources.size;
269
+ }
270
+ /**
271
+ * Validate that a generation value is still current.
272
+ *
273
+ * Returns `true` if the given generation matches the current generation,
274
+ * meaning no suspend/resume/dispose cycle has occurred since the value
275
+ * was captured. Useful for guarding against stale restarts in async code:
276
+ *
277
+ * ```ts
278
+ * const gen = getGeneration();
279
+ * await fetchData();
280
+ * if (!isGenerationCurrent(gen)) return; // stale — bail out
281
+ * ```
282
+ */
283
+ export function isGenerationCurrent(gen) {
284
+ return gen === generation;
285
+ }
286
+ /**
287
+ * Reset all module state (for testing). Disposes all sources, clears
288
+ * listeners, and resets the generation counter.
289
+ */
290
+ export function resetPollingState() {
291
+ // Dispose all sources without incrementing generation
292
+ // (reset is a testing utility, not a lifecycle event).
293
+ for (const entry of sources.values()) {
294
+ try {
295
+ entry.callbacks.dispose();
296
+ }
297
+ catch (err) {
298
+ console.warn(`[polling-state] failed to dispose source "${entry.key}" during reset:`, err);
299
+ }
300
+ }
301
+ sources.clear();
302
+ globalSuspended = false;
303
+ generation = 0;
304
+ listeners = [];
305
+ }
306
+ //# sourceMappingURL=polling-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling-state.js","sourceRoot":"","sources":["../../../src/viewer/polling/polling-state.ts"],"names":[],"mappings":"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"}