@dxos/plugin-debug 0.12.0-next-73daef452f1464b62efdbca75fb0067c1066f264 → 0.13.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 (501) hide show
  1. package/PLUGIN.mdl +241 -3
  2. package/README.md +27 -3
  3. package/dist/lib/Debug.mjs.map +1 -1
  4. package/dist/lib/DebugNodes.mjs +21 -2
  5. package/dist/lib/DebugNodes.mjs.map +1 -1
  6. package/dist/lib/DebugOperation.mjs +166 -2
  7. package/dist/lib/DebugOperation.mjs.map +1 -1
  8. package/dist/lib/DebugPlugin.mjs.map +1 -1
  9. package/dist/lib/DebugSurface.mjs +7 -2
  10. package/dist/lib/DebugSurface.mjs.map +1 -1
  11. package/dist/lib/IncidentSpace.mjs +2 -0
  12. package/dist/lib/PipelineSpace.mjs +2 -0
  13. package/dist/lib/ReviewSpace.mjs +2 -0
  14. package/dist/lib/StockfishSpace.mjs +2 -0
  15. package/dist/lib/TidepoolSpace.mjs +2 -0
  16. package/dist/lib/WeatherSpace.mjs +2 -0
  17. package/dist/lib/WorkerSpace.mjs +2 -0
  18. package/dist/lib/capabilities.browser.mjs +71 -0
  19. package/dist/lib/capabilities.browser.mjs.map +1 -0
  20. package/dist/lib/capabilities.mjs +17 -7
  21. package/dist/lib/capabilities.mjs.map +1 -1
  22. package/dist/lib/capabilities.node.mjs +13 -3
  23. package/dist/lib/capabilities.node.mjs.map +1 -1
  24. package/dist/lib/capabilities.tauri.mjs +71 -0
  25. package/dist/lib/capabilities.tauri.mjs.map +1 -0
  26. package/dist/lib/capabilities.workerd.mjs +3 -1
  27. package/dist/lib/capabilities.workerd.mjs.map +1 -1
  28. package/dist/lib/chunk-DebugConsole.mjs +241 -0
  29. package/dist/lib/chunk-DebugConsole.mjs.map +1 -0
  30. package/dist/lib/chunk-DebugObjectPanel.mjs +12 -16
  31. package/dist/lib/chunk-DebugObjectPanel.mjs.map +1 -1
  32. package/dist/lib/chunk-DebugPanelDrawer.mjs +48 -0
  33. package/dist/lib/chunk-DebugPanelDrawer.mjs.map +1 -0
  34. package/dist/lib/chunk-DebugPanelHeader.mjs +280 -0
  35. package/dist/lib/chunk-DebugPanelHeader.mjs.map +1 -0
  36. package/dist/lib/chunk-DebugPanelStatus.mjs +127 -0
  37. package/dist/lib/chunk-DebugPanelStatus.mjs.map +1 -0
  38. package/dist/lib/chunk-DebugSettings.mjs +81 -70
  39. package/dist/lib/chunk-DebugSettings.mjs.map +1 -1
  40. package/dist/lib/chunk-DebugSpaceObjectsPanel.mjs +21 -12
  41. package/dist/lib/chunk-DebugSpaceObjectsPanel.mjs.map +1 -1
  42. package/dist/lib/chunk-DebugStatus.mjs +12 -12
  43. package/dist/lib/chunk-DebugStatus.mjs.map +1 -1
  44. package/dist/lib/chunk-IncidentSpace.mjs +269 -0
  45. package/dist/lib/chunk-IncidentSpace.mjs.map +1 -0
  46. package/dist/lib/chunk-LoggerPanel.mjs +18 -0
  47. package/dist/lib/chunk-LoggerPanel.mjs.map +1 -0
  48. package/dist/lib/chunk-PLUGIN.mjs +6 -0
  49. package/dist/lib/chunk-PLUGIN.mjs.map +1 -0
  50. package/dist/lib/chunk-PipelineSpace.mjs +378 -0
  51. package/dist/lib/chunk-PipelineSpace.mjs.map +1 -0
  52. package/dist/lib/chunk-ReviewSpace.mjs +356 -0
  53. package/dist/lib/chunk-ReviewSpace.mjs.map +1 -0
  54. package/dist/lib/chunk-SpaceGenerator.mjs +107 -73
  55. package/dist/lib/chunk-SpaceGenerator.mjs.map +1 -1
  56. package/dist/lib/chunk-StatsPanel.mjs +28 -35
  57. package/dist/lib/chunk-StatsPanel.mjs.map +1 -1
  58. package/dist/lib/chunk-StockfishSpace.mjs +563 -0
  59. package/dist/lib/chunk-StockfishSpace.mjs.map +1 -0
  60. package/dist/lib/chunk-TidepoolSpace.mjs +544 -0
  61. package/dist/lib/chunk-TidepoolSpace.mjs.map +1 -0
  62. package/dist/lib/chunk-WeatherSpace.mjs +206 -0
  63. package/dist/lib/chunk-WeatherSpace.mjs.map +1 -0
  64. package/dist/lib/chunk-Wireframe.mjs +6 -6
  65. package/dist/lib/chunk-Wireframe.mjs.map +1 -1
  66. package/dist/lib/chunk-WorkerSpace.mjs +177 -0
  67. package/dist/lib/chunk-WorkerSpace.mjs.map +1 -0
  68. package/dist/lib/chunk-app-graph-builder.mjs +72 -40
  69. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -1
  70. package/dist/lib/chunk-create-space-from-template.mjs +55 -0
  71. package/dist/lib/chunk-create-space-from-template.mjs.map +1 -0
  72. package/dist/lib/chunk-errors.mjs +13 -0
  73. package/dist/lib/chunk-errors.mjs.map +1 -0
  74. package/dist/lib/chunk-graph-retention.mjs +14 -0
  75. package/dist/lib/chunk-graph-retention.mjs.map +1 -0
  76. package/dist/lib/chunk-insert-lorem-ipsum.mjs +2 -2
  77. package/dist/lib/chunk-log-recording.mjs +29 -1
  78. package/dist/lib/chunk-log-recording.mjs.map +1 -1
  79. package/dist/lib/chunk-open-page.mjs +29 -0
  80. package/dist/lib/chunk-open-page.mjs.map +1 -0
  81. package/dist/lib/chunk-operation-handler.mjs +5 -0
  82. package/dist/lib/chunk-operation-handler.mjs.map +1 -1
  83. package/dist/lib/chunk-react-surface.mjs +73 -71
  84. package/dist/lib/chunk-react-surface.mjs.map +1 -1
  85. package/dist/lib/chunk-settings.mjs +2 -2
  86. package/dist/lib/chunk-settings.mjs.map +1 -1
  87. package/dist/lib/chunk-snapshot.mjs +170 -0
  88. package/dist/lib/chunk-snapshot.mjs.map +1 -0
  89. package/dist/lib/chunk-space-templates.mjs +21 -0
  90. package/dist/lib/chunk-space-templates.mjs.map +1 -0
  91. package/dist/lib/chunk-stats-panel.mjs +1 -1
  92. package/dist/lib/chunk-stats-panel.mjs.map +1 -1
  93. package/dist/lib/chunk-undo.mjs +17 -0
  94. package/dist/lib/chunk-undo.mjs.map +1 -0
  95. package/dist/lib/chunk-view-state.mjs +37 -0
  96. package/dist/lib/chunk-view-state.mjs.map +1 -0
  97. package/dist/lib/components.mjs +68 -28
  98. package/dist/lib/components.mjs.map +1 -1
  99. package/dist/lib/containers.mjs +5 -2
  100. package/dist/lib/containers.mjs.map +1 -1
  101. package/dist/lib/index.mjs +8 -2
  102. package/dist/lib/meta.mjs +3 -2
  103. package/dist/lib/meta.mjs.map +1 -1
  104. package/dist/lib/operations.mjs +7 -1
  105. package/dist/lib/operations.mjs.map +1 -1
  106. package/dist/lib/plugin.mjs +2 -2
  107. package/dist/lib/plugin.mjs.map +1 -1
  108. package/dist/lib/translations.mjs +13 -4
  109. package/dist/lib/translations.mjs.map +1 -1
  110. package/dist/types/scripts/build-template-archive.d.ts +2 -0
  111. package/dist/types/scripts/build-template-archive.d.ts.map +1 -0
  112. package/dist/types/src/DebugPlugin.d.ts +2 -2
  113. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/DebugSurfaces.d.ts +4 -5
  115. package/dist/types/src/capabilities/DebugSurfaces.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/app-graph-builder.d.ts +31 -0
  117. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/app-graph-builder.test.d.ts +2 -0
  119. package/dist/types/src/capabilities/app-graph-builder.test.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/gen/browser.d.ts +14 -0
  121. package/dist/types/src/capabilities/gen/browser.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/gen/node.d.ts +2 -0
  123. package/dist/types/src/capabilities/gen/node.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/gen/tauri.d.ts +14 -0
  125. package/dist/types/src/capabilities/gen/tauri.d.ts.map +1 -0
  126. package/dist/types/src/capabilities/gen/workerd.d.ts +2 -0
  127. package/dist/types/src/capabilities/gen/workerd.d.ts.map +1 -1
  128. package/dist/types/src/capabilities/graph-retention.d.ts +5 -0
  129. package/dist/types/src/capabilities/graph-retention.d.ts.map +1 -0
  130. package/dist/types/src/capabilities/index.d.ts +2 -0
  131. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  132. package/dist/types/src/capabilities/log-recording.d.ts +4 -0
  133. package/dist/types/src/capabilities/log-recording.d.ts.map +1 -1
  134. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/space-templates.d.ts +14 -0
  136. package/dist/types/src/capabilities/space-templates.d.ts.map +1 -0
  137. package/dist/types/src/components/SchemaTable/SchemaTable.d.ts +4 -3
  138. package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -1
  139. package/dist/types/src/components/SchemaTable/index.d.ts +1 -1
  140. package/dist/types/src/components/SchemaTable/index.d.ts.map +1 -1
  141. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +2 -1
  142. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  143. package/dist/types/src/components/SpaceGenerator/index.d.ts +2 -2
  144. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  145. package/dist/types/src/components/SpaceGenerator/presets.d.ts +1 -1
  146. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  147. package/dist/types/src/components/index.d.ts +2 -2
  148. package/dist/types/src/components/index.d.ts.map +1 -1
  149. package/dist/types/src/containers/DebugConsole/DebugConsole.d.ts +12 -0
  150. package/dist/types/src/containers/DebugConsole/DebugConsole.d.ts.map +1 -0
  151. package/dist/types/src/containers/DebugConsole/DebugConsole.stories.d.ts +103 -0
  152. package/dist/types/src/containers/DebugConsole/DebugConsole.stories.d.ts.map +1 -0
  153. package/dist/types/src/containers/DebugConsole/cli.d.ts +24 -0
  154. package/dist/types/src/containers/DebugConsole/cli.d.ts.map +1 -0
  155. package/dist/types/src/containers/DebugConsole/index.d.ts +2 -0
  156. package/dist/types/src/containers/DebugConsole/index.d.ts.map +1 -0
  157. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts +1 -1
  158. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -1
  159. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +1 -1
  160. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -1
  161. package/dist/types/src/containers/DebugPanel/DebugPanel.d.ts +30 -0
  162. package/dist/types/src/containers/DebugPanel/DebugPanel.d.ts.map +1 -0
  163. package/dist/types/src/containers/DebugPanel/DebugPanel.stories.d.ts +126 -0
  164. package/dist/types/src/containers/DebugPanel/DebugPanel.stories.d.ts.map +1 -0
  165. package/dist/types/src/containers/DebugPanel/DebugPanelContext.d.ts +16 -0
  166. package/dist/types/src/containers/DebugPanel/DebugPanelContext.d.ts.map +1 -0
  167. package/dist/types/src/containers/DebugPanel/DebugPanelHeader.d.ts +14 -0
  168. package/dist/types/src/containers/DebugPanel/DebugPanelHeader.d.ts.map +1 -0
  169. package/dist/types/src/containers/DebugPanel/DebugPanelMain.d.ts +6 -0
  170. package/dist/types/src/containers/DebugPanel/DebugPanelMain.d.ts.map +1 -0
  171. package/dist/types/src/containers/DebugPanel/DebugPanelSidebar.d.ts +6 -0
  172. package/dist/types/src/containers/DebugPanel/DebugPanelSidebar.d.ts.map +1 -0
  173. package/dist/types/src/containers/DebugPanel/index.d.ts +7 -0
  174. package/dist/types/src/containers/DebugPanel/index.d.ts.map +1 -0
  175. package/dist/types/src/containers/DebugPanel/view-state.d.ts +46 -0
  176. package/dist/types/src/containers/DebugPanel/view-state.d.ts.map +1 -0
  177. package/dist/types/src/containers/DebugPanelDrawer/DebugPanelDrawer.d.ts +10 -0
  178. package/dist/types/src/containers/DebugPanelDrawer/DebugPanelDrawer.d.ts.map +1 -0
  179. package/dist/types/src/containers/DebugPanelDrawer/DebugPanelDrawer.stories.d.ts +114 -0
  180. package/dist/types/src/containers/DebugPanelDrawer/DebugPanelDrawer.stories.d.ts.map +1 -0
  181. package/dist/types/src/containers/DebugPanelDrawer/index.d.ts +2 -0
  182. package/dist/types/src/containers/DebugPanelDrawer/index.d.ts.map +1 -0
  183. package/dist/types/src/containers/DebugPanelStatus/DebugPanelStatus.d.ts +11 -0
  184. package/dist/types/src/containers/DebugPanelStatus/DebugPanelStatus.d.ts.map +1 -0
  185. package/dist/types/src/containers/DebugPanelStatus/DebugPanelStatus.stories.d.ts +107 -0
  186. package/dist/types/src/containers/DebugPanelStatus/DebugPanelStatus.stories.d.ts.map +1 -0
  187. package/dist/types/src/containers/DebugPanelStatus/index.d.ts +2 -0
  188. package/dist/types/src/containers/DebugPanelStatus/index.d.ts.map +1 -0
  189. package/dist/types/src/containers/DebugPortSettings/DebugPortSettings.d.ts.map +1 -1
  190. package/dist/types/src/containers/DebugPortSettings/DebugPortSettings.stories.d.ts +13 -4
  191. package/dist/types/src/containers/DebugPortSettings/DebugPortSettings.stories.d.ts.map +1 -1
  192. package/dist/types/src/containers/DebugPortSettings/index.d.ts +1 -1
  193. package/dist/types/src/containers/DebugPortSettings/index.d.ts.map +1 -1
  194. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +2 -2
  195. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -1
  196. package/dist/types/src/containers/DebugSettings/DebugSettings.stories.d.ts +14 -5
  197. package/dist/types/src/containers/DebugSettings/DebugSettings.stories.d.ts.map +1 -1
  198. package/dist/types/src/containers/DebugSettings/index.d.ts +1 -1
  199. package/dist/types/src/containers/DebugSettings/index.d.ts.map +1 -1
  200. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +1 -1
  201. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -1
  202. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +1 -1
  203. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -1
  204. package/dist/types/src/containers/DebugStatus/index.d.ts +1 -1
  205. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -1
  206. package/dist/types/src/containers/LoggerPanel/LoggerPanel.d.ts +6 -0
  207. package/dist/types/src/containers/LoggerPanel/LoggerPanel.d.ts.map +1 -0
  208. package/dist/types/src/containers/LoggerPanel/LoggerPanel.stories.d.ts +107 -0
  209. package/dist/types/src/containers/LoggerPanel/LoggerPanel.stories.d.ts.map +1 -0
  210. package/dist/types/src/containers/LoggerPanel/index.d.ts +2 -0
  211. package/dist/types/src/containers/LoggerPanel/index.d.ts.map +1 -0
  212. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  213. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.stories.d.ts +13 -4
  214. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.stories.d.ts.map +1 -1
  215. package/dist/types/src/containers/SpaceGenerator/index.d.ts +1 -1
  216. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -1
  217. package/dist/types/src/containers/StatsPanel/StatsPanel.d.ts +5 -1
  218. package/dist/types/src/containers/StatsPanel/StatsPanel.d.ts.map +1 -1
  219. package/dist/types/src/containers/StatsPanel/index.d.ts +1 -1
  220. package/dist/types/src/containers/StatsPanel/index.d.ts.map +1 -1
  221. package/dist/types/src/containers/Wireframe/Wireframe.d.ts +2 -2
  222. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -1
  223. package/dist/types/src/containers/Wireframe/index.d.ts +1 -1
  224. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -1
  225. package/dist/types/src/containers/index.d.ts +7 -1
  226. package/dist/types/src/containers/index.d.ts.map +1 -1
  227. package/dist/types/src/errors.d.ts +123 -0
  228. package/dist/types/src/errors.d.ts.map +1 -0
  229. package/dist/types/src/index.d.ts +2 -2
  230. package/dist/types/src/index.d.ts.map +1 -1
  231. package/dist/types/src/operations/DebugOperationHandlerSet.d.ts.map +1 -1
  232. package/dist/types/src/operations/create-space-from-template.d.ts +5 -0
  233. package/dist/types/src/operations/create-space-from-template.d.ts.map +1 -0
  234. package/dist/types/src/operations/errors.d.ts +33 -0
  235. package/dist/types/src/operations/errors.d.ts.map +1 -0
  236. package/dist/types/src/operations/index.d.ts +1 -1
  237. package/dist/types/src/operations/index.d.ts.map +1 -1
  238. package/dist/types/src/operations/open-page.d.ts +5 -0
  239. package/dist/types/src/operations/open-page.d.ts.map +1 -0
  240. package/dist/types/src/operations/snapshot.d.ts +5 -0
  241. package/dist/types/src/operations/snapshot.d.ts.map +1 -0
  242. package/dist/types/src/operations/snapshot.test.d.ts +2 -0
  243. package/dist/types/src/operations/snapshot.test.d.ts.map +1 -0
  244. package/dist/types/src/operations/undo.d.ts +5 -0
  245. package/dist/types/src/operations/undo.d.ts.map +1 -0
  246. package/dist/types/src/operations/undo.test.d.ts +2 -0
  247. package/dist/types/src/operations/undo.test.d.ts.map +1 -0
  248. package/dist/types/src/plugin.d.ts.map +1 -1
  249. package/dist/types/src/samples/crm/PipelineSpace.d.ts +21 -0
  250. package/dist/types/src/samples/crm/PipelineSpace.d.ts.map +1 -0
  251. package/dist/types/src/samples/crm/PipelineSpace.test.d.ts +2 -0
  252. package/dist/types/src/samples/crm/PipelineSpace.test.d.ts.map +1 -0
  253. package/dist/types/src/samples/crm/accounts.d.ts +55 -0
  254. package/dist/types/src/samples/crm/accounts.d.ts.map +1 -0
  255. package/dist/types/src/samples/crm/inbox.d.ts +14 -0
  256. package/dist/types/src/samples/crm/inbox.d.ts.map +1 -0
  257. package/dist/types/src/samples/crm/pipeline.d.ts +9 -0
  258. package/dist/types/src/samples/crm/pipeline.d.ts.map +1 -0
  259. package/dist/types/src/samples/crm/util.d.ts +14 -0
  260. package/dist/types/src/samples/crm/util.d.ts.map +1 -0
  261. package/dist/types/src/samples/incident/IncidentSpace.d.ts +21 -0
  262. package/dist/types/src/samples/incident/IncidentSpace.d.ts.map +1 -0
  263. package/dist/types/src/samples/incident/IncidentSpace.test.d.ts +2 -0
  264. package/dist/types/src/samples/incident/IncidentSpace.test.d.ts.map +1 -0
  265. package/dist/types/src/samples/incident/docs.d.ts +14 -0
  266. package/dist/types/src/samples/incident/docs.d.ts.map +1 -0
  267. package/dist/types/src/samples/incident/project.d.ts +16 -0
  268. package/dist/types/src/samples/incident/project.d.ts.map +1 -0
  269. package/dist/types/src/samples/incident/tasks.d.ts +9 -0
  270. package/dist/types/src/samples/incident/tasks.d.ts.map +1 -0
  271. package/dist/types/src/samples/incident/util.d.ts +32 -0
  272. package/dist/types/src/samples/incident/util.d.ts.map +1 -0
  273. package/dist/types/src/samples/index.d.ts +8 -0
  274. package/dist/types/src/samples/index.d.ts.map +1 -0
  275. package/dist/types/src/samples/review/ReviewSpace.d.ts +19 -0
  276. package/dist/types/src/samples/review/ReviewSpace.d.ts.map +1 -0
  277. package/dist/types/src/samples/review/ReviewSpace.test.d.ts +2 -0
  278. package/dist/types/src/samples/review/ReviewSpace.test.d.ts.map +1 -0
  279. package/dist/types/src/samples/review/assets.d.ts +19 -0
  280. package/dist/types/src/samples/review/assets.d.ts.map +1 -0
  281. package/dist/types/src/samples/review/util.d.ts +4 -0
  282. package/dist/types/src/samples/review/util.d.ts.map +1 -0
  283. package/dist/types/src/samples/review/work.d.ts +15 -0
  284. package/dist/types/src/samples/review/work.d.ts.map +1 -0
  285. package/dist/types/src/samples/stockfish/StockfishSpace.d.ts +27 -0
  286. package/dist/types/src/samples/stockfish/StockfishSpace.d.ts.map +1 -0
  287. package/dist/types/src/samples/stockfish/StockfishSpace.test.d.ts +2 -0
  288. package/dist/types/src/samples/stockfish/StockfishSpace.test.d.ts.map +1 -0
  289. package/dist/types/src/samples/stockfish/docs.d.ts +8 -0
  290. package/dist/types/src/samples/stockfish/docs.d.ts.map +1 -0
  291. package/dist/types/src/samples/stockfish/game.d.ts +10 -0
  292. package/dist/types/src/samples/stockfish/game.d.ts.map +1 -0
  293. package/dist/types/src/samples/stockfish/project.d.ts +31 -0
  294. package/dist/types/src/samples/stockfish/project.d.ts.map +1 -0
  295. package/dist/types/src/samples/stockfish/run.test.d.ts +2 -0
  296. package/dist/types/src/samples/stockfish/run.test.d.ts.map +1 -0
  297. package/dist/types/src/samples/stockfish/skill.d.ts +8 -0
  298. package/dist/types/src/samples/stockfish/skill.d.ts.map +1 -0
  299. package/dist/types/src/samples/stockfish/tasks.d.ts +12 -0
  300. package/dist/types/src/samples/stockfish/tasks.d.ts.map +1 -0
  301. package/dist/types/src/samples/stockfish/util.d.ts +14 -0
  302. package/dist/types/src/samples/stockfish/util.d.ts.map +1 -0
  303. package/dist/types/src/samples/tidepool/TidepoolSpace.d.ts +22 -0
  304. package/dist/types/src/samples/tidepool/TidepoolSpace.d.ts.map +1 -0
  305. package/dist/types/src/samples/tidepool/TidepoolSpace.test.d.ts +2 -0
  306. package/dist/types/src/samples/tidepool/TidepoolSpace.test.d.ts.map +1 -0
  307. package/dist/types/src/samples/tidepool/docs.d.ts +12 -0
  308. package/dist/types/src/samples/tidepool/docs.d.ts.map +1 -0
  309. package/dist/types/src/samples/tidepool/project.d.ts +20 -0
  310. package/dist/types/src/samples/tidepool/project.d.ts.map +1 -0
  311. package/dist/types/src/samples/tidepool/tasks.d.ts +14 -0
  312. package/dist/types/src/samples/tidepool/tasks.d.ts.map +1 -0
  313. package/dist/types/src/samples/tidepool/team.d.ts +9 -0
  314. package/dist/types/src/samples/tidepool/team.d.ts.map +1 -0
  315. package/dist/types/src/samples/tidepool/util.d.ts +14 -0
  316. package/dist/types/src/samples/tidepool/util.d.ts.map +1 -0
  317. package/dist/types/src/samples/weather/WeatherSpace.d.ts +21 -0
  318. package/dist/types/src/samples/weather/WeatherSpace.d.ts.map +1 -0
  319. package/dist/types/src/samples/weather/WeatherSpace.test.d.ts +2 -0
  320. package/dist/types/src/samples/weather/WeatherSpace.test.d.ts.map +1 -0
  321. package/dist/types/src/samples/weather/project.d.ts +20 -0
  322. package/dist/types/src/samples/weather/project.d.ts.map +1 -0
  323. package/dist/types/src/samples/weather/skill.d.ts +12 -0
  324. package/dist/types/src/samples/weather/skill.d.ts.map +1 -0
  325. package/dist/types/src/samples/weather/tasks.d.ts +9 -0
  326. package/dist/types/src/samples/weather/tasks.d.ts.map +1 -0
  327. package/dist/types/src/samples/weather/util.d.ts +16 -0
  328. package/dist/types/src/samples/weather/util.d.ts.map +1 -0
  329. package/dist/types/src/samples/worker/WorkerSpace.d.ts +22 -0
  330. package/dist/types/src/samples/worker/WorkerSpace.d.ts.map +1 -0
  331. package/dist/types/src/samples/worker/WorkerSpace.test.d.ts +2 -0
  332. package/dist/types/src/samples/worker/WorkerSpace.test.d.ts.map +1 -0
  333. package/dist/types/src/samples/worker/project.d.ts +18 -0
  334. package/dist/types/src/samples/worker/project.d.ts.map +1 -0
  335. package/dist/types/src/samples/worker/tasks.d.ts +9 -0
  336. package/dist/types/src/samples/worker/tasks.d.ts.map +1 -0
  337. package/dist/types/src/samples/worker/util.d.ts +14 -0
  338. package/dist/types/src/samples/worker/util.d.ts.map +1 -0
  339. package/dist/types/src/stories/SpaceTemplates.stories.d.ts +114 -0
  340. package/dist/types/src/stories/SpaceTemplates.stories.d.ts.map +1 -0
  341. package/dist/types/src/testing/index.d.ts +3 -0
  342. package/dist/types/src/testing/index.d.ts.map +1 -0
  343. package/dist/types/src/testing/stub-drawer-plugin.d.ts +8 -0
  344. package/dist/types/src/testing/stub-drawer-plugin.d.ts.map +1 -0
  345. package/dist/types/src/testing/stub-tools-plugin.d.ts +19 -0
  346. package/dist/types/src/testing/stub-tools-plugin.d.ts.map +1 -0
  347. package/dist/types/src/translations.d.ts +13 -4
  348. package/dist/types/src/translations.d.ts.map +1 -1
  349. package/dist/types/src/types/Debug.d.ts +2 -2
  350. package/dist/types/src/types/Debug.d.ts.map +1 -1
  351. package/dist/types/src/types/DebugNodes.d.ts +13 -1
  352. package/dist/types/src/types/DebugNodes.d.ts.map +1 -1
  353. package/dist/types/src/types/DebugOperation.d.ts +119 -0
  354. package/dist/types/src/types/DebugOperation.d.ts.map +1 -1
  355. package/dist/types/src/types/DebugSurface.d.ts +7 -0
  356. package/dist/types/src/types/DebugSurface.d.ts.map +1 -1
  357. package/dist/types/src/types/index.d.ts +6 -6
  358. package/dist/types/src/types/index.d.ts.map +1 -1
  359. package/dist/types/tsconfig.tsbuildinfo +1 -1
  360. package/dx.config.ts +3 -2
  361. package/package.json +129 -73
  362. package/scripts/build-template-archive.ts +65 -0
  363. package/src/DebugPlugin.ts +1 -1
  364. package/src/capabilities/DebugSurfaces.tsx +85 -71
  365. package/src/capabilities/app-graph-builder.test.ts +45 -0
  366. package/src/capabilities/app-graph-builder.ts +83 -46
  367. package/src/capabilities/gen/browser.ts +85 -0
  368. package/src/capabilities/gen/node.ts +15 -8
  369. package/src/capabilities/gen/tauri.ts +85 -0
  370. package/src/capabilities/gen/workerd.ts +11 -4
  371. package/src/capabilities/graph-retention.ts +23 -0
  372. package/src/capabilities/index.ts +18 -10
  373. package/src/capabilities/log-recording.ts +20 -1
  374. package/src/capabilities/operation-handler.ts +9 -0
  375. package/src/capabilities/react-surface.ts +33 -29
  376. package/src/capabilities/settings.ts +2 -2
  377. package/src/capabilities/space-templates.ts +25 -0
  378. package/src/capabilities/stats-panel.ts +1 -1
  379. package/src/components/SchemaTable/SchemaTable.tsx +44 -10
  380. package/src/components/SchemaTable/index.ts +1 -1
  381. package/src/components/SpaceGenerator/ObjectGenerator.tsx +22 -2
  382. package/src/components/SpaceGenerator/index.ts +2 -2
  383. package/src/components/SpaceGenerator/presets.ts +4 -4
  384. package/src/components/index.ts +2 -2
  385. package/src/containers/DebugConsole/DebugConsole.stories.tsx +29 -0
  386. package/src/containers/DebugConsole/DebugConsole.tsx +94 -0
  387. package/src/containers/DebugConsole/cli.ts +296 -0
  388. package/src/containers/DebugConsole/index.ts +5 -0
  389. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +44 -44
  390. package/src/containers/DebugObjectPanel/index.ts +1 -1
  391. package/src/containers/DebugPanel/DebugPanel.stories.tsx +118 -0
  392. package/src/containers/DebugPanel/DebugPanel.tsx +72 -0
  393. package/src/containers/DebugPanel/DebugPanelContext.ts +33 -0
  394. package/src/containers/DebugPanel/DebugPanelHeader.tsx +54 -0
  395. package/src/containers/DebugPanel/DebugPanelMain.tsx +116 -0
  396. package/src/containers/DebugPanel/DebugPanelSidebar.tsx +123 -0
  397. package/src/containers/DebugPanel/index.ts +10 -0
  398. package/src/containers/DebugPanel/view-state.ts +60 -0
  399. package/src/containers/DebugPanelDrawer/DebugPanelDrawer.stories.tsx +92 -0
  400. package/src/containers/DebugPanelDrawer/DebugPanelDrawer.tsx +72 -0
  401. package/src/containers/DebugPanelDrawer/index.ts +5 -0
  402. package/src/containers/DebugPanelStatus/DebugPanelStatus.stories.tsx +119 -0
  403. package/src/containers/DebugPanelStatus/DebugPanelStatus.tsx +167 -0
  404. package/src/containers/DebugPanelStatus/index.ts +5 -0
  405. package/src/containers/DebugPortSettings/DebugPortSettings.stories.tsx +2 -2
  406. package/src/containers/DebugPortSettings/DebugPortSettings.tsx +33 -40
  407. package/src/containers/DebugPortSettings/index.ts +1 -1
  408. package/src/containers/DebugSettings/DebugSettings.stories.tsx +1 -1
  409. package/src/containers/DebugSettings/DebugSettings.tsx +71 -64
  410. package/src/containers/DebugSettings/index.ts +1 -1
  411. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +39 -28
  412. package/src/containers/DebugSpaceObjectsPanel/index.ts +1 -1
  413. package/src/containers/DebugStatus/DebugStatus.tsx +10 -10
  414. package/src/containers/DebugStatus/index.ts +1 -1
  415. package/src/containers/LoggerPanel/LoggerPanel.stories.tsx +62 -0
  416. package/src/containers/LoggerPanel/LoggerPanel.tsx +28 -0
  417. package/src/containers/LoggerPanel/index.ts +5 -0
  418. package/src/containers/SpaceGenerator/SpaceGenerator.stories.tsx +8 -8
  419. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +102 -73
  420. package/src/containers/SpaceGenerator/index.ts +1 -1
  421. package/src/containers/StatsPanel/StatsPanel.tsx +32 -31
  422. package/src/containers/StatsPanel/index.ts +1 -1
  423. package/src/containers/Wireframe/Wireframe.tsx +8 -7
  424. package/src/containers/Wireframe/index.ts +1 -1
  425. package/src/containers/index.ts +22 -9
  426. package/src/errors.ts +23 -0
  427. package/src/index.ts +2 -2
  428. package/src/meta.ts +1 -1
  429. package/src/operations/DebugOperationHandlerSet.ts +5 -1
  430. package/src/operations/create-space-from-template.ts +57 -0
  431. package/src/operations/errors.ts +8 -0
  432. package/src/operations/index.ts +1 -1
  433. package/src/operations/open-page.ts +51 -0
  434. package/src/operations/snapshot.test.ts +57 -0
  435. package/src/operations/snapshot.ts +243 -0
  436. package/src/operations/undo.test.ts +19 -0
  437. package/src/operations/undo.ts +28 -0
  438. package/src/plugin.tsx +4 -0
  439. package/src/samples/crm/PipelineSpace.test.ts +55 -0
  440. package/src/samples/crm/PipelineSpace.ts +52 -0
  441. package/src/samples/crm/accounts.ts +153 -0
  442. package/src/samples/crm/inbox.ts +158 -0
  443. package/src/samples/crm/pipeline.ts +70 -0
  444. package/src/samples/crm/util.ts +18 -0
  445. package/src/samples/incident/IncidentSpace.test.ts +68 -0
  446. package/src/samples/incident/IncidentSpace.ts +61 -0
  447. package/src/samples/incident/docs.ts +111 -0
  448. package/src/samples/incident/project.ts +61 -0
  449. package/src/samples/incident/tasks.ts +101 -0
  450. package/src/samples/incident/util.ts +24 -0
  451. package/src/samples/index.ts +11 -0
  452. package/src/samples/review/ReviewSpace.test.ts +89 -0
  453. package/src/samples/review/ReviewSpace.ts +47 -0
  454. package/src/samples/review/assets.ts +123 -0
  455. package/src/samples/review/util.ts +10 -0
  456. package/src/samples/review/work.ts +249 -0
  457. package/src/samples/stockfish/StockfishSpace.test.ts +129 -0
  458. package/src/samples/stockfish/StockfishSpace.ts +70 -0
  459. package/src/samples/stockfish/docs.ts +65 -0
  460. package/src/samples/stockfish/game.ts +47 -0
  461. package/src/samples/stockfish/project.ts +87 -0
  462. package/src/samples/stockfish/run.test.ts +193 -0
  463. package/src/samples/stockfish/skill.ts +154 -0
  464. package/src/samples/stockfish/tasks.ts +306 -0
  465. package/src/samples/stockfish/util.ts +17 -0
  466. package/src/samples/tidepool/TidepoolSpace.test.ts +61 -0
  467. package/src/samples/tidepool/TidepoolSpace.ts +65 -0
  468. package/src/samples/tidepool/docs.ts +140 -0
  469. package/src/samples/tidepool/project.ts +57 -0
  470. package/src/samples/tidepool/tasks.ts +252 -0
  471. package/src/samples/tidepool/team.ts +87 -0
  472. package/src/samples/tidepool/util.ts +18 -0
  473. package/src/samples/weather/WeatherSpace.test.ts +93 -0
  474. package/src/samples/weather/WeatherSpace.ts +59 -0
  475. package/src/samples/weather/project.ts +76 -0
  476. package/src/samples/weather/skill.ts +45 -0
  477. package/src/samples/weather/tasks.ts +98 -0
  478. package/src/samples/weather/util.ts +21 -0
  479. package/src/samples/worker/WorkerSpace.test.ts +102 -0
  480. package/src/samples/worker/WorkerSpace.ts +56 -0
  481. package/src/samples/worker/project.ts +72 -0
  482. package/src/samples/worker/tasks.ts +119 -0
  483. package/src/samples/worker/util.ts +17 -0
  484. package/src/stories/SpaceTemplates.stories.tsx +105 -0
  485. package/src/testing/index.ts +6 -0
  486. package/src/testing/stub-drawer-plugin.ts +65 -0
  487. package/src/testing/stub-tools-plugin.tsx +95 -0
  488. package/src/translations.ts +15 -6
  489. package/src/types/Debug.ts +2 -2
  490. package/src/types/DebugNodes.ts +21 -1
  491. package/src/types/DebugOperation.ts +206 -0
  492. package/src/types/DebugSurface.ts +7 -0
  493. package/src/types/index.ts +6 -6
  494. package/dist/lib/chunk-LogStatus.mjs +0 -44
  495. package/dist/lib/chunk-LogStatus.mjs.map +0 -1
  496. package/dist/types/src/containers/LogStatus/LogStatus.d.ts +0 -6
  497. package/dist/types/src/containers/LogStatus/LogStatus.d.ts.map +0 -1
  498. package/dist/types/src/containers/LogStatus/index.d.ts +0 -2
  499. package/dist/types/src/containers/LogStatus/index.d.ts.map +0 -1
  500. package/src/containers/LogStatus/LogStatus.tsx +0 -51
  501. package/src/containers/LogStatus/index.ts +0 -5
@@ -0,0 +1,119 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import * as SampleSpace from '@dxos/app-toolkit/SampleSpace';
8
+ import { Database, Obj, Ref } from '@dxos/echo';
9
+ import { EntityId } from '@dxos/echo/Key';
10
+ import { Actor, Task, TaskSet } from '@dxos/types';
11
+
12
+ import { daysAgo } from './util.ts';
13
+
14
+ //
15
+ // Five steps, flat and in order.
16
+ //
17
+ // Flat on purpose: the whole run is one afternoon's work, and a tree would imply stages that can be
18
+ // planned against each other. Everything is `todo` — this is a plan to run, not a project caught
19
+ // mid-flight — and each step depends on the one before it, so a runner working ahead is visibly out
20
+ // of order rather than merely early.
21
+ //
22
+
23
+ type TaskSeed = {
24
+ readonly title: string;
25
+ readonly description: string;
26
+ readonly estimate?: Task.Estimate;
27
+ /** Set where the step needs the reader's own hands — here, the one browser consent screen. */
28
+ readonly assignee?: Actor.Actor;
29
+ };
30
+
31
+ /**
32
+ * The reader, as an assignee. A template cannot know who they are, so the actor carries the role and
33
+ * a label rather than a Person ref — enough for the row to say the step is not the agent's.
34
+ */
35
+ const USER: Actor.Actor = { role: 'user', name: 'You' };
36
+
37
+ const STEPS: ReadonlyArray<TaskSeed> = [
38
+ {
39
+ title: 'Create a sandbox and install wrangler',
40
+ description:
41
+ 'One sandbox for the whole run — it keeps its filesystem between commands, so a second one pays for node and wrangler again. `--temporary` needs wrangler 4.102 or later and that wrangler needs Node 22, while the sandbox runs Node 20: install `wrangler@latest` explicitly and run its script under a newer node — `npx --yes node@22 node_modules/wrangler/bin/wrangler.js` — since a plain install resolves to the last version that fits Node 20 and has no flag. Creating one and running commands in it belong to the Sandbox skill.',
42
+ estimate: 's',
43
+ },
44
+ {
45
+ title: 'Write the Worker',
46
+ description:
47
+ "A TypeScript Worker whose fetch handler answers every request with JSON: a greeting and the current UTC time. No router, no dependencies, no build step beyond wrangler's own.",
48
+ estimate: 'xs',
49
+ },
50
+ {
51
+ title: 'Deploy it with no Cloudflare login',
52
+ description:
53
+ '`wrangler deploy --temporary` mints a temporary account and prints a Worker URL and a claim URL; plain `wrangler deploy` refuses non-interactively and demands a token, so the flag is not optional. File the Worker URL on the project. The claim URL is a bearer credential — hand it straight to me and file it nowhere.',
54
+ estimate: 's',
55
+ },
56
+ {
57
+ title: 'Fetch the deployed URL and check the response',
58
+ description:
59
+ 'Fetch it and paste the body into the project. A deploy command that exited zero is not evidence that anything is serving.',
60
+ estimate: 'xs',
61
+ },
62
+ {
63
+ title: 'Claim the temporary Cloudflare account',
64
+ description:
65
+ 'Yours to do: claiming signs the account into yours, which needs a browser the agent does not have. It comes after the last deploy — an agent with no login cannot update a claimed account, and `--temporary` would mint a second one under a different URL. Do it inside the hour; the account expires with the Worker on it.',
66
+ estimate: 'xs',
67
+ assignee: USER,
68
+ },
69
+ ];
70
+
71
+ export type TasksResult = { taskSet: TaskSet.TaskSet; tasks: Task.Task[] };
72
+
73
+ /** The five steps, each depending on the one before it. */
74
+ export const Tasks: SampleSpace.Phase<TasksResult> = SampleSpace.phase('tasks', {
75
+ schemas: [TaskSet.TaskSet, Task.Task],
76
+ run: () =>
77
+ Effect.gen(function* () {
78
+ const taskSet = yield* Database.add(
79
+ TaskSet.make({
80
+ name: 'Hello Worker',
81
+ description: 'From an empty sandbox to a URL that answers.',
82
+ }),
83
+ );
84
+
85
+ const tasks = STEPS.map((step) =>
86
+ Task.make({
87
+ title: step.title,
88
+ description: step.description,
89
+ estimate: step.estimate,
90
+ assignee: step.assignee,
91
+ status: 'todo',
92
+ // Task carries no due date; its dates are activity-log lines, so that is where they go.
93
+ history: [
94
+ {
95
+ id: EntityId.random(),
96
+ date: daysAgo(0),
97
+ event: 'created' as const,
98
+ description: 'Filed from the worker template.',
99
+ },
100
+ ],
101
+ }),
102
+ );
103
+ yield* SampleSpace.children(taskSet, tasks, (taskSet, refs) => {
104
+ taskSet.tasks = refs;
105
+ });
106
+
107
+ // Nothing can be deployed before it is written, and nothing claimed before it is deployed.
108
+ for (const [index, task] of tasks.entries()) {
109
+ if (index > 0) {
110
+ const previous = tasks[index - 1];
111
+ Obj.update(task, (task) => {
112
+ task.dependsOn = [Ref.make(previous)];
113
+ });
114
+ }
115
+ }
116
+
117
+ return { taskSet, tasks };
118
+ }),
119
+ });
@@ -0,0 +1,17 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as SampleSpace from '@dxos/app-toolkit/SampleSpace';
6
+
7
+ /** Stable reference date so regenerations are reproducible. Override with NOW=2026-05-20 env. */
8
+ export const REFERENCE = process.env.NOW ? new Date(process.env.NOW) : new Date('2026-05-20T15:00:00Z');
9
+
10
+ /**
11
+ * Bound to the same reference the definition declares, so the pure content builders can date their
12
+ * objects without every one of them being an effect.
13
+ */
14
+ export const clock = SampleSpace.makeClock(REFERENCE);
15
+
16
+ /** ISO timestamp that many days before {@link REFERENCE}, at an optional UTC hour of that day. */
17
+ export const daysAgo = clock.daysAgo;
@@ -0,0 +1,105 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import React from 'react';
8
+ import { expect, userEvent, waitFor, within } from 'storybook/test';
9
+
10
+ import { withPluginManager } from '@dxos/app-framework/testing';
11
+ import { ClientPlugin, initializeIdentity } from '@dxos/plugin-client/testing';
12
+ import * as ProgressPlugin from '@dxos/plugin-progress/ProgressPlugin';
13
+ import { SpacePlugin } from '@dxos/plugin-space/testing';
14
+ import * as CorePlugins from '@dxos/plugin-testing/CorePlugins';
15
+ import * as StorybookPlugin from '@dxos/plugin-testing/StorybookPlugin';
16
+ import { useSpaces } from '@dxos/react-client/echo';
17
+ import { Loading, withLayout } from '@dxos/react-ui/testing';
18
+
19
+ import { DebugSpaceObjectsPanel, SpaceGenerator } from '#containers';
20
+ import { translations } from '#translations';
21
+
22
+ import * as DebugPlugin from '../DebugPlugin.ts';
23
+
24
+ /**
25
+ * Picking a space template and watching it land.
26
+ */
27
+ const DefaultStory = () => {
28
+ const [space] = useSpaces();
29
+ if (!space) {
30
+ return <Loading />;
31
+ }
32
+
33
+ return (
34
+ <div className='dx-expand grid grid-cols-2 divide-x divide-separator'>
35
+ <SpaceGenerator space={space} />
36
+ <DebugSpaceObjectsPanel space={space} attendableId={space.id} />
37
+ </div>
38
+ );
39
+ };
40
+
41
+ /** Applies a template by label, then waits for the object tree to show something it built. */
42
+ const applyTemplate = async (canvasElement: HTMLElement, label: string, expected: string) => {
43
+ const canvas = within(canvasElement);
44
+ // The contributing plugins activate on mount, so the row appears asynchronously.
45
+ const create = await canvas.findByRole('button', { name: `Create ${label}` }, { timeout: 20_000 });
46
+ await userEvent.click(create);
47
+ // `getAllByText`: a template may name two objects the same (Tidepool's task set and its
48
+ // project are both "Offline sync v2"), and `getByText` throws on more than one match.
49
+ await waitFor(() => expect(canvas.getAllByText(expected).length).toBeGreaterThan(0), { timeout: 30_000 });
50
+ // The first object appears long before the world is finished, and the row disables itself for as
51
+ // long as the generator runs: returning here left writes in flight, and teardown closed the
52
+ // client's RPC endpoint under them.
53
+ await waitFor(() => expect(create).toBeEnabled(), { timeout: 30_000 });
54
+ };
55
+
56
+ const meta = {
57
+ title: 'plugins/plugin-debug/stories/SpaceTemplates',
58
+ render: DefaultStory,
59
+ decorators: [
60
+ withLayout({ layout: 'fullscreen' }),
61
+ withPluginManager(() => ({
62
+ plugins: [
63
+ ...CorePlugins.make(),
64
+ StorybookPlugin.make({}),
65
+ ProgressPlugin.make(),
66
+ ClientPlugin.make({
67
+ onClientInitialized: ({ client }) =>
68
+ Effect.gen(function* () {
69
+ yield* initializeIdentity(client);
70
+ }),
71
+ }),
72
+ // Contributes the operation handlers the generators invoke (e.g. `SpaceOperation.AddType`).
73
+ SpacePlugin({}),
74
+ // This plugin contributes the space templates, and the panel below is rendered directly
75
+ // rather than through a surface — so without the plugin in the list nothing ever activates
76
+ // the module that registers them and the picker stays empty.
77
+ DebugPlugin.make(),
78
+ ],
79
+ })),
80
+ ],
81
+ parameters: {
82
+ layout: 'fullscreen',
83
+ controls: { disable: true },
84
+ translations,
85
+ },
86
+ } satisfies Meta<typeof DefaultStory>;
87
+
88
+ export default meta;
89
+
90
+ type Story = StoryObj<typeof meta>;
91
+
92
+ /** Empty space plus the picker — click a template to fill it. */
93
+ export const Default: Story = {};
94
+
95
+ export const Tidepool: Story = {
96
+ play: async ({ canvasElement }) => {
97
+ await applyTemplate(canvasElement, 'Tidepool — Offline sync v2', 'Offline sync v2');
98
+ },
99
+ };
100
+
101
+ export const Northwind: Story = {
102
+ play: async ({ canvasElement }) => {
103
+ await applyTemplate(canvasElement, 'Northwind Sales', 'Sales pipeline');
104
+ },
105
+ };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './stub-tools-plugin.tsx';
6
+ export * from './stub-drawer-plugin.ts';
@@ -0,0 +1,65 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import { useSyncExternalStore } from 'react';
7
+
8
+ import * as Capabilities from '@dxos/app-framework/Capabilities';
9
+ import * as Capability from '@dxos/app-framework/Capability';
10
+ import * as Plugin from '@dxos/app-framework/Plugin';
11
+ import * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';
12
+ import * as Operation from '@dxos/compute/Operation';
13
+ import * as OperationHandlerSet from '@dxos/compute/OperationHandlerSet';
14
+ import { DXN } from '@dxos/echo';
15
+ import type * as Main from '@dxos/react-ui/Main';
16
+
17
+ //
18
+ // Drawer state, as the deck would own it: the stub handler below writes it and a story's frame reads it.
19
+ //
20
+
21
+ let drawerState: Main.DrawerState = 'open';
22
+ const listeners = new Set<() => void>();
23
+
24
+ export const getDrawerState = (): Main.DrawerState => drawerState;
25
+
26
+ export const setDrawerState = (next: Main.DrawerState) => {
27
+ drawerState = next;
28
+ listeners.forEach((listener) => listener());
29
+ };
30
+
31
+ export const useDrawerState = (): Main.DrawerState =>
32
+ useSyncExternalStore(
33
+ (listener) => {
34
+ listeners.add(listener);
35
+ return () => listeners.delete(listener);
36
+ },
37
+ () => drawerState,
38
+ );
39
+
40
+ /** Stands in for the deck's layout handler, so the panel's toggle, close and float controls move the drawer. */
41
+ export const StubDrawerPlugin = Plugin.define(
42
+ Plugin.makeMeta({ key: DXN.make('org.dxos.plugin.debug.story.stubDrawer'), name: 'Drawer (stub)' }),
43
+ ).pipe(
44
+ Plugin.addModule(
45
+ Capability.inlineModule('stub-drawer-operations', { provides: [Capabilities.OperationHandler] }, () =>
46
+ Effect.succeed([
47
+ Capability.contribute(
48
+ Capabilities.OperationHandler,
49
+ OperationHandlerSet.make(
50
+ Operation.withHandler(LayoutOperation.UpdateDrawer, ({ state }) =>
51
+ Effect.sync(() => {
52
+ if (state === 'toggle') {
53
+ setDrawerState(drawerState === 'open' ? 'closed' : 'open');
54
+ } else if (state) {
55
+ setDrawerState(state);
56
+ }
57
+ }),
58
+ ),
59
+ ),
60
+ ),
61
+ ]),
62
+ ),
63
+ ),
64
+ Plugin.make,
65
+ );
@@ -0,0 +1,95 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import React from 'react';
7
+
8
+ import * as Capabilities from '@dxos/app-framework/Capabilities';
9
+ import * as Capability from '@dxos/app-framework/Capability';
10
+ import * as Plugin from '@dxos/app-framework/Plugin';
11
+ import * as Surface from '@dxos/app-framework/Surface';
12
+ import * as AppGraphBuilder from '@dxos/app-graph/AppGraphBuilder';
13
+ import * as AppGraphNode from '@dxos/app-graph/AppGraphNode';
14
+ import * as AppCapabilities from '@dxos/app-toolkit/AppCapabilities';
15
+ import * as AppNodeMatcher from '@dxos/app-toolkit/AppNodeMatcher';
16
+ import * as AppSurface from '@dxos/app-toolkit/AppSurface';
17
+ import { DXN } from '@dxos/echo';
18
+ import * as GraphNodeMatcher from '@dxos/graph/GraphNodeMatcher';
19
+
20
+ import { DebugSurface } from '#types';
21
+
22
+ export const STUB_TOOLS_BRANCH = 'tools';
23
+
24
+ const STUB_TOOLS_TYPE = 'stub-tools';
25
+
26
+ /** Node data (and article text) of the stub pages, so a play test can select one and read it back. */
27
+ export const STUB_TOOL_PAGES = [
28
+ { id: 'alpha', data: 'stub-tool.alpha', label: 'Alpha tool' },
29
+ { id: 'beta', data: 'stub-tool.beta', label: 'Beta tool' },
30
+ ] as const;
31
+
32
+ const stubGraphBuilder = Capability.inlineModule(
33
+ 'stub-tools-graph',
34
+ { provides: [AppCapabilities.AppGraphBuilder] },
35
+ Effect.fnUntraced(function* () {
36
+ const extensions = yield* Effect.all([
37
+ AppGraphBuilder.createExtension({
38
+ id: 'stubTools',
39
+ match: AppNodeMatcher.whenDebugGroup,
40
+ connector: () =>
41
+ Effect.succeed([
42
+ AppGraphNode.make({
43
+ id: STUB_TOOLS_BRANCH,
44
+ type: STUB_TOOLS_TYPE,
45
+ data: null,
46
+ // A branch before its children are loaded, so the row shows its chevron on first paint.
47
+ properties: { label: 'Tools', icon: 'ph--wrench--regular', role: 'branch', position: 2 },
48
+ }),
49
+ ]),
50
+ }),
51
+ // The pages hang off the branch by a connector of their own, as a real tool plugin's do, so
52
+ // they only exist once the branch is expanded — the case a restored selection has to survive.
53
+ AppGraphBuilder.createExtension({
54
+ id: 'stubToolPages',
55
+ match: GraphNodeMatcher.whenNodeType(STUB_TOOLS_TYPE),
56
+ connector: () =>
57
+ Effect.succeed(
58
+ STUB_TOOL_PAGES.map((page, index) =>
59
+ AppGraphNode.make({
60
+ id: page.id,
61
+ type: 'stub-tool',
62
+ data: page.data,
63
+ properties: { label: page.label, icon: 'ph--flask--regular', position: index },
64
+ }),
65
+ ),
66
+ ),
67
+ }),
68
+ ]);
69
+ return [Capability.contribute(AppCapabilities.AppGraphBuilder, extensions.flat())];
70
+ }),
71
+ );
72
+
73
+ const stubSurfaces = Capability.inlineModule('stub-tools-surfaces', { provides: [Capabilities.ReactSurface] }, () =>
74
+ Effect.succeed([
75
+ Capability.contribute(
76
+ Capabilities.ReactSurface,
77
+ STUB_TOOL_PAGES.map((page) =>
78
+ Surface.create({
79
+ id: `stubTool.${page.id}`,
80
+ filter: AppSurface.literal(DebugSurface.Page, page.data),
81
+ component: () => <div data-testid={`stubTool.${page.id}`}>{page.label}</div>,
82
+ }),
83
+ ),
84
+ ),
85
+ ]),
86
+ );
87
+
88
+ /**
89
+ * Stands in for devtools in stories: a `tools` branch under the hidden debug category holding two
90
+ * pages whose articles are their labels, so the debug panel's tree has a branch to toggle and a
91
+ * page to select without the real plugin's client and space.
92
+ */
93
+ export const StubToolsPlugin = Plugin.define(
94
+ Plugin.makeMeta({ key: DXN.make('org.dxos.plugin.debug.story.stubTools'), name: 'Stub tools' }),
95
+ ).pipe(Plugin.addModule(stubGraphBuilder), Plugin.addModule(stubSurfaces), Plugin.make);
@@ -2,8 +2,8 @@
2
2
  // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- import { type Resource } from '@dxos/react-ui';
6
5
  import { translations as logPanelTranslations } from '@dxos/react-ui-debug/translations';
6
+ import type * as Theme from '@dxos/react-ui/Theme';
7
7
 
8
8
  import { meta } from '#meta';
9
9
 
@@ -16,10 +16,20 @@ export const translations = [
16
16
  'plugin.name': 'Debug',
17
17
  'debug.label': 'Debug',
18
18
  'generate-objects.label': 'Generate Objects',
19
+ 'create-space-from-template.label': 'Create space from template: {{label}}',
19
20
  'space-objects.label': 'Database',
20
- 'open-debug-panel.label': 'Show Debug',
21
- 'logs.label': 'Logs',
22
- 'open-logs.label': 'Show logs',
21
+ 'open-debug-panel.label': 'Show debug panel',
22
+ 'console.tab.label': 'Console',
23
+ 'logs.tab.label': 'Logs',
24
+ 'debug-panel.title': 'Debug',
25
+ 'debug-panel.empty.label': 'Select a tool',
26
+ 'debug-panel.tree.label': 'Debug tools',
27
+ 'debug-port-status.running.label': 'Agent debug port is open — show debug panel',
28
+ 'dock-panel.label': 'Dock panel',
29
+ 'float-panel.label': 'Float panel',
30
+ 'close-panel.label': 'Close',
31
+ 'console.clear.label': 'Clear log',
32
+ 'console.copy.label': 'Copy last result',
23
33
 
24
34
  'remove-all-objects.confirm.description': 'Remove all objects from this space? This cannot be undone.',
25
35
  'remove-all-objects.error.title': 'Failed to remove objects.',
@@ -74,9 +84,8 @@ export const translations = [
74
84
  'settings.debug-port.session.label': 'Session id',
75
85
  'settings.debug-port.session.description':
76
86
  'Pass to composer-recovery.js --session. A new id is issued on every restart.',
77
- 'settings.debug-port.copy-session.label': 'Copy session id.',
78
87
  'settings.debug-port.log.label': 'Debug port log',
79
88
  },
80
89
  },
81
90
  },
82
- ] as const satisfies Resource[];
91
+ ] as const satisfies Theme.Resource[];
@@ -2,14 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import type * as Atom from 'effect/unstable/reactivity/Atom';
5
+ import type * as Atom from 'effect/reactivity/Atom';
6
6
 
7
7
  import * as Capability from '@dxos/app-framework/Capability';
8
8
  import { type IdbLogStore } from '@dxos/log-store-idb';
9
9
 
10
10
  import { meta } from '#meta';
11
11
 
12
- import * as Settings from './Settings';
12
+ import * as Settings from './Settings.ts';
13
13
 
14
14
  export type DebugPluginOptions = {
15
15
  /** Shared persistent log store for capturing and downloading logs. */
@@ -4,6 +4,8 @@
4
4
 
5
5
  // @import-as-namespace
6
6
 
7
+ import * as GraphNode from '@dxos/graph/GraphNode';
8
+
7
9
  import { meta } from '#meta';
8
10
 
9
11
  /** Extracts the last dot-separated segment of a namespaced ID string for use as a node segment id. */
@@ -11,8 +13,26 @@ export const nodeId = (fullId: string): string => fullId.split('.').at(-1) ?? ''
11
13
 
12
14
  const debugId = meta.profile.key;
13
15
 
14
- /** Top-level Debug node (sibling of DevTools under the SYSTEM navtree group). */
16
+ /** Top-level Debug node, under the debug category. */
15
17
  export const id = `${debugId}.debug`;
16
18
 
17
19
  /** Discriminator for the space-generator article surface (`node.data.type`). */
18
20
  export const SpaceType = `${debugId}.space`;
21
+
22
+ /** Qualified id of the hidden debug category, the root of the debug panel's tree. */
23
+ export const DEBUG_ROOT_ID = `${GraphNode.RootId}/debug`;
24
+
25
+ /** Qualified id of the Debug node, which hosts the panel's own pages. */
26
+ export const DEBUG_NODE_ID = `${DEBUG_ROOT_ID}/${nodeId(id)}`;
27
+
28
+ /** Node data of the Effect-CLI console page. */
29
+ export const Console = `${debugId}.console`;
30
+
31
+ /** Qualified id of the console page: what a pristine panel opens on. */
32
+ export const CONSOLE_NODE_ID = `${DEBUG_NODE_ID}/${nodeId(Console)}`;
33
+
34
+ /** Node data of the log viewer page. */
35
+ export const Logs = `${debugId}.logs`;
36
+
37
+ /** Qualified id of the log viewer page. */
38
+ export const LOGS_NODE_ID = `${DEBUG_NODE_ID}/${nodeId(Logs)}`;