@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,37 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import { ViewState } from "@dxos/react-ui-attention/types";
4
+ //#region src/containers/DebugPanel/view-state.ts
5
+ var Point = Schema.Struct({
6
+ x: Schema.Number,
7
+ y: Schema.Number
8
+ });
9
+ var Size = Schema.Struct({
10
+ width: Schema.Number,
11
+ height: Schema.Number
12
+ });
13
+ var Mode = Schema.Literals(["floating", "docked"]);
14
+ var DebugPanelViewStateSchema = Schema.Struct({
15
+ nodeId: Schema.optional(Schema.String),
16
+ mode: Schema.optional(Mode),
17
+ open: Schema.Array(Schema.String).pipe(Schema.withDecodingDefault(Effect.succeed([]))),
18
+ position: Schema.optional(Point),
19
+ size: Schema.optional(Size)
20
+ });
21
+ /** The panel is a singleton in the status rail, so one context serves it. */
22
+ var DEBUG_PANEL_CONTEXT = "debug-panel";
23
+ /**
24
+ * Selection, expansion, mode, position and size, persisted (localStorage) so a debugging session survives
25
+ * the reloads it provokes; requires a `ViewStateProvider` ancestor to persist (degrades to the
26
+ * defaults without one).
27
+ */
28
+ var debugPanelAspect = ViewState.define({
29
+ key: "debug-panel",
30
+ backend: "local",
31
+ schema: DebugPanelViewStateSchema,
32
+ defaultValue: () => ({ open: [] })
33
+ });
34
+ //#endregion
35
+ export { debugPanelAspect as n, DEBUG_PANEL_CONTEXT as t };
36
+
37
+ //# sourceMappingURL=chunk-view-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-view-state.mjs","names":[],"sources":["../../src/containers/DebugPanel/view-state.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { ViewState } from '@dxos/react-ui-attention/types';\n\n// Kept out of `DebugPanel.tsx`: react-refresh only fast-refreshes a module whose exports are all\n// components, so a non-component export beside them forces a full page reload on every edit.\n\nconst Point = Schema.Struct({ x: Schema.Number, y: Schema.Number });\n\nconst Size = Schema.Struct({ width: Schema.Number, height: Schema.Number });\n\nconst Mode = Schema.Literals(['floating', 'docked']);\n\nconst DebugPanelViewStateSchema = Schema.Struct({\n nodeId: Schema.optional(Schema.String),\n mode: Schema.optional(Mode),\n // Defaulted rather than required so a value persisted by the tab-based panel still decodes and\n // keeps its position and size.\n open: Schema.Array(Schema.String).pipe(Schema.withDecodingDefault(Effect.succeed([]))),\n position: Schema.optional(Point),\n size: Schema.optional(Size),\n});\n\nexport type DebugPanelMode = Schema.Schema.Type<typeof Mode>;\n\nexport type DebugPanelViewState = {\n /** Qualified id of the selected page; absent until something is chosen. */\n readonly nodeId?: string;\n /** Docked in the deck's drawer or floating over the app; absent means docked. */\n readonly mode?: DebugPanelMode;\n /** Joined paths (`Path.create`) of the expanded branches. */\n readonly open: readonly string[];\n /** Where the floating panel was last left; absent until it has been dragged. */\n readonly position?: Schema.Schema.Type<typeof Point>;\n /** The size the floating panel was last resized to; absent until it has been. */\n readonly size?: Schema.Schema.Type<typeof Size>;\n};\n\n/** The panel is a singleton in the status rail, so one context serves it. */\nexport const DEBUG_PANEL_CONTEXT = 'debug-panel';\n\n/**\n * Selection, expansion, mode, position and size, persisted (localStorage) so a debugging session survives\n * the reloads it provokes; requires a `ViewStateProvider` ancestor to persist (degrades to the\n * defaults without one).\n */\nexport const debugPanelAspect = ViewState.define<\n DebugPanelViewState,\n Schema.Codec.Encoded<typeof DebugPanelViewStateSchema>\n>({\n key: 'debug-panel',\n backend: 'local',\n schema: DebugPanelViewStateSchema,\n defaultValue: () => ({ open: [] }),\n});\n"],"mappings":";;;;AAYA,IAAM,QAAQ,OAAO,OAAO;CAAE,GAAG,OAAO;CAAQ,GAAG,OAAO;AAAO,CAAC;AAElE,IAAM,OAAO,OAAO,OAAO;CAAE,OAAO,OAAO;CAAQ,QAAQ,OAAO;AAAO,CAAC;AAE1E,IAAM,OAAO,OAAO,SAAS,CAAC,YAAY,QAAQ,CAAC;AAEnD,IAAM,4BAA4B,OAAO,OAAO;CAC9C,QAAQ,OAAO,SAAS,OAAO,MAAM;CACrC,MAAM,OAAO,SAAS,IAAI;CAG1B,MAAM,OAAO,MAAM,OAAO,MAAM,CAAC,CAAC,KAAK,OAAO,oBAAoB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CACrF,UAAU,OAAO,SAAS,KAAK;CAC/B,MAAM,OAAO,SAAS,IAAI;AAC5B,CAAC;;AAkBD,IAAa,sBAAsB;;;;;;AAOnC,IAAa,mBAAmB,UAAU,OAGxC;CACA,KAAK;CACL,SAAS;CACT,QAAQ;CACR,qBAAqB,EAAE,MAAM,CAAC,EAAE;AAClC,CAAC"}
@@ -1,11 +1,19 @@
1
- import "react";
1
+ import * as Effect from "effect/Effect";
2
2
  import { EID, Feed, Filter, JsonSchema, Key, Obj, Query, Ref, Scope, Tag, Type, View } from "@dxos/echo";
3
- import { IconButton } from "@dxos/react-ui";
3
+ import * as Markdown from "@dxos/plugin-markdown/Markdown";
4
+ import * as Instructions from "@dxos/compute/Instructions";
5
+ import { Message, Organization, Person, Pipeline } from "@dxos/types";
6
+ import * as Mailbox from "@dxos/plugin-inbox/Mailbox";
7
+ import { ViewModel, getTypeURIFromQuery } from "@dxos/schema";
8
+ import { log } from "@dxos/log";
9
+ import { range, trim } from "@dxos/util";
10
+ import { useCallback, useState } from "react";
11
+ import * as Button from "@dxos/react-ui/Button";
4
12
  import { mx } from "@dxos/ui-theme";
5
13
  import { jsx, jsxs } from "react/jsx-runtime";
6
14
  import * as Schema from "effect/Schema";
7
- import { RunInstructions, WebSearchSkill } from "@dxos/assistant-toolkit";
8
- import * as Instructions from "@dxos/compute/Instructions";
15
+ import * as AgentOperation from "@dxos/assistant-toolkit/AgentOperation";
16
+ import * as WebSearchSkill from "@dxos/assistant-toolkit/WebSearchSkill";
9
17
  import * as Operation from "@dxos/compute/Operation";
10
18
  import * as Trigger from "@dxos/compute/Trigger";
11
19
  import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from "@dxos/conductor";
@@ -14,22 +22,44 @@ import { DXN as DXN$1, EID as EID$1 } from "@dxos/keys";
14
22
  import { Connection, Cursor } from "@dxos/link";
15
23
  import * as Binding from "@dxos/plugin-connector/Binding";
16
24
  import * as GoogleOperation from "@dxos/plugin-google/GoogleOperation";
17
- import * as Mailbox from "@dxos/plugin-inbox/Mailbox";
18
- import * as Markdown from "@dxos/plugin-markdown/Markdown";
19
25
  import { createAppend, createChat, createComputeGraph, createConstant, createFeed, createFunction, createGpt, createRandom, createSurface, createTemplate, createText, createTrigger } from "@dxos/react-ui-canvas-compute";
20
26
  import { CanvasBoard, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from "@dxos/react-ui-canvas-editor";
21
- import { ViewModel, getTypeURIFromQuery } from "@dxos/schema";
22
- import { Message, Organization, Person, Pipeline } from "@dxos/types";
23
- import { range, trim } from "@dxos/util";
24
27
  import { addressToA1Notation } from "@dxos/compute-hyperformula/types";
28
+ import * as EffectEx from "@dxos/effect/EffectEx";
25
29
  import * as Drawing from "@dxos/plugin-illustrator/Drawing";
26
30
  import * as Sheet from "@dxos/plugin-sheet/Sheet";
31
+ import * as SpaceCapabilities from "@dxos/plugin-space/SpaceCapabilities";
27
32
  import * as SpaceOperation from "@dxos/plugin-space/SpaceOperation";
28
33
  import * as Tldraw from "@dxos/plugin-tldraw/Tldraw";
29
34
  import { random } from "@dxos/random";
30
35
  import { createAsyncGenerator } from "@dxos/schema/testing";
31
36
  //#region src/components/SchemaTable/SchemaTable.tsx
37
+ var __dxlog_file$1 = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/components/SchemaTable/SchemaTable.tsx";
38
+ /**
39
+ * Row display name: a preset descriptor may carry one, otherwise the key it is created by.
40
+ *
41
+ * The field is `presetLabel` rather than `name` because a class-based type entity already has a
42
+ * `name` — its JS class name — so keying off that suppressed the count on every real type row.
43
+ */
44
+ var rowName = (type, typename) => (typeof type.presetLabel === "string" ? type.presetLabel : void 0) ?? typename ?? "";
32
45
  var SchemaTable = ({ classNames, types, objects = {}, label, onClick }) => {
46
+ const [pending, setPending] = useState();
47
+ const handleClick = useCallback(async (typename) => {
48
+ if (pending !== void 0) return;
49
+ setPending(typename);
50
+ try {
51
+ await onClick(typename);
52
+ } catch (err) {
53
+ log.catch(err, void 0, {
54
+ "~LogMeta": "~LogMeta",
55
+ F: __dxlog_file$1,
56
+ L: 41,
57
+ S: void 0
58
+ });
59
+ } finally {
60
+ setPending(void 0);
61
+ }
62
+ }, [onClick, pending]);
33
63
  return /* @__PURE__ */ jsxs("div", {
34
64
  className: mx("grid grid-cols-[1fr_80px_40px] gap-1 overflow-none", classNames),
35
65
  children: [/* @__PURE__ */ jsx("h2", {
@@ -41,19 +71,20 @@ var SchemaTable = ({ classNames, types, objects = {}, label, onClick }) => {
41
71
  className: "grid grid-cols-subgrid col-span-3 items-center",
42
72
  children: [
43
73
  /* @__PURE__ */ jsx("div", {
44
- className: "px-2 text-sm font-mono text-subdued",
45
- children: typename
74
+ className: "px-2 text-sm font-mono text-fg-subtle",
75
+ children: rowName(type, typename)
46
76
  }),
47
77
  /* @__PURE__ */ jsx("div", {
48
78
  className: "px-2 text-right font-mono",
49
- children: typename ? objects[typename] ?? 0 : 0
79
+ children: typeof type.presetLabel === "string" ? "—" : typename ? objects[typename] ?? 0 : 0
50
80
  }),
51
- /* @__PURE__ */ jsx(IconButton, {
81
+ /* @__PURE__ */ jsx(Button.Root, {
52
82
  variant: "ghost",
53
- icon: "ph--plus--regular",
83
+ icon: pending === typename ? "ph--spinner--regular" : "ph--plus--regular",
54
84
  iconOnly: true,
55
- label: "Create data",
56
- onClick: () => typename && onClick(typename)
85
+ disabled: pending !== void 0,
86
+ label: `Create ${rowName(type, typename)}`,
87
+ onClick: () => typename && void handleClick(typename)
57
88
  })
58
89
  ]
59
90
  }, typename);
@@ -120,7 +151,7 @@ var generator = () => ({
120
151
  invariant(mailbox, "Mailbox not found", {
121
152
  "~LogMeta": "~LogMeta",
122
153
  F: __dxlog_file,
123
- L: 125,
154
+ L: 126,
124
155
  S: void 0,
125
156
  A: ["mailbox", "'Mailbox not found'"]
126
157
  });
@@ -128,7 +159,7 @@ var generator = () => ({
128
159
  invariant(mailboxFeed, "Mailbox missing feed reference", {
129
160
  "~LogMeta": "~LogMeta",
130
161
  F: __dxlog_file,
131
- L: 127,
162
+ L: 128,
132
163
  S: void 0,
133
164
  A: ["mailboxFeed", "'Mailbox missing feed reference'"]
134
165
  });
@@ -136,7 +167,7 @@ var generator = () => ({
136
167
  invariant(feedUri, "Mailbox feed missing feed URI", {
137
168
  "~LogMeta": "~LogMeta",
138
169
  F: __dxlog_file,
139
- L: 129,
170
+ L: 130,
140
171
  S: void 0,
141
172
  A: ["feedUri", "'Mailbox feed missing feed URI'"]
142
173
  });
@@ -146,7 +177,7 @@ var generator = () => ({
146
177
  invariant(binding, "Mailbox has no sync binding", {
147
178
  "~LogMeta": "~LogMeta",
148
179
  F: __dxlog_file,
149
- L: 139,
180
+ L: 140,
150
181
  S: void 0,
151
182
  A: ["binding", "'Mailbox has no sync binding'"]
152
183
  });
@@ -154,7 +185,7 @@ var generator = () => ({
154
185
  invariant(connection, "Mailbox binding has no connection", {
155
186
  "~LogMeta": "~LogMeta",
156
187
  F: __dxlog_file,
157
- L: 144,
188
+ L: 145,
158
189
  S: void 0,
159
190
  A: ["connection", "'Mailbox binding has no connection'"]
160
191
  });
@@ -170,7 +201,6 @@ var generator = () => ({
170
201
  }));
171
202
  const researchPrompt = space.db.add(Instructions.make({
172
203
  name: "Research",
173
- description: "Research organization",
174
204
  text: trim`
175
205
  Research the organization provided as input.
176
206
  Create a research note for it at the end.
@@ -181,7 +211,7 @@ var generator = () => ({
181
211
  space.db.add(Trigger.make({
182
212
  enabled: true,
183
213
  spec: Trigger.specSubscription(organizationsQuery),
184
- runnable: Ref.make(Operation.serialize(RunInstructions)),
214
+ runnable: Ref.make(Operation.serialize(AgentOperation.RunInstructions)),
185
215
  input: {
186
216
  instructions: Ref.make(researchPrompt),
187
217
  input: "{{event.subject}}"
@@ -675,15 +705,25 @@ var generator$1 = random;
675
705
  var findViewByTypeUri = async (views, typeUri) => {
676
706
  return views.find((view) => getTypeURIFromQuery(view.query.ast) === typeUri);
677
707
  };
678
- var createGenerator = (client, invokePromise, schema) => {
708
+ var createGenerator = (client, invoker, manager, schema) => {
679
709
  return async (space, n) => {
680
710
  const typename = Type.getTypename(schema);
681
711
  const view = await findViewByTypeUri(await space.db.query(Filter.type(View.View)).run(), Type.getURI(schema));
682
712
  const staticSchema = client ? client.graph.registry.list().filter(Type.isType).find((s) => Type.getTypename(s) === typename) : void 0;
683
- if (!view && !staticSchema) await invokePromise(SpaceOperation.AddType, {
684
- type: schema,
685
- show: false
686
- }, { spaceId: space.id });
713
+ if (!view && !staticSchema) {
714
+ const { data } = await invoker.invokePromise(SpaceOperation.AddType, {
715
+ type: schema,
716
+ show: false
717
+ }, { spaceId: space.id });
718
+ if (data && !data.notified) await EffectEx.runAndForwardErrors(SpaceCapabilities.notifyTypeAdded({
719
+ plugins: manager,
720
+ capabilities: manager.capabilities
721
+ }, {
722
+ db: space.db,
723
+ type: data.object,
724
+ show: false
725
+ }).pipe(Effect.provideService(Operation.Service, invoker)));
726
+ }
687
727
  return createAsyncGenerator(generator$1, schema, { db: space.db }).createObjects(n);
688
728
  };
689
729
  };
@@ -1 +1 @@
1
- {"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/SchemaTable/SchemaTable.tsx","../../src/components/SpaceGenerator/presets.ts","../../src/components/SpaceGenerator/ObjectGenerator.tsx"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Type } from '@dxos/echo';\nimport { IconButton, ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nexport type SchemaTableProps = ThemedClassName<{\n types: any[];\n objects?: Record<string, number | undefined>;\n label: string;\n onClick: (typename: string) => void;\n}>;\n\nexport const SchemaTable = ({ classNames, types, objects = {}, label, onClick }: SchemaTableProps) => {\n return (\n <div className={mx('grid grid-cols-[1fr_80px_40px] gap-1 overflow-none', classNames)}>\n <h2 className='p-2'>{label}</h2>\n {types.map((type) => {\n // Preset descriptors are plain `{ typename }` objects, while class-based type entities carry\n // no `typename` property — those resolve via `Type.getTypename`.\n const typename = typeof type.typename === 'string' ? type.typename : Type.getTypename(type);\n return (\n <div key={typename} className='grid grid-cols-subgrid col-span-3 items-center'>\n <div className='px-2 text-sm font-mono text-subdued'>{typename}</div>\n <div className='px-2 text-right font-mono'>{typename ? (objects[typename] ?? 0) : 0}</div>\n <IconButton\n variant='ghost'\n icon='ph--plus--regular'\n iconOnly\n label='Create data'\n onClick={() => typename && onClick(typename)}\n />\n </div>\n );\n })}\n </div>\n );\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { RunInstructions, WebSearchSkill } from '@dxos/assistant-toolkit';\nimport * as Instructions from '@dxos/compute/Instructions';\nimport * as Operation from '@dxos/compute/Operation';\nimport * as Trigger from '@dxos/compute/Trigger';\nimport { type ComputeGraphModel, NODE_INPUT } from '@dxos/conductor';\nimport { Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Scope, Tag } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, EID } from '@dxos/keys';\nimport { Connection, Cursor } from '@dxos/link';\nimport * as Binding from '@dxos/plugin-connector/Binding';\nimport * as GoogleOperation from '@dxos/plugin-google/GoogleOperation';\nimport * as Mailbox from '@dxos/plugin-inbox/Mailbox';\nimport * as Markdown from '@dxos/plugin-markdown/Markdown';\nimport { type Space } from '@dxos/react-client/echo';\nimport {\n type ComputeShape,\n createAppend,\n createChat,\n createComputeGraph,\n createConstant,\n createFeed,\n createFunction,\n createGpt,\n createRandom,\n createSurface,\n createTemplate,\n createText,\n createTrigger,\n} from '@dxos/react-ui-canvas-compute';\nimport { CanvasBoard, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from '@dxos/react-ui-canvas-editor';\nimport { ViewModel } from '@dxos/schema';\nimport { Message, Organization, Person, Pipeline } from '@dxos/types';\nimport { range, trim } from '@dxos/util';\n\nimport { type ObjectGenerator } from './ObjectGenerator';\n\nexport enum PresetName {\n DXOS_TEAM = 'dxos-team',\n ORG_RESEARCH_PROJECT = 'org-research-project',\n // EMAIL_TABLE = 'email-table',\n GPT_QUEUE = 'webhook-gpt-queue',\n CHAT_GPT = 'chat-gpt-text',\n // EMAIL_WITH_SUMMARY = 'email-gptSummary-table',\n OBJECT_CHANGE_QUEUE = 'objectChange-queue',\n TIMER_TICK_QUEUE = 'timerTick-queue',\n FOREX_FUNCTION_CALL = 'forex-function-call',\n DISCORD_MESSAGES = 'discord-messages',\n // KANBAN_QUEUE = 'kanban-queue',\n}\n\nexport const generator = () => ({\n schemas: [CanvasBoard.CanvasBoard, Trigger.Trigger] as any[],\n types: Object.values(PresetName).map((name) => ({ typename: name })),\n items: [\n [\n PresetName.DXOS_TEAM,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const org = space.db.add(\n Obj.make(Organization.Organization, {\n name: 'DXOS',\n website: 'https://dxos.org',\n }),\n );\n const doc = space.db.add(\n Markdown.make({\n name: 'DXOS Research',\n content: 'DXOS builds Composer, an open-source AI-powered malleable application.',\n }),\n );\n\n const tag = space.db.add(Tag.make({ label: 'Investor' }));\n const tagRef = Ref.make(tag);\n Obj.update(doc, (doc) => {\n Obj.getMeta(doc).tags = [tagRef];\n });\n\n // space.db.add(\n // Relation.make(HasSubject, {\n // [Relation.Source]: doc,\n // [Relation.Target]: org,\n // completedAt: new Date().toISOString(),\n // }),\n // );\n\n space.db.add(\n Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagRef] }, fullName: 'Rich', organization: Ref.make(org) }),\n );\n space.db.add(\n Obj.make(Person.Person, {\n fullName: 'Josiah',\n organization: Ref.make(org),\n }),\n );\n space.db.add(\n Obj.make(Person.Person, {\n fullName: 'Dima',\n organization: Ref.make(org),\n }),\n );\n space.db.add(\n Obj.make(Person.Person, {\n fullName: 'Mykola',\n organization: Ref.make(org),\n }),\n );\n\n return doc;\n });\n cb?.(objects);\n return objects;\n },\n ],\n [\n PresetName.ORG_RESEARCH_PROJECT,\n async (space, n, cb) => {\n const mailboxes = await space.db.query(Filter.type(Mailbox.Mailbox)).run();\n const mailbox = mailboxes[0];\n invariant(mailbox, 'Mailbox not found');\n const mailboxFeed = await mailbox.feed?.tryLoad();\n invariant(mailboxFeed, 'Mailbox missing feed reference');\n const feedUri = Feed.getFeedUri(mailboxFeed);\n invariant(feedUri, 'Mailbox feed missing feed URI');\n const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();\n const tagUri = Obj.getURI(tag);\n\n // The sync operation is account-level: the trigger input names the connection that\n // authenticates the mailbox's binding, not the mailbox itself.\n const cursors = await space.db.query(Filter.type(Cursor.Cursor)).run();\n const binding = cursors.find(\n (cursor): cursor is Cursor.ExternalCursor => Cursor.isExternal(cursor) && Binding.targets(cursor, mailbox),\n );\n invariant(binding, 'Mailbox has no sync binding');\n // Matched by entity id (`Binding.isForConnection`), not by ref-prop equality — a raw filter\n // compares `echo:` URI spellings, which vary for one object and can never-match.\n const connections = await space.db.query(Filter.type(Connection.Connection)).run();\n const connection = connections.find((candidate) => Binding.isForConnection(binding, candidate));\n invariant(connection, 'Mailbox binding has no connection');\n\n const objects = range(n, () => {\n const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagUri));\n const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagUri));\n const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagUri));\n\n space.db.add(\n Trigger.make({\n enabled: true,\n spec: Trigger.specTimer('* * * * *'), // Every minute.\n runnable: Ref.make(Operation.serialize(GoogleOperation.GoogleMailSync)),\n input: {\n connection: Ref.make(connection),\n },\n }),\n );\n\n const researchPrompt = space.db.add(\n Instructions.make({\n name: 'Research',\n description: 'Research organization',\n\n // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.\n // Remove the mock prompt to do the actual research.\n text: trim`\n Research the organization provided as input.\n Create a research note for it at the end.\n NOTE: Do mocked reseach (set mockSearch to true).\n `,\n skills: [Ref.make(WebSearchSkill.make())],\n }),\n );\n\n space.db.add(\n Trigger.make({\n enabled: true,\n spec: Trigger.specSubscription(organizationsQuery),\n runnable: Ref.make(Operation.serialize(RunInstructions)),\n input: {\n instructions: Ref.make(researchPrompt),\n input: '{{event.subject}}',\n },\n }),\n );\n\n const mailboxView = ViewModel.make({\n query: Query.select(\n Filter.type(Message.Message, {\n properties: { labels: Filter.contains('investor') },\n }),\n ).from(Scope.feed(Obj.getURI(mailboxFeed))),\n jsonSchema: JsonSchema.toJsonSchema(Message.Message),\n });\n const contactsView = ViewModel.make({\n query: contactsQuery,\n jsonSchema: JsonSchema.toJsonSchema(Person.Person),\n });\n const organizationsView = ViewModel.make({\n query: organizationsQuery,\n jsonSchema: JsonSchema.toJsonSchema(Organization.Organization),\n });\n const notesView = ViewModel.make({\n query: notesQuery,\n jsonSchema: JsonSchema.toJsonSchema(Markdown.Document),\n });\n\n return space.db.add(\n Pipeline.make({\n name: 'Investor Research',\n columns: [\n {\n name: 'Mailbox',\n view: Ref.make(mailboxView),\n order: [],\n },\n {\n name: 'Contacts',\n view: Ref.make(contactsView),\n order: [],\n },\n {\n name: 'Organizations',\n view: Ref.make(organizationsView),\n order: [],\n },\n {\n name: 'Notes',\n view: Ref.make(notesView),\n order: [],\n },\n ],\n }),\n );\n });\n\n cb?.(objects.flat());\n return objects.flat();\n },\n ],\n [\n PresetName.GPT_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n let functionTrigger: Trigger.Trigger | undefined;\n {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const triggerShape = createTrigger({\n spaceId: space.id,\n triggerKind: 'webhook',\n ...position({ x: -18, y: -2 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));\n const { queueId } = setupQueue(space, canvasModel);\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n canvasModel.createEdge({\n source: trigger.id,\n target: gpt.id,\n input: 'prompt',\n output: 'bodyText',\n });\n\n canvasModel.createEdge({ source: gpt.id, target: text.id, output: 'text' });\n canvasModel.createEdge({\n source: queueId.id,\n target: append.id,\n input: 'id',\n });\n\n canvasModel.createEdge({\n source: gpt.id,\n target: append.id,\n output: 'messages',\n input: 'items',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.GPT_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.OBJECT_CHANGE_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const { canvasModel, computeModel } = createQueueSinkPreset(\n space,\n 'subscription',\n (triggerSpec) =>\n (triggerSpec.query = {\n ast: Query.select(Filter.type(DXN.make('org.dxos.type.chess'))).ast as Obj.Mutable<QueryAST.Query>,\n }),\n 'type',\n );\n return addToSpace(PresetName.OBJECT_CHANGE_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.TIMER_TICK_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const { canvasModel, computeModel } = createQueueSinkPreset(\n space,\n 'timer',\n (triggerSpec) => (triggerSpec.cron = '* * * * *'),\n 'result',\n );\n return addToSpace(PresetName.TIMER_TICK_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n // TODO(wittjosiah): Remove?\n // [\n // PresetName.EMAIL_TABLE,\n // async (space, n, cb) => {\n // const objects = range(n, () => {\n // const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n // const results = space.db.query(Filter.type(TableType)).runSync();\n // const emailTable = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Email'));\n // invariant(emailTable, 'Email table not found.');\n\n // const template = canvasModel.createNode(\n // createTemplate({\n // valueType: 'object',\n // ...rawPosition({ centerX: -80, centerY: -64, width: 320, height: 320 }),\n // }),\n // );\n // const templateContent = ['{'];\n\n // let functionTrigger: FunctionTrigger | undefined;\n // {\n // const triggerShape = createTrigger({\n // spaceId: space.id,\n // triggerKind: 'email',\n // ...position({ x: -18, y: -2 }),\n // });\n // const trigger = canvasModel.createNode(triggerShape);\n\n // const tableId = canvasModel.createNode(\n // createConstant({\n // value: DXN.fromLocalObjectId(emailTable.id).toString(),\n // ...position({ x: -18, y: 5, width: 8, height: 6 }),\n // }),\n // );\n\n // const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n // const properties = SchemaAST.getPropertySignatures(EmailTriggerOutput.ast);\n // for (let i = 0; i < properties.length; i++) {\n // const propName = properties[i].name.toString();\n // canvasModel.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });\n // templateContent.push(` \"${propName}\": \"{{${propName}}}\"` + (i === properties.length - 1 ? '' : ','));\n // }\n // templateContent.push('}\n\n // builder\n // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n // .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });\n\n // functionTrigger = triggerShape.functionTrigger!.target!;\n // });\n\n // const computeModel = createComputeGraph(canvasModel);\n\n // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n // invariant(templateComputeNode, 'Template compute node was not created.');\n // templateComputeNode.value = templateContent.join('\\n');\n // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);\n\n // attachTrigger(functionTrigger, computeModel);\n\n // return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);\n // });\n // cb?.(objects);\n // return objects;\n // },\n // ],\n\n [\n PresetName.CHAT_GPT,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const chat = canvasModel.createNode(createChat(position({ x: -18, y: -2 })));\n const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));\n const { queueId } = setupQueue(space, canvasModel);\n\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n canvasModel.createEdge({ source: chat.id, target: gpt.id, input: 'prompt' });\n canvasModel.createEdge({ source: gpt.id, target: text.id, output: 'text' });\n canvasModel.createEdge({\n source: queueId.id,\n target: append.id,\n input: 'id',\n });\n\n canvasModel.createEdge({\n source: gpt.id,\n target: append.id,\n output: 'messages',\n input: 'items',\n });\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.CHAT_GPT, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n // TODO(wittjosiah): Remove?\n // [\n // PresetName.EMAIL_WITH_SUMMARY,\n // async (space, n, cb) => {\n // const objects = range(n, () => {\n // const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n // const results = space.db.query(Filter.type(TableType)).runSync();\n // const emailTable = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Email'));\n // invariant(emailTable, 'Email table not found.');\n\n // const template = canvasModel.createNode(\n // createTemplate({\n // valueType: 'object',\n // ...rawPosition({ centerX: 192, centerY: -176, width: 320, height: 320 }),\n // }),\n // );\n // const templateContent = ['{'];\n\n // let functionTrigger: FunctionTrigger | undefined;\n // {\n // const gpt = canvasModel.createNode(\n // createGpt(rawPosition({ centerX: -400, centerY: -112, width: 256, height: 202 })),\n // );\n // const systemPrompt = canvasModel.createNode(\n // createConstant({\n // value: \"use one word to describe content category. don't write anything else\",\n // ...rawPosition({ centerX: -800, centerY: -160, width: 192, height: 128 }),\n // }),\n // );\n // const triggerShape = createTrigger({\n // spaceId: space.id,\n // triggerKind: 'email',\n // ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),\n // });\n // const trigger = canvasModel.createNode(triggerShape);\n\n // const { queueId } = setupQueue(space, canvasModel, {\n // idPosition: { centerX: -720, centerY: 224, width: 192, height: 256 },\n // queuePosition: { centerX: -144, centerY: 416, width: 320, height: 448 },\n // });\n // const appendToQueue = canvasModel.createNode(\n // createAppend(rawPosition({ centerX: -80, centerY: 96, width: 122, height: 128 })),\n // );\n\n // const tableId = canvasModel.createNode(\n // createConstant({\n // value: DXN.fromLocalObjectId(emailTable.id).toString(),\n // ...rawPosition({ centerX: -112, centerY: -544, width: 192, height: 256 }),\n // }),\n // );\n\n // const appendToTable = canvasModel.createNode(\n // createAppend(rawPosition({ centerX: 560, centerY: -416, width: 128, height: 122 })),\n // );\n\n // templateContent.push(' \"category\": \"{{text}}\",');\n // canvasModel.createEdge({ source: gpt.id, target: template.id, input: 'text', output: 'text' });\n\n // const properties = SchemaAST.getPropertySignatures(EmailTriggerOutput.ast);\n // for (let i = 0; i < properties.length; i++) {\n // const propName = properties[i].name.toString();\n // canvasModel.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });\n // templateContent.push(` \"${propName}\": \"{{${propName}}}\"` + (i === properties.length - 1 ? '' : ','));\n // }\n // templateContent.push('}\n\n // builder\n // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n // .createEdge({ source: queueId.id, target: appendToQueue.id, input: 'id' })\n // .createEdge({ source: gpt.id, target: appendToQueue.id, output: 'messages', input: 'items' })\n // .createEdge({ source: systemPrompt.id, target: gpt.id, input: 'systemPrompt' })\n // .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'body' })\n // .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });\n\n // functionTrigger = triggerShape.functionTrigger!.target!;\n // });\n\n // const computeModel = createComputeGraph(canvasModel);\n\n // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n // invariant(templateComputeNode, 'Template compute node was not created.');\n // templateComputeNode.value = templateContent.join('\\n');\n // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));\n // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);\n\n // attachTrigger(functionTrigger, computeModel);\n\n // return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);\n // });\n // cb?.(objects);\n // return objects;\n // },\n // ],\n\n [\n PresetName.FOREX_FUNCTION_CALL,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n {\n const sourceCurrency = canvasModel.createNode(\n createConstant({ value: 'USD', ...position({ x: -10, y: -5 }) }),\n );\n const targetCurrency = canvasModel.createNode(\n createConstant({ value: 'EUR', ...position({ x: -10, y: 5 }) }),\n );\n const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));\n const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));\n\n canvasModel.createEdge({\n source: sourceCurrency.id,\n target: converter.id,\n input: 'from',\n });\n\n canvasModel.createEdge({\n source: targetCurrency.id,\n target: converter.id,\n input: 'to',\n });\n\n canvasModel.createEdge({\n source: converter.id,\n target: view.id,\n output: 'rate',\n });\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.FOREX_FUNCTION_CALL, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.DISCORD_MESSAGES,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n let functionTrigger: Trigger.Trigger | undefined;\n {\n const triggerShape = createTrigger({\n spaceId: space.id,\n triggerKind: 'timer',\n ...position({ x: -10, y: -5 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n // DXOS dev-null channel.\n const channelId = canvasModel.createNode(\n createConstant({\n value: '1088569858767212554',\n ...position({ x: -10, y: 0 }),\n }),\n );\n const queueId = canvasModel.createNode(\n createConstant({\n value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),\n ...position({ x: -10, y: 5 }),\n }),\n );\n const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));\n const view = canvasModel.createNode(createText(position({ x: 12, y: 0 })));\n const queue = canvasModel.createNode(createFeed(position({ x: 0, y: 12 })));\n\n canvasModel.createEdge({\n source: trigger.id,\n target: converter.id,\n input: 'tick',\n });\n\n canvasModel.createEdge({\n source: channelId.id,\n target: converter.id,\n input: 'channelId',\n });\n\n canvasModel.createEdge({\n source: queueId.id,\n target: converter.id,\n input: 'queueId',\n });\n\n canvasModel.createEdge({\n source: converter.id,\n target: view.id,\n output: 'newMessages',\n });\n\n canvasModel.createEdge({\n source: queueId.id,\n target: queue.id,\n input: 'input',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n }\n\n const computeModel = createComputeGraph(canvasModel);\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.DISCORD_MESSAGES, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n // TODO(wittjosiah): Remove?\n // [\n // PresetName.KANBAN_QUEUE,\n // async (space, n, cb) => {\n // const objects = range(n, () => {\n // const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n // // TODO(wittjosiah): Integrate directly w/ Kanban.\n // // const results = space.db.query(Filter.type(KanbanType)).runSync();\n // // const kanban = results.find((r) => r.object?.cardView?.target?.query?.type?.endsWith('Message'));\n // // invariant(kanban, 'Kanban not found.');\n\n // const results = space.db.query(Filter.type(TableType)).runSync();\n // const messages = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Message'));\n // invariant(messages, 'Table not found.');\n\n // let functionTrigger: FunctionTrigger | undefined;\n // {\n // const triggerShape = createTrigger({\n // spaceId: space.id,\n // triggerKind: 'queue',\n // ...position({ x: -10, y: -5 }),\n // });\n // const trigger = canvasModel.createNode(triggerShape);\n\n // const tableId = canvasModel.createNode(\n // createConstant({\n // value: DXN.fromLocalObjectId(messages.id).toString(),\n // ...position({ x: -10, y: 5 }),\n // }),\n // );\n // const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 0 })));\n\n // builder\n // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n // .createEdge({ source: trigger.id, target: appendToTable.id, input: 'items', output: 'item' });\n\n // functionTrigger = triggerShape.functionTrigger!.target!;\n // }\n\n // const computeModel = createComputeGraph(canvasModel);\n // attachTrigger(functionTrigger, computeModel);\n\n // return addToSpace(PresetName.KANBAN_QUEUE, space, canvasModel, computeModel);\n // });\n // cb?.(objects);\n // return objects;\n // },\n // ],\n ] as [PresetName, ObjectGenerator<any>][],\n});\n\nconst createQueueSinkPreset = <SpecType extends Trigger.Kind>(\n space: Space,\n triggerKind: SpecType,\n initSpec: (spec: Obj.Mutable<Extract<Trigger.Spec, { kind: SpecType }>>) => void,\n triggerOutputName: string,\n) => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n const template = canvasModel.createNode(\n createTemplate({\n valueType: 'object',\n ...rawPosition({ centerX: -64, centerY: -79, width: 320, height: 320 }),\n }),\n );\n\n let functionTrigger: Trigger.Trigger | undefined;\n {\n const triggerShape = createTrigger({\n spaceId: space.id,\n triggerKind,\n ...rawPosition({ centerX: -578, centerY: -187, height: 320, width: 320 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n const { queueId } = setupQueue(space, canvasModel, {\n queuePosition: { centerX: -80, centerY: 378, width: 320, height: 448 },\n });\n const append = canvasModel.createNode(\n createAppend(rawPosition({ centerX: 320, centerY: 192, width: 128, height: 122 })),\n );\n const random = canvasModel.createNode(\n createRandom(rawPosition({ centerX: -509, centerY: -30, width: 64, height: 64 })),\n );\n\n canvasModel.createEdge({ source: queueId.id, target: append.id, input: 'id' });\n canvasModel.createEdge({ source: template.id, target: append.id, input: 'items' });\n canvasModel.createEdge({\n source: trigger.id,\n target: template.id,\n output: triggerOutputName,\n input: 'type',\n });\n\n canvasModel.createEdge({\n source: random.id,\n target: template.id,\n input: 'changeId',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n const triggerSpec = functionTrigger.spec;\n invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');\n Obj.update(functionTrigger, (functionTrigger) => {\n initSpec(functionTrigger.spec as any);\n });\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n invariant(templateComputeNode, 'Template compute node was not created.');\n // NOTE: These are plain object mutations during model construction, not ECHO object mutations.\n templateComputeNode.value = ['{', ' \"@type\": \"{{type}}\",', ' \"id\": \"@{{changeId}}\"', '}'].join('\\n');\n templateComputeNode.inputSchema = JsonSchema.toJsonSchema(\n Schema.Struct({ type: Schema.String, changeId: Schema.String }),\n );\n attachTrigger(functionTrigger, computeModel);\n\n return { canvasModel, computeModel };\n};\n\nconst addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {\n return space.db.add(\n Obj.make(CanvasBoard.CanvasBoard, {\n name,\n computeGraph: Ref.make(compute.root),\n layout: canvas.graph,\n }),\n );\n};\n\nconst setupQueue = (\n space: Space,\n canvasModel: CanvasGraphModel,\n args?: { idPosition?: RawPositionInput; queuePosition?: RawPositionInput },\n) => {\n const queueId = canvasModel.createNode(\n createConstant({\n value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),\n ...(args?.idPosition ? rawPosition(args.idPosition) : position({ x: -18, y: 5, width: 8, height: 6 })),\n }),\n );\n const queue = canvasModel.createNode(\n createFeed(\n args?.queuePosition ? rawPosition(args.queuePosition) : position({ x: -3, y: 3, width: 14, height: 10 }),\n ),\n );\n canvasModel.createEdge({ source: queueId.id, target: queue.id });\n return { queue, queueId };\n};\n\nconst attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {\n invariant(functionTrigger);\n const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;\n Obj.update(functionTrigger, (functionTrigger) => {\n // TODO(wittjosiah): Widen Runnable union to include ComputeGraph and remove cast.\n functionTrigger.runnable = Ref.make(computeModel.root) as any;\n functionTrigger.inputNodeId = inputNode.id;\n });\n};\n\ntype RawPositionInput = {\n centerX: number;\n centerY: number;\n width: number;\n height: number;\n};\n\nconst rawPosition = (args: RawPositionInput) => {\n return {\n center: { x: args.centerX, y: args.centerY },\n size: { width: args.width, height: args.height },\n };\n};\n\nconst position = (rect: { x: number; y: number; width?: number; height?: number }) => {\n const snap = 32;\n const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });\n const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);\n if (width && height) {\n return {\n center: { x, y },\n size: width && height ? { width, height } : undefined,\n };\n } else {\n return { center: { x, y } };\n }\n};\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { addressToA1Notation } from '@dxos/compute-hyperformula/types';\nimport { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from '@dxos/conductor';\nimport { EID, Filter, Key, Type, View } from '@dxos/echo';\nimport { OperationInvoker } from '@dxos/operation';\nimport * as Drawing from '@dxos/plugin-illustrator/Drawing';\nimport * as Markdown from '@dxos/plugin-markdown/Markdown';\nimport * as Sheet from '@dxos/plugin-sheet/Sheet';\nimport * as SpaceOperation from '@dxos/plugin-space/SpaceOperation';\nimport * as Tldraw from '@dxos/plugin-tldraw/Tldraw';\nimport { random } from '@dxos/random';\nimport { type Client } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\nimport { getTypeURIFromQuery } from '@dxos/schema';\nimport { type ValueGenerator, createAsyncGenerator } from '@dxos/schema/testing';\nimport { range } from '@dxos/util';\n\nconst generator: ValueGenerator = random as any;\n\nconst findViewByTypeUri = async (views: View.View[], typeUri: string) => {\n return views.find((view) => getTypeURIFromQuery(view.query.ast) === typeUri);\n};\n\nexport type ObjectGenerator<T> = (space: Space, n: number, cb?: (objects: T[]) => void) => Promise<T[]>;\n\nexport const createGenerator = <S extends Type.AnyObj>(\n client: Client,\n invokePromise: OperationInvoker.OperationInvoker['invokePromise'],\n schema: S,\n): ObjectGenerator<Type.InstanceType<S>> => {\n return async (space: Space, n: number): Promise<Type.InstanceType<S>[]> => {\n const typename = Type.getTypename(schema);\n\n // Find or create table and view.\n const views = await space.db.query(Filter.type(View.View)).run();\n const view = await findViewByTypeUri(views, Type.getURI(schema));\n const staticSchema = client\n ? client.graph.registry\n .list()\n .filter(Type.isType)\n .find((s) => Type.getTypename(s) === typename)\n : undefined;\n if (!view && !staticSchema) {\n await invokePromise(SpaceOperation.AddType, { type: schema, show: false }, { spaceId: space.id });\n }\n\n // Create objects.\n const generate = createAsyncGenerator(generator, schema, { db: space.db });\n return generate.createObjects(n);\n };\n};\n\nexport const staticGenerators = new Map<string, ObjectGenerator<any>>([\n [\n Type.getTypename(Markdown.Document),\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n return space.db.add(\n Markdown.make({\n name: random.commerce.productName(),\n content: random.lorem.sentences(5),\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n Type.getTypename(Drawing.Drawing),\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const obj = space.db.add(\n Drawing.make({\n name: random.commerce.productName(),\n canvas: Drawing.makeCanvas({ schema: Tldraw.TLDRAW_SCHEMA }),\n }),\n );\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n // TODO(burdon): Create unit tests.\n [\n Type.getTypename(Sheet.Sheet),\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const cells: Record<string, Sheet.CellValue> = {};\n const year = new Date().getFullYear();\n const cols = 4;\n const rows = 16;\n for (let col = 1; col <= cols; col++) {\n for (let row = 1; row <= rows; row++) {\n const cell = addressToA1Notation({ col, row });\n if (row === 1) {\n cells[cell] = { value: `${year} Q${col}` };\n } else if (row === rows) {\n const from = addressToA1Notation({ col, row: 2 });\n const to = addressToA1Notation({ col, row: rows - 1 });\n cells[cell] = { value: `=SUM(${from}:${to})` };\n } else if (row > 2 && row < rows - 1) {\n cells[cell] = { value: Math.floor(Math.random() * 10_000) };\n }\n }\n }\n\n // TODO(burdon): Set width.\n // TODO(burdon): Set formatting for columns.\n return space.db.add(\n Sheet.make({\n name: random.commerce.productName(),\n cells,\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n Type.getTypename(ComputeGraph),\n async (space, n, cb) => {\n const objects = range(n, () => {\n const model = ComputeGraphModel.create();\n model.createNode({ id: 'gpt-INPUT', type: NODE_INPUT });\n model.createNode({ id: 'gpt-GPT', type: 'gpt' });\n model.createNode({\n id: 'gpt-QUEUE_ID',\n type: 'constant',\n value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),\n });\n model.createNode({ id: 'gpt-APPEND', type: 'append' });\n model.createNode({ id: 'gpt-OUTPUT', type: NODE_OUTPUT });\n model.createEdge({ node: 'gpt-INPUT', property: 'prompt' }, { node: 'gpt-GPT', property: 'prompt' });\n model.createEdge({ node: 'gpt-GPT', property: 'text' }, { node: 'gpt-OUTPUT', property: 'text' });\n model.createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-APPEND', property: 'id' });\n model.createEdge({ node: 'gpt-GPT', property: 'messages' }, { node: 'gpt-APPEND', property: 'items' });\n model.createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-OUTPUT', property: 'queue' });\n\n return space.db.add(model.root);\n });\n cb?.(objects);\n return objects;\n },\n ],\n]);\n"],"mappings":"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"}
1
+ {"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/SchemaTable/SchemaTable.tsx","../../src/components/SpaceGenerator/presets.ts","../../src/components/SpaceGenerator/ObjectGenerator.tsx"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { Type } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport * as Button from '@dxos/react-ui/Button';\nimport * as Util from '@dxos/react-ui/Util';\nimport { mx } from '@dxos/ui-theme';\n\nexport type SchemaTableProps = Util.ThemedClassName<{\n types: any[];\n objects?: Record<string, number | undefined>;\n label: string;\n /** May be async — the row awaits it, so a generator's failure is reported rather than unowned. */\n onClick: (typename: string) => Promise<void> | void;\n}>;\n\n/**\n * Row display name: a preset descriptor may carry one, otherwise the key it is created by.\n *\n * The field is `presetLabel` rather than `name` because a class-based type entity already has a\n * `name` — its JS class name — so keying off that suppressed the count on every real type row.\n */\nconst rowName = (type: { presetLabel?: string }, typename: string | undefined): string =>\n (typeof type.presetLabel === 'string' ? type.presetLabel : undefined) ?? typename ?? '';\n\nexport const SchemaTable = ({ classNames, types, objects = {}, label, onClick }: SchemaTableProps) => {\n const [pending, setPending] = useState<string>();\n const handleClick = useCallback(\n async (typename: string) => {\n if (pending !== undefined) {\n return;\n }\n setPending(typename);\n try {\n await onClick(typename);\n } catch (err) {\n log.catch(err);\n } finally {\n setPending(undefined);\n }\n },\n [onClick, pending],\n );\n\n return (\n <div className={mx('grid grid-cols-[1fr_80px_40px] gap-1 overflow-none', classNames)}>\n <h2 className='p-2'>{label}</h2>\n {types.map((type) => {\n // Preset descriptors are plain `{ typename }` objects, while class-based type entities carry\n // no `typename` property — those resolve via `Type.getTypename`.\n const typename = typeof type.typename === 'string' ? type.typename : Type.getTypename(type);\n return (\n <div key={typename} className='grid grid-cols-subgrid col-span-3 items-center'>\n <div className='px-2 text-sm font-mono text-fg-subtle'>{rowName(type, typename)}</div>\n {/* A labelled row is a preset rather than a type, so it has no object count to show. */}\n <div className='px-2 text-right font-mono'>\n {typeof type.presetLabel === 'string' ? '—' : typename ? (objects[typename] ?? 0) : 0}\n </div>\n <Button.Root\n variant='ghost'\n icon={pending === typename ? 'ph--spinner--regular' : 'ph--plus--regular'}\n iconOnly\n disabled={pending !== undefined}\n label={`Create ${rowName(type, typename)}`}\n onClick={() => typename && void handleClick(typename)}\n />\n </div>\n );\n })}\n </div>\n );\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as AgentOperation from '@dxos/assistant-toolkit/AgentOperation';\nimport * as WebSearchSkill from '@dxos/assistant-toolkit/WebSearchSkill';\nimport * as Instructions from '@dxos/compute/Instructions';\nimport * as Operation from '@dxos/compute/Operation';\nimport * as Trigger from '@dxos/compute/Trigger';\nimport { type ComputeGraphModel, NODE_INPUT } from '@dxos/conductor';\nimport { Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Scope, Tag } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, EID } from '@dxos/keys';\nimport { Connection, Cursor } from '@dxos/link';\nimport * as Binding from '@dxos/plugin-connector/Binding';\nimport * as GoogleOperation from '@dxos/plugin-google/GoogleOperation';\nimport * as Mailbox from '@dxos/plugin-inbox/Mailbox';\nimport * as Markdown from '@dxos/plugin-markdown/Markdown';\nimport { type Space } from '@dxos/react-client/echo';\nimport {\n type ComputeShape,\n createAppend,\n createChat,\n createComputeGraph,\n createConstant,\n createFeed,\n createFunction,\n createGpt,\n createRandom,\n createSurface,\n createTemplate,\n createText,\n createTrigger,\n} from '@dxos/react-ui-canvas-compute';\nimport { CanvasBoard, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from '@dxos/react-ui-canvas-editor';\nimport { ViewModel } from '@dxos/schema';\nimport { Message, Organization, Person, Pipeline } from '@dxos/types';\nimport { range, trim } from '@dxos/util';\n\nimport { type ObjectGenerator } from './ObjectGenerator.tsx';\n\nexport enum PresetName {\n DXOS_TEAM = 'dxos-team',\n ORG_RESEARCH_PROJECT = 'org-research-project',\n // EMAIL_TABLE = 'email-table',\n GPT_QUEUE = 'webhook-gpt-queue',\n CHAT_GPT = 'chat-gpt-text',\n // EMAIL_WITH_SUMMARY = 'email-gptSummary-table',\n OBJECT_CHANGE_QUEUE = 'objectChange-queue',\n TIMER_TICK_QUEUE = 'timerTick-queue',\n FOREX_FUNCTION_CALL = 'forex-function-call',\n DISCORD_MESSAGES = 'discord-messages',\n // KANBAN_QUEUE = 'kanban-queue',\n}\n\nexport const generator = () => ({\n schemas: [CanvasBoard.CanvasBoard, Trigger.Trigger] as any[],\n types: Object.values(PresetName).map((name) => ({ typename: name })),\n items: [\n [\n PresetName.DXOS_TEAM,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const org = space.db.add(\n Obj.make(Organization.Organization, {\n name: 'DXOS',\n website: 'https://dxos.org',\n }),\n );\n const doc = space.db.add(\n Markdown.make({\n name: 'DXOS Research',\n content: 'DXOS builds Composer, an open-source AI-powered malleable application.',\n }),\n );\n\n const tag = space.db.add(Tag.make({ label: 'Investor' }));\n const tagRef = Ref.make(tag);\n Obj.update(doc, (doc) => {\n Obj.getMeta(doc).tags = [tagRef];\n });\n\n // space.db.add(\n // Relation.make(HasSubject, {\n // [Relation.Source]: doc,\n // [Relation.Target]: org,\n // completedAt: new Date().toISOString(),\n // }),\n // );\n\n space.db.add(\n Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagRef] }, fullName: 'Rich', organization: Ref.make(org) }),\n );\n space.db.add(\n Obj.make(Person.Person, {\n fullName: 'Josiah',\n organization: Ref.make(org),\n }),\n );\n space.db.add(\n Obj.make(Person.Person, {\n fullName: 'Dima',\n organization: Ref.make(org),\n }),\n );\n space.db.add(\n Obj.make(Person.Person, {\n fullName: 'Mykola',\n organization: Ref.make(org),\n }),\n );\n\n return doc;\n });\n cb?.(objects);\n return objects;\n },\n ],\n [\n PresetName.ORG_RESEARCH_PROJECT,\n async (space, n, cb) => {\n const mailboxes = await space.db.query(Filter.type(Mailbox.Mailbox)).run();\n const mailbox = mailboxes[0];\n invariant(mailbox, 'Mailbox not found');\n const mailboxFeed = await mailbox.feed?.tryLoad();\n invariant(mailboxFeed, 'Mailbox missing feed reference');\n const feedUri = Feed.getFeedUri(mailboxFeed);\n invariant(feedUri, 'Mailbox feed missing feed URI');\n const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();\n const tagUri = Obj.getURI(tag);\n\n // The sync operation is account-level: the trigger input names the connection that\n // authenticates the mailbox's binding, not the mailbox itself.\n const cursors = await space.db.query(Filter.type(Cursor.Cursor)).run();\n const binding = cursors.find(\n (cursor): cursor is Cursor.ExternalCursor => Cursor.isExternal(cursor) && Binding.targets(cursor, mailbox),\n );\n invariant(binding, 'Mailbox has no sync binding');\n // Matched by entity id (`Binding.isForConnection`), not by ref-prop equality — a raw filter\n // compares `echo:` URI spellings, which vary for one object and can never-match.\n const connections = await space.db.query(Filter.type(Connection.Connection)).run();\n const connection = connections.find((candidate) => Binding.isForConnection(binding, candidate));\n invariant(connection, 'Mailbox binding has no connection');\n\n const objects = range(n, () => {\n const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagUri));\n const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagUri));\n const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagUri));\n\n space.db.add(\n Trigger.make({\n enabled: true,\n spec: Trigger.specTimer('* * * * *'), // Every minute.\n runnable: Ref.make(Operation.serialize(GoogleOperation.GoogleMailSync)),\n input: {\n connection: Ref.make(connection),\n },\n }),\n );\n\n const researchPrompt = space.db.add(\n Instructions.make({\n name: 'Research',\n\n // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.\n // Remove the mock prompt to do the actual research.\n text: trim`\n Research the organization provided as input.\n Create a research note for it at the end.\n NOTE: Do mocked reseach (set mockSearch to true).\n `,\n skills: [Ref.make(WebSearchSkill.make())],\n }),\n );\n\n space.db.add(\n Trigger.make({\n enabled: true,\n spec: Trigger.specSubscription(organizationsQuery),\n runnable: Ref.make(Operation.serialize(AgentOperation.RunInstructions)),\n input: {\n instructions: Ref.make(researchPrompt),\n input: '{{event.subject}}',\n },\n }),\n );\n\n const mailboxView = ViewModel.make({\n query: Query.select(\n Filter.type(Message.Message, {\n properties: { labels: Filter.contains('investor') },\n }),\n ).from(Scope.feed(Obj.getURI(mailboxFeed))),\n jsonSchema: JsonSchema.toJsonSchema(Message.Message),\n });\n const contactsView = ViewModel.make({\n query: contactsQuery,\n jsonSchema: JsonSchema.toJsonSchema(Person.Person),\n });\n const organizationsView = ViewModel.make({\n query: organizationsQuery,\n jsonSchema: JsonSchema.toJsonSchema(Organization.Organization),\n });\n const notesView = ViewModel.make({\n query: notesQuery,\n jsonSchema: JsonSchema.toJsonSchema(Markdown.Document),\n });\n\n return space.db.add(\n Pipeline.make({\n name: 'Investor Research',\n columns: [\n {\n name: 'Mailbox',\n view: Ref.make(mailboxView),\n order: [],\n },\n {\n name: 'Contacts',\n view: Ref.make(contactsView),\n order: [],\n },\n {\n name: 'Organizations',\n view: Ref.make(organizationsView),\n order: [],\n },\n {\n name: 'Notes',\n view: Ref.make(notesView),\n order: [],\n },\n ],\n }),\n );\n });\n\n cb?.(objects.flat());\n return objects.flat();\n },\n ],\n [\n PresetName.GPT_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n let functionTrigger: Trigger.Trigger | undefined;\n {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const triggerShape = createTrigger({\n spaceId: space.id,\n triggerKind: 'webhook',\n ...position({ x: -18, y: -2 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));\n const { queueId } = setupQueue(space, canvasModel);\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n canvasModel.createEdge({\n source: trigger.id,\n target: gpt.id,\n input: 'prompt',\n output: 'bodyText',\n });\n\n canvasModel.createEdge({ source: gpt.id, target: text.id, output: 'text' });\n canvasModel.createEdge({\n source: queueId.id,\n target: append.id,\n input: 'id',\n });\n\n canvasModel.createEdge({\n source: gpt.id,\n target: append.id,\n output: 'messages',\n input: 'items',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.GPT_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.OBJECT_CHANGE_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const { canvasModel, computeModel } = createQueueSinkPreset(\n space,\n 'subscription',\n (triggerSpec) =>\n (triggerSpec.query = {\n ast: Query.select(Filter.type(DXN.make('org.dxos.type.chess'))).ast as Obj.Mutable<QueryAST.Query>,\n }),\n 'type',\n );\n return addToSpace(PresetName.OBJECT_CHANGE_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.TIMER_TICK_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const { canvasModel, computeModel } = createQueueSinkPreset(\n space,\n 'timer',\n (triggerSpec) => (triggerSpec.cron = '* * * * *'),\n 'result',\n );\n return addToSpace(PresetName.TIMER_TICK_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n // TODO(wittjosiah): Remove?\n // [\n // PresetName.EMAIL_TABLE,\n // async (space, n, cb) => {\n // const objects = range(n, () => {\n // const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n // const results = space.db.query(Filter.type(TableType)).runSync();\n // const emailTable = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Email'));\n // invariant(emailTable, 'Email table not found.');\n\n // const template = canvasModel.createNode(\n // createTemplate({\n // valueType: 'object',\n // ...rawPosition({ centerX: -80, centerY: -64, width: 320, height: 320 }),\n // }),\n // );\n // const templateContent = ['{'];\n\n // let functionTrigger: FunctionTrigger | undefined;\n // {\n // const triggerShape = createTrigger({\n // spaceId: space.id,\n // triggerKind: 'email',\n // ...position({ x: -18, y: -2 }),\n // });\n // const trigger = canvasModel.createNode(triggerShape);\n\n // const tableId = canvasModel.createNode(\n // createConstant({\n // value: DXN.fromLocalObjectId(emailTable.id).toString(),\n // ...position({ x: -18, y: 5, width: 8, height: 6 }),\n // }),\n // );\n\n // const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n // const properties = SchemaAST.getPropertySignatures(EmailTriggerOutput.ast);\n // for (let i = 0; i < properties.length; i++) {\n // const propName = properties[i].name.toString();\n // canvasModel.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });\n // templateContent.push(` \"${propName}\": \"{{${propName}}}\"` + (i === properties.length - 1 ? '' : ','));\n // }\n // templateContent.push('}\n\n // builder\n // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n // .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });\n\n // functionTrigger = triggerShape.functionTrigger!.target!;\n // });\n\n // const computeModel = createComputeGraph(canvasModel);\n\n // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n // invariant(templateComputeNode, 'Template compute node was not created.');\n // templateComputeNode.value = templateContent.join('\\n');\n // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);\n\n // attachTrigger(functionTrigger, computeModel);\n\n // return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);\n // });\n // cb?.(objects);\n // return objects;\n // },\n // ],\n\n [\n PresetName.CHAT_GPT,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const chat = canvasModel.createNode(createChat(position({ x: -18, y: -2 })));\n const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));\n const { queueId } = setupQueue(space, canvasModel);\n\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n canvasModel.createEdge({ source: chat.id, target: gpt.id, input: 'prompt' });\n canvasModel.createEdge({ source: gpt.id, target: text.id, output: 'text' });\n canvasModel.createEdge({\n source: queueId.id,\n target: append.id,\n input: 'id',\n });\n\n canvasModel.createEdge({\n source: gpt.id,\n target: append.id,\n output: 'messages',\n input: 'items',\n });\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.CHAT_GPT, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n // TODO(wittjosiah): Remove?\n // [\n // PresetName.EMAIL_WITH_SUMMARY,\n // async (space, n, cb) => {\n // const objects = range(n, () => {\n // const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n // const results = space.db.query(Filter.type(TableType)).runSync();\n // const emailTable = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Email'));\n // invariant(emailTable, 'Email table not found.');\n\n // const template = canvasModel.createNode(\n // createTemplate({\n // valueType: 'object',\n // ...rawPosition({ centerX: 192, centerY: -176, width: 320, height: 320 }),\n // }),\n // );\n // const templateContent = ['{'];\n\n // let functionTrigger: FunctionTrigger | undefined;\n // {\n // const gpt = canvasModel.createNode(\n // createGpt(rawPosition({ centerX: -400, centerY: -112, width: 256, height: 202 })),\n // );\n // const systemPrompt = canvasModel.createNode(\n // createConstant({\n // value: \"use one word to describe content category. don't write anything else\",\n // ...rawPosition({ centerX: -800, centerY: -160, width: 192, height: 128 }),\n // }),\n // );\n // const triggerShape = createTrigger({\n // spaceId: space.id,\n // triggerKind: 'email',\n // ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),\n // });\n // const trigger = canvasModel.createNode(triggerShape);\n\n // const { queueId } = setupQueue(space, canvasModel, {\n // idPosition: { centerX: -720, centerY: 224, width: 192, height: 256 },\n // queuePosition: { centerX: -144, centerY: 416, width: 320, height: 448 },\n // });\n // const appendToQueue = canvasModel.createNode(\n // createAppend(rawPosition({ centerX: -80, centerY: 96, width: 122, height: 128 })),\n // );\n\n // const tableId = canvasModel.createNode(\n // createConstant({\n // value: DXN.fromLocalObjectId(emailTable.id).toString(),\n // ...rawPosition({ centerX: -112, centerY: -544, width: 192, height: 256 }),\n // }),\n // );\n\n // const appendToTable = canvasModel.createNode(\n // createAppend(rawPosition({ centerX: 560, centerY: -416, width: 128, height: 122 })),\n // );\n\n // templateContent.push(' \"category\": \"{{text}}\",');\n // canvasModel.createEdge({ source: gpt.id, target: template.id, input: 'text', output: 'text' });\n\n // const properties = SchemaAST.getPropertySignatures(EmailTriggerOutput.ast);\n // for (let i = 0; i < properties.length; i++) {\n // const propName = properties[i].name.toString();\n // canvasModel.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });\n // templateContent.push(` \"${propName}\": \"{{${propName}}}\"` + (i === properties.length - 1 ? '' : ','));\n // }\n // templateContent.push('}\n\n // builder\n // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n // .createEdge({ source: queueId.id, target: appendToQueue.id, input: 'id' })\n // .createEdge({ source: gpt.id, target: appendToQueue.id, output: 'messages', input: 'items' })\n // .createEdge({ source: systemPrompt.id, target: gpt.id, input: 'systemPrompt' })\n // .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'body' })\n // .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });\n\n // functionTrigger = triggerShape.functionTrigger!.target!;\n // });\n\n // const computeModel = createComputeGraph(canvasModel);\n\n // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n // invariant(templateComputeNode, 'Template compute node was not created.');\n // templateComputeNode.value = templateContent.join('\\n');\n // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));\n // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);\n\n // attachTrigger(functionTrigger, computeModel);\n\n // return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);\n // });\n // cb?.(objects);\n // return objects;\n // },\n // ],\n\n [\n PresetName.FOREX_FUNCTION_CALL,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n {\n const sourceCurrency = canvasModel.createNode(\n createConstant({ value: 'USD', ...position({ x: -10, y: -5 }) }),\n );\n const targetCurrency = canvasModel.createNode(\n createConstant({ value: 'EUR', ...position({ x: -10, y: 5 }) }),\n );\n const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));\n const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));\n\n canvasModel.createEdge({\n source: sourceCurrency.id,\n target: converter.id,\n input: 'from',\n });\n\n canvasModel.createEdge({\n source: targetCurrency.id,\n target: converter.id,\n input: 'to',\n });\n\n canvasModel.createEdge({\n source: converter.id,\n target: view.id,\n output: 'rate',\n });\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.FOREX_FUNCTION_CALL, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.DISCORD_MESSAGES,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n let functionTrigger: Trigger.Trigger | undefined;\n {\n const triggerShape = createTrigger({\n spaceId: space.id,\n triggerKind: 'timer',\n ...position({ x: -10, y: -5 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n // DXOS dev-null channel.\n const channelId = canvasModel.createNode(\n createConstant({\n value: '1088569858767212554',\n ...position({ x: -10, y: 0 }),\n }),\n );\n const queueId = canvasModel.createNode(\n createConstant({\n value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),\n ...position({ x: -10, y: 5 }),\n }),\n );\n const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));\n const view = canvasModel.createNode(createText(position({ x: 12, y: 0 })));\n const queue = canvasModel.createNode(createFeed(position({ x: 0, y: 12 })));\n\n canvasModel.createEdge({\n source: trigger.id,\n target: converter.id,\n input: 'tick',\n });\n\n canvasModel.createEdge({\n source: channelId.id,\n target: converter.id,\n input: 'channelId',\n });\n\n canvasModel.createEdge({\n source: queueId.id,\n target: converter.id,\n input: 'queueId',\n });\n\n canvasModel.createEdge({\n source: converter.id,\n target: view.id,\n output: 'newMessages',\n });\n\n canvasModel.createEdge({\n source: queueId.id,\n target: queue.id,\n input: 'input',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n }\n\n const computeModel = createComputeGraph(canvasModel);\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.DISCORD_MESSAGES, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n // TODO(wittjosiah): Remove?\n // [\n // PresetName.KANBAN_QUEUE,\n // async (space, n, cb) => {\n // const objects = range(n, () => {\n // const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n // // TODO(wittjosiah): Integrate directly w/ Kanban.\n // // const results = space.db.query(Filter.type(KanbanType)).runSync();\n // // const kanban = results.find((r) => r.object?.cardView?.target?.query?.type?.endsWith('Message'));\n // // invariant(kanban, 'Kanban not found.');\n\n // const results = space.db.query(Filter.type(TableType)).runSync();\n // const messages = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Message'));\n // invariant(messages, 'Table not found.');\n\n // let functionTrigger: FunctionTrigger | undefined;\n // {\n // const triggerShape = createTrigger({\n // spaceId: space.id,\n // triggerKind: 'queue',\n // ...position({ x: -10, y: -5 }),\n // });\n // const trigger = canvasModel.createNode(triggerShape);\n\n // const tableId = canvasModel.createNode(\n // createConstant({\n // value: DXN.fromLocalObjectId(messages.id).toString(),\n // ...position({ x: -10, y: 5 }),\n // }),\n // );\n // const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 0 })));\n\n // builder\n // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n // .createEdge({ source: trigger.id, target: appendToTable.id, input: 'items', output: 'item' });\n\n // functionTrigger = triggerShape.functionTrigger!.target!;\n // }\n\n // const computeModel = createComputeGraph(canvasModel);\n // attachTrigger(functionTrigger, computeModel);\n\n // return addToSpace(PresetName.KANBAN_QUEUE, space, canvasModel, computeModel);\n // });\n // cb?.(objects);\n // return objects;\n // },\n // ],\n ] as [PresetName, ObjectGenerator<any>][],\n});\n\nconst createQueueSinkPreset = <SpecType extends Trigger.Kind>(\n space: Space,\n triggerKind: SpecType,\n initSpec: (spec: Obj.Mutable<Extract<Trigger.Spec, { kind: SpecType }>>) => void,\n triggerOutputName: string,\n) => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n const template = canvasModel.createNode(\n createTemplate({\n valueType: 'object',\n ...rawPosition({ centerX: -64, centerY: -79, width: 320, height: 320 }),\n }),\n );\n\n let functionTrigger: Trigger.Trigger | undefined;\n {\n const triggerShape = createTrigger({\n spaceId: space.id,\n triggerKind,\n ...rawPosition({ centerX: -578, centerY: -187, height: 320, width: 320 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n const { queueId } = setupQueue(space, canvasModel, {\n queuePosition: { centerX: -80, centerY: 378, width: 320, height: 448 },\n });\n const append = canvasModel.createNode(\n createAppend(rawPosition({ centerX: 320, centerY: 192, width: 128, height: 122 })),\n );\n const random = canvasModel.createNode(\n createRandom(rawPosition({ centerX: -509, centerY: -30, width: 64, height: 64 })),\n );\n\n canvasModel.createEdge({ source: queueId.id, target: append.id, input: 'id' });\n canvasModel.createEdge({ source: template.id, target: append.id, input: 'items' });\n canvasModel.createEdge({\n source: trigger.id,\n target: template.id,\n output: triggerOutputName,\n input: 'type',\n });\n\n canvasModel.createEdge({\n source: random.id,\n target: template.id,\n input: 'changeId',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n const triggerSpec = functionTrigger.spec;\n invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');\n Obj.update(functionTrigger, (functionTrigger) => {\n initSpec(functionTrigger.spec as any);\n });\n }\n\n const computeModel = createComputeGraph(canvasModel);\n\n const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n invariant(templateComputeNode, 'Template compute node was not created.');\n // NOTE: These are plain object mutations during model construction, not ECHO object mutations.\n templateComputeNode.value = ['{', ' \"@type\": \"{{type}}\",', ' \"id\": \"@{{changeId}}\"', '}'].join('\\n');\n templateComputeNode.inputSchema = JsonSchema.toJsonSchema(\n Schema.Struct({ type: Schema.String, changeId: Schema.String }),\n );\n attachTrigger(functionTrigger, computeModel);\n\n return { canvasModel, computeModel };\n};\n\nconst addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {\n return space.db.add(\n Obj.make(CanvasBoard.CanvasBoard, {\n name,\n computeGraph: Ref.make(compute.root),\n layout: canvas.graph,\n }),\n );\n};\n\nconst setupQueue = (\n space: Space,\n canvasModel: CanvasGraphModel,\n args?: { idPosition?: RawPositionInput; queuePosition?: RawPositionInput },\n) => {\n const queueId = canvasModel.createNode(\n createConstant({\n value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),\n ...(args?.idPosition ? rawPosition(args.idPosition) : position({ x: -18, y: 5, width: 8, height: 6 })),\n }),\n );\n const queue = canvasModel.createNode(\n createFeed(\n args?.queuePosition ? rawPosition(args.queuePosition) : position({ x: -3, y: 3, width: 14, height: 10 }),\n ),\n );\n canvasModel.createEdge({ source: queueId.id, target: queue.id });\n return { queue, queueId };\n};\n\nconst attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {\n invariant(functionTrigger);\n const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;\n Obj.update(functionTrigger, (functionTrigger) => {\n // TODO(wittjosiah): Widen Runnable union to include ComputeGraph and remove cast.\n functionTrigger.runnable = Ref.make(computeModel.root) as any;\n functionTrigger.inputNodeId = inputNode.id;\n });\n};\n\ntype RawPositionInput = {\n centerX: number;\n centerY: number;\n width: number;\n height: number;\n};\n\nconst rawPosition = (args: RawPositionInput) => {\n return {\n center: { x: args.centerX, y: args.centerY },\n size: { width: args.width, height: args.height },\n };\n};\n\nconst position = (rect: { x: number; y: number; width?: number; height?: number }) => {\n const snap = 32;\n const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });\n const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);\n if (width && height) {\n return {\n center: { x, y },\n size: width && height ? { width, height } : undefined,\n };\n } else {\n return { center: { x, y } };\n }\n};\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport type * as PluginManager from '@dxos/app-framework/PluginManager';\nimport { addressToA1Notation } from '@dxos/compute-hyperformula/types';\nimport * as Operation from '@dxos/compute/Operation';\nimport { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from '@dxos/conductor';\nimport { EID, Filter, Key, Type, View } from '@dxos/echo';\nimport * as EffectEx from '@dxos/effect/EffectEx';\nimport { OperationInvoker } from '@dxos/operation';\nimport * as Drawing from '@dxos/plugin-illustrator/Drawing';\nimport * as Markdown from '@dxos/plugin-markdown/Markdown';\nimport * as Sheet from '@dxos/plugin-sheet/Sheet';\nimport * as SpaceCapabilities from '@dxos/plugin-space/SpaceCapabilities';\nimport * as SpaceOperation from '@dxos/plugin-space/SpaceOperation';\nimport * as Tldraw from '@dxos/plugin-tldraw/Tldraw';\nimport { random } from '@dxos/random';\nimport { type Client } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\nimport { getTypeURIFromQuery } from '@dxos/schema';\nimport { type ValueGenerator, createAsyncGenerator } from '@dxos/schema/testing';\nimport { range } from '@dxos/util';\n\nconst generator: ValueGenerator = random as any;\n\nconst findViewByTypeUri = async (views: View.View[], typeUri: string) => {\n return views.find((view) => getTypeURIFromQuery(view.query.ast) === typeUri);\n};\n\nexport type ObjectGenerator<T> = (space: Space, n: number, cb?: (objects: T[]) => void) => Promise<T[]>;\n\nexport const createGenerator = <S extends Type.AnyObj>(\n client: Client,\n invoker: OperationInvoker.OperationInvoker,\n manager: PluginManager.PluginManager,\n schema: S,\n): ObjectGenerator<Type.InstanceType<S>> => {\n return async (space: Space, n: number): Promise<Type.InstanceType<S>[]> => {\n const typename = Type.getTypename(schema);\n\n // Find or create table and view.\n const views = await space.db.query(Filter.type(View.View)).run();\n const view = await findViewByTypeUri(views, Type.getURI(schema));\n const staticSchema = client\n ? client.graph.registry\n .list()\n .filter(Type.isType)\n .find((s) => Type.getTypename(s) === typename)\n : undefined;\n if (!view && !staticSchema) {\n const { data } = await invoker.invokePromise(\n SpaceOperation.AddType,\n { type: schema, show: false },\n { spaceId: space.id },\n );\n // The operation's process cannot see the managers, so the plugins (e.g. the table for the type) are told here.\n if (data && !data.notified) {\n await EffectEx.runAndForwardErrors(\n SpaceCapabilities.notifyTypeAdded(\n { plugins: manager, capabilities: manager.capabilities },\n { db: space.db, type: data.object, show: false },\n ).pipe(Effect.provideService(Operation.Service, invoker)),\n );\n }\n }\n\n // Create objects.\n const generate = createAsyncGenerator(generator, schema, { db: space.db });\n return generate.createObjects(n);\n };\n};\n\nexport const staticGenerators = new Map<string, ObjectGenerator<any>>([\n [\n Type.getTypename(Markdown.Document),\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n return space.db.add(\n Markdown.make({\n name: random.commerce.productName(),\n content: random.lorem.sentences(5),\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n Type.getTypename(Drawing.Drawing),\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const obj = space.db.add(\n Drawing.make({\n name: random.commerce.productName(),\n canvas: Drawing.makeCanvas({ schema: Tldraw.TLDRAW_SCHEMA }),\n }),\n );\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n // TODO(burdon): Create unit tests.\n [\n Type.getTypename(Sheet.Sheet),\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const cells: Record<string, Sheet.CellValue> = {};\n const year = new Date().getFullYear();\n const cols = 4;\n const rows = 16;\n for (let col = 1; col <= cols; col++) {\n for (let row = 1; row <= rows; row++) {\n const cell = addressToA1Notation({ col, row });\n if (row === 1) {\n cells[cell] = { value: `${year} Q${col}` };\n } else if (row === rows) {\n const from = addressToA1Notation({ col, row: 2 });\n const to = addressToA1Notation({ col, row: rows - 1 });\n cells[cell] = { value: `=SUM(${from}:${to})` };\n } else if (row > 2 && row < rows - 1) {\n cells[cell] = { value: Math.floor(Math.random() * 10_000) };\n }\n }\n }\n\n // TODO(burdon): Set width.\n // TODO(burdon): Set formatting for columns.\n return space.db.add(\n Sheet.make({\n name: random.commerce.productName(),\n cells,\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n Type.getTypename(ComputeGraph),\n async (space, n, cb) => {\n const objects = range(n, () => {\n const model = ComputeGraphModel.create();\n model.createNode({ id: 'gpt-INPUT', type: NODE_INPUT });\n model.createNode({ id: 'gpt-GPT', type: 'gpt' });\n model.createNode({\n id: 'gpt-QUEUE_ID',\n type: 'constant',\n value: EID.make({ spaceId: space.id, entityId: Key.EntityId.random() }),\n });\n model.createNode({ id: 'gpt-APPEND', type: 'append' });\n model.createNode({ id: 'gpt-OUTPUT', type: NODE_OUTPUT });\n model.createEdge({ node: 'gpt-INPUT', property: 'prompt' }, { node: 'gpt-GPT', property: 'prompt' });\n model.createEdge({ node: 'gpt-GPT', property: 'text' }, { node: 'gpt-OUTPUT', property: 'text' });\n model.createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-APPEND', property: 'id' });\n model.createEdge({ node: 'gpt-GPT', property: 'messages' }, { node: 'gpt-APPEND', property: 'items' });\n model.createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-OUTPUT', property: 'queue' });\n\n return space.db.add(model.root);\n });\n cb?.(objects);\n return objects;\n },\n ],\n]);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAM,WAAW,MAAgC,cAC9C,OAAO,KAAK,gBAAgB,WAAW,KAAK,cAAc,KAAA,MAAc,YAAY;AAEvF,IAAa,eAAe,EAAE,YAAY,OAAO,UAAU,CAAC,GAAG,OAAO,cAAgC;CACpG,MAAM,CAAC,SAAS,cAAc,SAAiB;CAC/C,MAAM,cAAc,YAClB,OAAO,aAAqB;EAC1B,IAAI,YAAY,KAAA,GACd;EAEF,WAAW,QAAQ;EACnB,IAAI;GACF,MAAM,QAAQ,QAAQ;EACxB,SAAS,KAAK;GACZ,IAAI,MAAM,KAAE,KAAA,GAAA;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA,KAAA;GAAA,CAAC;EACf,UAAU;GACR,WAAW,KAAA,CAAS;EACtB;CACF,GACA,CAAC,SAAS,OAAO,CACnB;CAEA,OACE,qBAAC,OAAD;EAAK,WAAW,GAAG,sDAAsD,UAAU;EAAnF,UAAA,CACE,oBAAC,MAAD;GAAI,WAAU;GAAO,UAAA;EAAU,CAAA,GAC9B,MAAM,KAAK,SAAS;GAGnB,MAAM,WAAW,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW,KAAK,YAAY,IAAI;GAC1F,OACE,qBAAC,OAAD;IAAoB,WAAU;IAA9B,UAAA;KACE,oBAAC,OAAD;MAAK,WAAU;MAAyC,UAAA,QAAQ,MAAM,QAAQ;KAAO,CAAA;KAErF,oBAAC,OAAD;MAAK,WAAU;MACZ,UAAA,OAAO,KAAK,gBAAgB,WAAW,MAAM,WAAY,QAAQ,aAAa,IAAK;KACjF,CAAA;KACL,oBAAC,OAAO,MAAR;MACE,SAAQ;MACR,MAAM,YAAY,WAAW,yBAAyB;MACtD,UAAA;MACA,UAAU,YAAY,KAAA;MACtB,OAAO,UAAU,QAAQ,MAAM,QAAQ;MACvC,eAAe,YAAY,KAAK,YAAY,QAAQ;KACrD,CAAA;IACE;GAdK,GAAA,QAcL;EAET,CAAC,CACE;;AAET;;;;AChCA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,eAAA;CACA,WAAA,0BAAA;CAEA,WAAA,eAAA;CACA,WAAA,cAAA;CAEA,WAAA,yBAAA;CACA,WAAA,sBAAA;CACA,WAAA,yBAAA;CACA,WAAA,sBAAA;;AAEF,EAAA,CAAA,CAAA;AAEA,IAAa,mBAAmB;CAC9B,SAAS,CAAC,YAAY,aAAa,QAAQ,OAAO;CAClD,OAAO,OAAO,OAAO,UAAU,CAAC,CAAC,KAAK,UAAU,EAAE,UAAU,KAAK,EAAE;CACnE,OAAO;EACL,CAAA,aAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,MAAM,MAAM,GAAG,IACnB,IAAI,KAAK,aAAa,cAAc;KAClC,MAAM;KACN,SAAS;IACX,CAAC,CACH;IACA,MAAM,MAAM,MAAM,GAAG,IACnB,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;IACX,CAAC,CACH;IAEA,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,KAAK,EAAE,OAAO,WAAW,CAAC,CAAC;IACxD,MAAM,SAAS,IAAI,KAAK,GAAG;IAC3B,IAAI,OAAO,MAAM,QAAQ;KACvB,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;IACjC,CAAC;IAUD,MAAM,GAAG,IACP,IAAI,KAAK,OAAO,QAAQ;MAAG,IAAI,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;KAAG,UAAU;KAAQ,cAAc,IAAI,KAAK,GAAG;IAAE,CAAC,CAC3G;IACA,MAAM,GAAG,IACP,IAAI,KAAK,OAAO,QAAQ;KACtB,UAAU;KACV,cAAc,IAAI,KAAK,GAAG;IAC5B,CAAC,CACH;IACA,MAAM,GAAG,IACP,IAAI,KAAK,OAAO,QAAQ;KACtB,UAAU;KACV,cAAc,IAAI,KAAK,GAAG;IAC5B,CAAC,CACH;IACA,MAAM,GAAG,IACP,IAAI,KAAK,OAAO,QAAQ;KACtB,UAAU;KACV,cAAc,IAAI,KAAK,GAAG;IAC5B,CAAC,CACH;IAEA,OAAO;GACT,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;EACA,CAAA,wBAEE,OAAO,OAAO,GAAG,OAAO;GAEtB,MAAM,WAAU,MADQ,MAAM,GAAG,MAAM,OAAO,KAAK,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,EAAA,CAC/C;GAC1B,UAAU,SAAS,qBAAkB;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA,KAAA;IAAA,GAAA,CAAA,WAAA,qBAAA;GAAA,CAAC;GACtC,MAAM,cAAc,MAAM,QAAQ,MAAM,QAAQ;GAChD,UAAU,aAAa,kCAA+B;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA,KAAA;IAAA,GAAA,CAAA,eAAA,kCAAA;GAAA,CAAC;GACvD,MAAM,UAAU,KAAK,WAAW,WAAW;GAC3C,UAAU,SAAS,iCAA8B;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA,KAAA;IAAA,GAAA,CAAA,WAAA,iCAAA;GAAA,CAAC;GAClD,MAAM,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,KAAK,IAAI,KAAK,EAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;GACpF,MAAM,SAAS,IAAI,OAAO,GAAG;GAK7B,MAAM,WAAU,MADM,MAAM,GAAG,MAAM,OAAO,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAA,CAC7C,MACrB,WAA4C,OAAO,WAAW,MAAM,KAAK,QAAQ,QAAQ,QAAQ,OAAO,CAC3G;GACA,UAAU,SAAS,+BAA4B;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA,KAAA;IAAA,GAAA,CAAA,WAAA,+BAAA;GAAA,CAAC;GAIhD,MAAM,cAAa,MADO,MAAM,GAAG,MAAM,OAAO,KAAK,WAAW,UAAU,CAAC,CAAC,CAAC,IAAI,EAAA,CAClD,MAAM,cAAc,QAAQ,gBAAgB,SAAS,SAAS,CAAC;GAC9F,UAAU,YAAY,qCAAkC;IAAA,YAAA;IAAA,GAAA;IAAA,GAAA;IAAA,GAAA,KAAA;IAAA,GAAA,CAAA,cAAA,qCAAA;GAAA,CAAC;GAEzD,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,gBAAgB,MAAM,OAAO,OAAO,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,IAAI,MAAM,CAAC;IACxF,MAAM,qBAAqB,MAAM,OAAO,OAAO,KAAK,aAAa,YAAY,CAAC,CAAC,CAAC,OAAO,OAAO,IAAI,MAAM,CAAC;IACzG,MAAM,aAAa,MAAM,OAAO,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,IAAI,MAAM,CAAC;IAEzF,MAAM,GAAG,IACP,QAAQ,KAAK;KACX,SAAS;KACT,MAAM,QAAQ,UAAU,WAAW;KACnC,UAAU,IAAI,KAAK,UAAU,UAAU,gBAAgB,cAAc,CAAC;KACtE,OAAO,EACL,YAAY,IAAI,KAAK,UAAU,EACjC;IACF,CAAC,CACH;IAEA,MAAM,iBAAiB,MAAM,GAAG,IAC9B,aAAa,KAAK;KAChB,MAAM;KAIN,MAAM,IAAI;;;;;KAKV,QAAQ,CAAC,IAAI,KAAK,eAAe,KAAK,CAAC,CAAC;IAC1C,CAAC,CACH;IAEA,MAAM,GAAG,IACP,QAAQ,KAAK;KACX,SAAS;KACT,MAAM,QAAQ,iBAAiB,kBAAkB;KACjD,UAAU,IAAI,KAAK,UAAU,UAAU,eAAe,eAAe,CAAC;KACtE,OAAO;MACL,cAAc,IAAI,KAAK,cAAc;MACrC,OAAO;KACT;IACF,CAAC,CACH;IAEA,MAAM,cAAc,UAAU,KAAK;KACjC,OAAO,MAAM,OACX,OAAO,KAAK,QAAQ,SAAS,EAC3B,YAAY,EAAE,QAAQ,OAAO,SAAS,UAAU,EAAE,EACpD,CAAC,CACH,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,OAAO,WAAW,CAAC,CAAC;KAC1C,YAAY,WAAW,aAAa,QAAQ,OAAO;IACrD,CAAC;IACD,MAAM,eAAe,UAAU,KAAK;KAClC,OAAO;KACP,YAAY,WAAW,aAAa,OAAO,MAAM;IACnD,CAAC;IACD,MAAM,oBAAoB,UAAU,KAAK;KACvC,OAAO;KACP,YAAY,WAAW,aAAa,aAAa,YAAY;IAC/D,CAAC;IACD,MAAM,YAAY,UAAU,KAAK;KAC/B,OAAO;KACP,YAAY,WAAW,aAAa,SAAS,QAAQ;IACvD,CAAC;IAED,OAAO,MAAM,GAAG,IACd,SAAS,KAAK;KACZ,MAAM;KACN,SAAS;MACP;OACE,MAAM;OACN,MAAM,IAAI,KAAK,WAAW;OAC1B,OAAO,CAAC;MACV;MACA;OACE,MAAM;OACN,MAAM,IAAI,KAAK,YAAY;OAC3B,OAAO,CAAC;MACV;MACA;OACE,MAAM;OACN,MAAM,IAAI,KAAK,iBAAiB;OAChC,OAAO,CAAC;MACV;MACA;OACE,MAAM;OACN,MAAM,IAAI,KAAK,SAAS;OACxB,OAAO,CAAC;MACV;KACF;IACF,CAAC,CACH;GACF,CAAC;GAED,KAAK,QAAQ,KAAK,CAAC;GACnB,OAAO,QAAQ,KAAK;EACtB,CACF;EACA,CAAA,qBAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,cAAc,iBAAiB,OAAqB;IAE1D,IAAI;IACJ;KACE,MAAM,MAAM,YAAY,WAAW,UAAU,SAAS;MAAE,GAAG;MAAG,GAAG;KAAI,CAAC,CAAC,CAAC;KACxE,MAAM,eAAe,cAAc;MACjC,SAAS,MAAM;MACf,aAAa;MACb,GAAG,SAAS;OAAE,GAAG;OAAK,GAAG;MAAG,CAAC;KAC/B,CAAC;KACD,MAAM,UAAU,YAAY,WAAW,YAAY;KACnD,MAAM,OAAO,YAAY,WAAW,WAAW,SAAS;MAAE,GAAG;MAAI,GAAG;MAAG,OAAO;MAAI,QAAQ;KAAG,CAAC,CAAC,CAAC;KAChG,MAAM,EAAE,YAAY,WAAW,OAAO,WAAW;KACjD,MAAM,SAAS,YAAY,WAAW,aAAa,SAAS;MAAE,GAAG;MAAI,GAAG;KAAE,CAAC,CAAC,CAAC;KAE7E,YAAY,WAAW;MACrB,QAAQ,QAAQ;MAChB,QAAQ,IAAI;MACZ,OAAO;MACP,QAAQ;KACV,CAAC;KAED,YAAY,WAAW;MAAE,QAAQ,IAAI;MAAI,QAAQ,KAAK;MAAI,QAAQ;KAAO,CAAC;KAC1E,YAAY,WAAW;MACrB,QAAQ,QAAQ;MAChB,QAAQ,OAAO;MACf,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,IAAI;MACZ,QAAQ,OAAO;MACf,QAAQ;MACR,OAAO;KACT,CAAC;KAED,kBAAkB,aAAa,gBAAiB;IAClD;IAEA,MAAM,eAAe,mBAAmB,WAAW;IAEnD,cAAc,iBAAiB,YAAY;IAE3C,OAAO,WAAA,qBAAiC,OAAO,aAAa,YAAY;GAC1E,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;EAEA,CAAA,sBAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,EAAE,aAAa,iBAAiB,sBACpC,OACA,iBACC,gBACE,YAAY,QAAQ,EACnB,KAAK,MAAM,OAAO,OAAO,KAAK,MAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAClE,GACF,MACF;IACA,OAAO,WAAA,sBAA2C,OAAO,aAAa,YAAY;GACpF,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;EAEA,CAAA,mBAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,EAAE,aAAa,iBAAiB,sBACpC,OACA,UACC,gBAAiB,YAAY,OAAO,aACrC,QACF;IACA,OAAO,WAAA,mBAAwC,OAAO,aAAa,YAAY;GACjF,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;EAsEA,CAAA,iBAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,cAAc,iBAAiB,OAAqB;IAE1D;KACE,MAAM,MAAM,YAAY,WAAW,UAAU,SAAS;MAAE,GAAG;MAAG,GAAG;KAAI,CAAC,CAAC,CAAC;KACxE,MAAM,OAAO,YAAY,WAAW,WAAW,SAAS;MAAE,GAAG;MAAK,GAAG;KAAG,CAAC,CAAC,CAAC;KAC3E,MAAM,OAAO,YAAY,WAAW,WAAW,SAAS;MAAE,GAAG;MAAI,GAAG;MAAG,OAAO;MAAI,QAAQ;KAAG,CAAC,CAAC,CAAC;KAChG,MAAM,EAAE,YAAY,WAAW,OAAO,WAAW;KAEjD,MAAM,SAAS,YAAY,WAAW,aAAa,SAAS;MAAE,GAAG;MAAI,GAAG;KAAE,CAAC,CAAC,CAAC;KAE7E,YAAY,WAAW;MAAE,QAAQ,KAAK;MAAI,QAAQ,IAAI;MAAI,OAAO;KAAS,CAAC;KAC3E,YAAY,WAAW;MAAE,QAAQ,IAAI;MAAI,QAAQ,KAAK;MAAI,QAAQ;KAAO,CAAC;KAC1E,YAAY,WAAW;MACrB,QAAQ,QAAQ;MAChB,QAAQ,OAAO;MACf,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,IAAI;MACZ,QAAQ,OAAO;MACf,QAAQ;MACR,OAAO;KACT,CAAC;IACH;IAIA,OAAO,WAAA,iBAAgC,OAAO,aAFzB,mBAAmB,WAEmB,CAAY;GACzE,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;EAiGA,CAAA,uBAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,cAAc,iBAAiB,OAAqB;IAE1D;KACE,MAAM,iBAAiB,YAAY,WACjC,eAAe;MAAE,OAAO;MAAO,GAAG,SAAS;OAAE,GAAG;OAAK,GAAG;MAAG,CAAC;KAAE,CAAC,CACjE;KACA,MAAM,iBAAiB,YAAY,WACjC,eAAe;MAAE,OAAO;MAAO,GAAG,SAAS;OAAE,GAAG;OAAK,GAAG;MAAE,CAAC;KAAE,CAAC,CAChE;KACA,MAAM,YAAY,YAAY,WAAW,eAAe,SAAS;MAAE,GAAG;MAAG,GAAG;KAAE,CAAC,CAAC,CAAC;KACjF,MAAM,OAAO,YAAY,WAAW,cAAc,SAAS;MAAE,GAAG;MAAI,GAAG;KAAE,CAAC,CAAC,CAAC;KAE5E,YAAY,WAAW;MACrB,QAAQ,eAAe;MACvB,QAAQ,UAAU;MAClB,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,eAAe;MACvB,QAAQ,UAAU;MAClB,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,UAAU;MAClB,QAAQ,KAAK;MACb,QAAQ;KACV,CAAC;IACH;IAIA,OAAO,WAAA,uBAA2C,OAAO,aAFpC,mBAAmB,WAE8B,CAAY;GACpF,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;EAEA,CAAA,oBAEE,OAAO,OAAO,GAAG,OAAO;GACtB,MAAM,UAAU,MAAM,SAAS;IAC7B,MAAM,cAAc,iBAAiB,OAAqB;IAE1D,IAAI;IACJ;KACE,MAAM,eAAe,cAAc;MACjC,SAAS,MAAM;MACf,aAAa;MACb,GAAG,SAAS;OAAE,GAAG;OAAK,GAAG;MAAG,CAAC;KAC/B,CAAC;KACD,MAAM,UAAU,YAAY,WAAW,YAAY;KAEnD,MAAM,YAAY,YAAY,WAC5B,eAAe;MACb,OAAO;MACP,GAAG,SAAS;OAAE,GAAG;OAAK,GAAG;MAAE,CAAC;KAC9B,CAAC,CACH;KACA,MAAM,UAAU,YAAY,WAC1B,eAAe;MACb,OAAO,MAAI,KAAK;OAAE,SAAS,MAAM;OAAI,UAAU,IAAI,SAAS,OAAO;MAAE,CAAC;MACtE,GAAG,SAAS;OAAE,GAAG;OAAK,GAAG;MAAE,CAAC;KAC9B,CAAC,CACH;KACA,MAAM,YAAY,YAAY,WAAW,eAAe,SAAS;MAAE,GAAG;MAAG,GAAG;KAAE,CAAC,CAAC,CAAC;KACjF,MAAM,OAAO,YAAY,WAAW,WAAW,SAAS;MAAE,GAAG;MAAI,GAAG;KAAE,CAAC,CAAC,CAAC;KACzE,MAAM,QAAQ,YAAY,WAAW,WAAW,SAAS;MAAE,GAAG;MAAG,GAAG;KAAG,CAAC,CAAC,CAAC;KAE1E,YAAY,WAAW;MACrB,QAAQ,QAAQ;MAChB,QAAQ,UAAU;MAClB,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,UAAU;MAClB,QAAQ,UAAU;MAClB,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,QAAQ;MAChB,QAAQ,UAAU;MAClB,OAAO;KACT,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,UAAU;MAClB,QAAQ,KAAK;MACb,QAAQ;KACV,CAAC;KAED,YAAY,WAAW;MACrB,QAAQ,QAAQ;MAChB,QAAQ,MAAM;MACd,OAAO;KACT,CAAC;KAED,kBAAkB,aAAa,gBAAiB;IAClD;IAEA,MAAM,eAAe,mBAAmB,WAAW;IACnD,cAAc,iBAAiB,YAAY;IAE3C,OAAO,WAAA,oBAAwC,OAAO,aAAa,YAAY;GACjF,CAAC;GACD,KAAK,OAAO;GACZ,OAAO;EACT,CACF;CAmDF;AACF;AAEA,IAAM,yBACJ,OACA,aACA,UACA,sBACG;CACH,MAAM,cAAc,iBAAiB,OAAqB;CAE1D,MAAM,WAAW,YAAY,WAC3B,eAAe;EACb,WAAW;EACX,GAAG,YAAY;GAAE,SAAS;GAAK,SAAS;GAAK,OAAO;GAAK,QAAQ;EAAI,CAAC;CACxE,CAAC,CACH;CAEA,IAAI;CACJ;EACE,MAAM,eAAe,cAAc;GACjC,SAAS,MAAM;GACf;GACA,GAAG,YAAY;IAAE,SAAS;IAAM,SAAS;IAAM,QAAQ;IAAK,OAAO;GAAI,CAAC;EAC1E,CAAC;EACD,MAAM,UAAU,YAAY,WAAW,YAAY;EACnD,MAAM,EAAE,YAAY,WAAW,OAAO,aAAa,EACjD,eAAe;GAAE,SAAS;GAAK,SAAS;GAAK,OAAO;GAAK,QAAQ;EAAI,EACvE,CAAC;EACD,MAAM,SAAS,YAAY,WACzB,aAAa,YAAY;GAAE,SAAS;GAAK,SAAS;GAAK,OAAO;GAAK,QAAQ;EAAI,CAAC,CAAC,CACnF;EACA,MAAM,SAAS,YAAY,WACzB,aAAa,YAAY;GAAE,SAAS;GAAM,SAAS;GAAK,OAAO;GAAI,QAAQ;EAAG,CAAC,CAAC,CAClF;EAEA,YAAY,WAAW;GAAE,QAAQ,QAAQ;GAAI,QAAQ,OAAO;GAAI,OAAO;EAAK,CAAC;EAC7E,YAAY,WAAW;GAAE,QAAQ,SAAS;GAAI,QAAQ,OAAO;GAAI,OAAO;EAAQ,CAAC;EACjF,YAAY,WAAW;GACrB,QAAQ,QAAQ;GAChB,QAAQ,SAAS;GACjB,QAAQ;GACR,OAAO;EACT,CAAC;EAED,YAAY,WAAW;GACrB,QAAQ,OAAO;GACf,QAAQ,SAAS;GACjB,OAAO;EACT,CAAC;EAED,kBAAkB,aAAa,gBAAiB;EAChD,MAAM,cAAc,gBAAgB;EACpC,UAAU,eAAe,YAAY,SAAS,aAAa,oBAAiB;GAAA,YAAA;GAAA,GAAA;GAAA,GAAA;GAAA,GAAA,KAAA;GAAA,GAAA,CAAA,mDAAA,oBAAA;EAAA,CAAC;EAC7E,IAAI,OAAO,kBAAkB,oBAAoB;GAC/C,SAAS,gBAAgB,IAAW;EACtC,CAAC;CACH;CAEA,MAAM,eAAe,mBAAmB,WAAW;CAEnD,MAAM,sBAAsB,aAAa,MAAM,MAAM,MAAM,EAAE,OAAO,SAAS,IAAI;CACjF,UAAU,qBAAqB,0CAAuC;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA,KAAA;EAAA,GAAA,CAAA,uBAAA,0CAAA;CAAA,CAAC;CAEvE,oBAAoB,QAAQ;EAAC;EAAK;EAA0B;EAA2B;CAAG,CAAC,CAAC,KAAK,IAAI;CACrG,oBAAoB,cAAc,WAAW,aAC3C,OAAO,OAAO;EAAE,MAAM,OAAO;EAAQ,UAAU,OAAO;CAAO,CAAC,CAChE;CACA,cAAc,iBAAiB,YAAY;CAE3C,OAAO;EAAE;EAAa;CAAa;AACrC;AAEA,IAAM,cAAc,MAAc,OAAc,QAA0B,YAA+B;CACvG,OAAO,MAAM,GAAG,IACd,IAAI,KAAK,YAAY,aAAa;EAChC;EACA,cAAc,IAAI,KAAK,QAAQ,IAAI;EACnC,QAAQ,OAAO;CACjB,CAAC,CACH;AACF;AAEA,IAAM,cACJ,OACA,aACA,SACG;CACH,MAAM,UAAU,YAAY,WAC1B,eAAe;EACb,OAAO,MAAI,KAAK;GAAE,SAAS,MAAM;GAAI,UAAU,IAAI,SAAS,OAAO;EAAE,CAAC;EACtE,GAAI,MAAM,aAAa,YAAY,KAAK,UAAU,IAAI,SAAS;GAAE,GAAG;GAAK,GAAG;GAAG,OAAO;GAAG,QAAQ;EAAE,CAAC;CACtG,CAAC,CACH;CACA,MAAM,QAAQ,YAAY,WACxB,WACE,MAAM,gBAAgB,YAAY,KAAK,aAAa,IAAI,SAAS;EAAE,GAAG;EAAI,GAAG;EAAG,OAAO;EAAI,QAAQ;CAAG,CAAC,CACzG,CACF;CACA,YAAY,WAAW;EAAE,QAAQ,QAAQ;EAAI,QAAQ,MAAM;CAAG,CAAC;CAC/D,OAAO;EAAE;EAAO;CAAQ;AAC1B;AAEA,IAAM,iBAAiB,iBAA8C,iBAAoC;CACvG,UAAU,iBAAc,KAAA,GAAA;EAAA,YAAA;EAAA,GAAA;EAAA,GAAA;EAAA,GAAA,KAAA;EAAA,GAAA,CAAA,mBAAA,EAAA;CAAA,CAAC;CACzB,MAAM,YAAY,aAAa,MAAM,MAAM,SAAS,KAAK,SAAS,UAAU;CAC5E,IAAI,OAAO,kBAAkB,oBAAoB;EAE/C,gBAAgB,WAAW,IAAI,KAAK,aAAa,IAAI;EACrD,gBAAgB,cAAc,UAAU;CAC1C,CAAC;AACH;AASA,IAAM,eAAe,SAA2B;CAC9C,OAAO;EACL,QAAQ;GAAE,GAAG,KAAK;GAAS,GAAG,KAAK;EAAQ;EAC3C,MAAM;GAAE,OAAO,KAAK;GAAO,QAAQ,KAAK;EAAO;CACjD;AACF;AAEA,IAAM,YAAY,SAAoE;CACpF,MAAM,OAAO;CACb,MAAM,CAAC,QAAQ,QAAQ,aAAa;EAAE,OAAO;EAAG,QAAQ;EAAG,GAAG;CAAK,CAAC;CACpE,MAAM,EAAE,GAAG,GAAG,OAAO,WAAW,aAAa,CAAC,cAAc,QAAQ,IAAI,GAAG,cAAc,MAAM,IAAI,CAAC,CAAC;CACrG,IAAI,SAAS,QACX,OAAO;EACL,QAAQ;GAAE;GAAG;EAAE;EACf,MAAM,SAAS,SAAS;GAAE;GAAO;EAAO,IAAI,KAAA;CAC9C;MAEA,OAAO,EAAE,QAAQ;EAAE;EAAG;CAAE,EAAE;AAE9B;;;AChzBA,IAAM,cAA4B;AAElC,IAAM,oBAAoB,OAAO,OAAoB,YAAoB;CACvE,OAAO,MAAM,MAAM,SAAS,oBAAoB,KAAK,MAAM,GAAG,MAAM,OAAO;AAC7E;AAIA,IAAa,mBACX,QACA,SACA,SACA,WAC0C;CAC1C,OAAO,OAAO,OAAc,MAA+C;EACzE,MAAM,WAAW,KAAK,YAAY,MAAM;EAIxC,MAAM,OAAO,MAAM,kBAAkB,MADjB,MAAM,GAAG,MAAM,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GACnB,KAAK,OAAO,MAAM,CAAC;EAC/D,MAAM,eAAe,SACjB,OAAO,MAAM,SACV,KAAK,CAAA,CACL,OAAO,KAAK,MAAM,CAAA,CAClB,MAAM,MAAM,KAAK,YAAY,CAAC,MAAM,QAAQ,IAC/C,KAAA;EACJ,IAAI,CAAC,QAAQ,CAAC,cAAc;GAC1B,MAAM,EAAE,SAAS,MAAM,QAAQ,cAC7B,eAAe,SACf;IAAE,MAAM;IAAQ,MAAM;GAAM,GAC5B,EAAE,SAAS,MAAM,GAAG,CACtB;GAEA,IAAI,QAAQ,CAAC,KAAK,UAChB,MAAM,SAAS,oBACb,kBAAkB,gBAChB;IAAE,SAAS;IAAS,cAAc,QAAQ;GAAa,GACvD;IAAE,IAAI,MAAM;IAAI,MAAM,KAAK;IAAQ,MAAM;GAAM,CACjD,CAAC,CAAC,KAAK,OAAO,eAAe,UAAU,SAAS,OAAO,CAAC,CAC1D;EAEJ;EAIA,OADiB,qBAAqB,aAAW,QAAQ,EAAE,IAAI,MAAM,GAAG,CACjE,CAAA,CAAS,cAAc,CAAC;CACjC;AACF;AAEA,IAAa,mCAAmB,IAAI,IAAkC;CACpE,CACE,KAAK,YAAY,SAAS,QAAQ,GAClC,OAAO,OAAO,GAAG,OAAO;EACtB,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,UAAU;GACjC,OAAO,MAAM,GAAG,IACd,SAAS,KAAK;IACZ,MAAM,OAAO,SAAS,YAAY;IAClC,SAAS,OAAO,MAAM,UAAU,CAAC;GACnC,CAAC,CACH;EACF,CAAC;EAED,KAAK,OAAO;EACZ,OAAO;CACT,CACF;CACA,CACE,KAAK,YAAY,QAAQ,OAAO,GAChC,OAAO,OAAO,GAAG,OAAO;EACtB,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,UAAU;GAOjC,OANY,MAAM,GAAG,IACnB,QAAQ,KAAK;IACX,MAAM,OAAO,SAAS,YAAY;IAClC,QAAQ,QAAQ,WAAW,EAAE,QAAQ,OAAO,cAAc,CAAC;GAC7D,CAAC,CAEI;EACT,CAAC;EAED,KAAK,OAAO;EACZ,OAAO;CACT,CACF;CAEA,CACE,KAAK,YAAY,MAAM,KAAK,GAC5B,OAAO,OAAO,GAAG,OAAO;EACtB,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,UAAU;GACjC,MAAM,QAAyC,CAAC;GAChD,MAAM,wBAAO,IAAI,KAAK,EAAA,CAAE,YAAY;GACpC,MAAM,OAAO;GACb,MAAM,OAAO;GACb,KAAK,IAAI,MAAM,GAAG,OAAO,MAAM,OAC7B,KAAK,IAAI,MAAM,GAAG,OAAO,MAAM,OAAO;IACpC,MAAM,OAAO,oBAAoB;KAAE;KAAK;IAAI,CAAC;IAC7C,IAAI,QAAQ,GACV,MAAM,QAAQ,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;SACpC,IAAI,QAAQ,MAGjB,MAAM,QAAQ,EAAE,OAAO,QAFV,oBAAoB;KAAE;KAAK,KAAK;IAAE,CAEhB,EAAK,GADzB,oBAAoB;KAAE;KAAK,KAAK;IAAS,CACb,EAAG,GAAG;SACxC,IAAI,MAAM,KAAK,MAAM,IAC1B,MAAM,QAAQ,EAAE,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,GAAM,EAAE;GAE9D;GAKF,OAAO,MAAM,GAAG,IACd,MAAM,KAAK;IACT,MAAM,OAAO,SAAS,YAAY;IAClC;GACF,CAAC,CACH;EACF,CAAC;EAED,KAAK,OAAO;EACZ,OAAO;CACT,CACF;CACA,CACE,KAAK,YAAY,YAAY,GAC7B,OAAO,OAAO,GAAG,OAAO;EACtB,MAAM,UAAU,MAAM,SAAS;GAC7B,MAAM,QAAQ,kBAAkB,OAAO;GACvC,MAAM,WAAW;IAAE,IAAI;IAAa,MAAM;GAAW,CAAC;GACtD,MAAM,WAAW;IAAE,IAAI;IAAW,MAAM;GAAM,CAAC;GAC/C,MAAM,WAAW;IACf,IAAI;IACJ,MAAM;IACN,OAAO,IAAI,KAAK;KAAE,SAAS,MAAM;KAAI,UAAU,IAAI,SAAS,OAAO;IAAE,CAAC;GACxE,CAAC;GACD,MAAM,WAAW;IAAE,IAAI;IAAc,MAAM;GAAS,CAAC;GACrD,MAAM,WAAW;IAAE,IAAI;IAAc,MAAM;GAAY,CAAC;GACxD,MAAM,WAAW;IAAE,MAAM;IAAa,UAAU;GAAS,GAAG;IAAE,MAAM;IAAW,UAAU;GAAS,CAAC;GACnG,MAAM,WAAW;IAAE,MAAM;IAAW,UAAU;GAAO,GAAG;IAAE,MAAM;IAAc,UAAU;GAAO,CAAC;GAChG,MAAM,WAAW;IAAE,MAAM;IAAgB,UAAU;GAAe,GAAG;IAAE,MAAM;IAAc,UAAU;GAAK,CAAC;GAC3G,MAAM,WAAW;IAAE,MAAM;IAAW,UAAU;GAAW,GAAG;IAAE,MAAM;IAAc,UAAU;GAAQ,CAAC;GACrG,MAAM,WAAW;IAAE,MAAM;IAAgB,UAAU;GAAe,GAAG;IAAE,MAAM;IAAc,UAAU;GAAQ,CAAC;GAE9G,OAAO,MAAM,GAAG,IAAI,MAAM,IAAI;EAChC,CAAC;EACD,KAAK,OAAO;EACZ,OAAO;CACT,CACF;AACF,CAAC"}
@@ -1,14 +1,17 @@
1
1
  import { lazy } from "react";
2
2
  //#region src/containers/index.ts
3
+ var DebugConsole = lazy(() => import("./chunk-DebugConsole.mjs").then((module) => ({ default: module.DebugConsole })));
3
4
  var DebugObjectPanel = lazy(() => import("./chunk-DebugObjectPanel.mjs"));
4
5
  var DebugSettings = lazy(() => import("./chunk-DebugSettings.mjs"));
5
6
  var DebugSpaceObjectsPanel = lazy(() => import("./chunk-DebugSpaceObjectsPanel.mjs"));
7
+ var DebugPanelDrawer = lazy(() => import("./chunk-DebugPanelDrawer.mjs").then((module) => ({ default: module.DebugPanelDrawer })));
8
+ var DebugPanelStatus = lazy(() => import("./chunk-DebugPanelStatus.mjs").then((module) => ({ default: module.DebugPanelStatus })));
6
9
  var DebugStatus = lazy(() => import("./chunk-DebugStatus.mjs"));
7
- var LogStatus = lazy(() => import("./chunk-LogStatus.mjs").then((module) => ({ default: module.LogStatus })));
10
+ var LoggerPanel = lazy(() => import("./chunk-LoggerPanel.mjs").then((module) => ({ default: module.LoggerPanel })));
8
11
  var SpaceGenerator = lazy(() => import("./chunk-SpaceGenerator.mjs"));
9
12
  var Wireframe = lazy(() => import("./chunk-Wireframe.mjs"));
10
13
  var StatsPanel = lazy(() => import("./chunk-StatsPanel.mjs").then((module) => ({ default: module.StatsPanel })));
11
14
  //#endregion
12
- export { DebugObjectPanel, DebugSettings, DebugSpaceObjectsPanel, DebugStatus, LogStatus, SpaceGenerator, StatsPanel, Wireframe };
15
+ export { DebugConsole, DebugObjectPanel, DebugPanelDrawer, DebugPanelStatus, DebugSettings, DebugSpaceObjectsPanel, DebugStatus, LoggerPanel, SpaceGenerator, StatsPanel, Wireframe };
13
16
 
14
17
  //# sourceMappingURL=containers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/index.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const DebugObjectPanel: ComponentType<any> = lazy(() => import('./DebugObjectPanel'));\nexport const DebugSettings: ComponentType<any> = lazy(() => import('./DebugSettings'));\nexport const DebugSpaceObjectsPanel: ComponentType<any> = lazy(() => import('./DebugSpaceObjectsPanel'));\nexport const DebugStatus: ComponentType<any> = lazy(() => import('./DebugStatus'));\nexport const LogStatus: ComponentType<any> = lazy(() =>\n import('./LogStatus').then((module) => ({ default: module.LogStatus })),\n);\nexport const SpaceGenerator: ComponentType<any> = lazy(() => import('./SpaceGenerator'));\nexport const Wireframe: ComponentType<any> = lazy(() => import('./Wireframe'));\nexport const StatsPanel: ComponentType<any> = lazy(() =>\n import('./StatsPanel').then((module) => ({ default: module.StatsPanel })),\n);\n"],"mappings":";;AAMA,IAAa,mBAAuC,WAAW,OAAO,+BAAqB;AAC3F,IAAa,gBAAoC,WAAW,OAAO,4BAAkB;AACrF,IAAa,yBAA6C,WAAW,OAAO,qCAA2B;AACvG,IAAa,cAAkC,WAAW,OAAO,0BAAgB;AACjF,IAAa,YAAgC,WAC3C,OAAO,wBAAc,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,UAAU,EAAE,CACxE;AACA,IAAa,iBAAqC,WAAW,OAAO,6BAAmB;AACvF,IAAa,YAAgC,WAAW,OAAO,wBAAc;AAC7E,IAAa,aAAiC,WAC5C,OAAO,yBAAe,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,WAAW,EAAE,CAC1E"}
1
+ {"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/index.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nimport { type DebugConsoleProps } from './DebugConsole/index.ts';\nimport { type DebugPanelDrawerProps } from './DebugPanelDrawer/index.ts';\nimport { type DebugPanelStatusProps } from './DebugPanelStatus/index.ts';\n\nexport const DebugConsole: ComponentType<DebugConsoleProps> = lazy(() =>\n import('./DebugConsole/index.ts').then((module) => ({ default: module.DebugConsole })),\n);\nexport const DebugObjectPanel: ComponentType<any> = lazy(() => import('./DebugObjectPanel/index.ts'));\nexport const DebugSettings: ComponentType<any> = lazy(() => import('./DebugSettings/index.ts'));\nexport const DebugSpaceObjectsPanel: ComponentType<any> = lazy(() => import('./DebugSpaceObjectsPanel/index.ts'));\nexport const DebugPanelDrawer: ComponentType<DebugPanelDrawerProps> = lazy(() =>\n import('./DebugPanelDrawer/index.ts').then((module) => ({ default: module.DebugPanelDrawer })),\n);\nexport const DebugPanelStatus: ComponentType<DebugPanelStatusProps> = lazy(() =>\n import('./DebugPanelStatus/index.ts').then((module) => ({ default: module.DebugPanelStatus })),\n);\nexport const DebugStatus: ComponentType<any> = lazy(() => import('./DebugStatus/index.ts'));\nexport const LoggerPanel: ComponentType<any> = lazy(() =>\n import('./LoggerPanel/index.ts').then((module) => ({ default: module.LoggerPanel })),\n);\nexport const SpaceGenerator: ComponentType<any> = lazy(() => import('./SpaceGenerator/index.ts'));\nexport const Wireframe: ComponentType<any> = lazy(() => import('./Wireframe/index.ts'));\nexport const StatsPanel: ComponentType<any> = lazy(() =>\n import('./StatsPanel/index.ts').then((module) => ({ default: module.StatsPanel })),\n);\n"],"mappings":";;AAUA,IAAa,eAAiD,WAC5D,OAAO,2BAA0B,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,aAAa,EAAE,CACvF;AACA,IAAa,mBAAuC,WAAW,OAAO,+BAA8B;AACpG,IAAa,gBAAoC,WAAW,OAAO,4BAA2B;AAC9F,IAAa,yBAA6C,WAAW,OAAO,qCAAoC;AAChH,IAAa,mBAAyD,WACpE,OAAO,+BAA8B,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,iBAAiB,EAAE,CAC/F;AACA,IAAa,mBAAyD,WACpE,OAAO,+BAA8B,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,iBAAiB,EAAE,CAC/F;AACA,IAAa,cAAkC,WAAW,OAAO,0BAAyB;AAC1F,IAAa,cAAkC,WAC7C,OAAO,0BAAyB,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,YAAY,EAAE,CACrF;AACA,IAAa,iBAAqC,WAAW,OAAO,6BAA4B;AAChG,IAAa,YAAgC,WAAW,OAAO,wBAAuB;AACtF,IAAa,aAAiC,WAC5C,OAAO,yBAAwB,CAAC,MAAM,YAAY,EAAE,SAAS,OAAO,WAAW,EAAE,CACnF"}
@@ -1,4 +1,10 @@
1
1
  import { t as DebugPlugin_exports } from "./DebugPlugin.mjs";
2
+ import { t as IncidentSpace_exports } from "./chunk-IncidentSpace.mjs";
3
+ import { t as PipelineSpace_exports } from "./chunk-PipelineSpace.mjs";
4
+ import { t as ReviewSpace_exports } from "./chunk-ReviewSpace.mjs";
5
+ import { t as StockfishSpace_exports } from "./chunk-StockfishSpace.mjs";
6
+ import { t as TidepoolSpace_exports } from "./chunk-TidepoolSpace.mjs";
7
+ import { t as WeatherSpace_exports } from "./chunk-WeatherSpace.mjs";
8
+ import { t as WorkerSpace_exports } from "./chunk-WorkerSpace.mjs";
2
9
  export * from "#types";
3
- export * from "#meta";
4
- export { DebugPlugin_exports as DebugPlugin };
10
+ export { DebugPlugin_exports as DebugPlugin, IncidentSpace_exports as IncidentSpace, PipelineSpace_exports as PipelineSpace, ReviewSpace_exports as ReviewSpace, StockfishSpace_exports as StockfishSpace, TidepoolSpace_exports as TidepoolSpace, WeatherSpace_exports as WeatherSpace, WorkerSpace_exports as WorkerSpace };
package/dist/lib/meta.mjs CHANGED
@@ -7,8 +7,9 @@ var dx_config_default = Config2.make({ plugin: {
7
7
  name: "Debug",
8
8
  author: "DXOS",
9
9
  description: trim`
10
- DebugPlugin bundles developer debugging utilities for DXOS Composer under a Debug node in the
11
- SYSTEM navigation group (a sibling of the Devtools inspector).
10
+ DebugPlugin bundles developer debugging utilities for DXOS Composer in a floating debug panel
11
+ opened from the status bar: a navtree over a hidden debug category of the app graph, with the
12
+ console, the log viewer, the Devtools inspector, and the tools below as its pages.
12
13
 
13
14
  Test-data generation is available via a SpaceGenerator article surface: developers can
14
15
  create configurable batches of synthetic ECHO objects into any space collection, with a
@@ -1 +1 @@
1
- {"version":3,"file":"meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.debug',\n name: 'Debug',\n author: 'DXOS',\n description: trim`\n DebugPlugin bundles developer debugging utilities for DXOS Composer under a Debug node in the\n SYSTEM navigation group (a sibling of the Devtools inspector).\n\n Test-data generation is available via a SpaceGenerator article surface: developers can\n create configurable batches of synthetic ECHO objects into any space collection, with a\n status indicator showing when generation is running.\n\n The plugin contributes a Debug companion tab to every ECHO object in the deck so developers\n can inspect raw field values and DXNs inline, and a Space Objects companion panel that lists\n all objects in the active space with live reactive updates.\n\n Additional utilities include a wireframe overlay mode that draws labelled borders around\n every article and section surface, a log-capture and download facility backed by an\n IdbLogStore, and a transient-stats panel for live telemetry.\n `,\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug',\n icon: { key: 'ph--bug--regular' },\n spec: 'PLUGIN.mdl',\n tags: ['labs'],\n },\n});\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Plugin from '@dxos/app-framework/Plugin';\n\nimport config from '../dx.config';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;;;;;;;;;;;;;CAgBjB,QAAQ;CACR,MAAM,EAAE,KAAK,mBAAmB;CAChC,MAAM;CACN,MAAM,CAAC,MAAM;AACf,EACF,CAAC;;;ACzBD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}
1
+ {"version":3,"file":"meta.mjs","names":[],"sources":["../../dx.config.ts","../../src/meta.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Config2 } from '@dxos/app-framework/config';\nimport { trim } from '@dxos/util';\n\nexport default Config2.make({\n plugin: {\n key: 'org.dxos.plugin.debug',\n name: 'Debug',\n author: 'DXOS',\n description: trim`\n DebugPlugin bundles developer debugging utilities for DXOS Composer in a floating debug panel\n opened from the status bar: a navtree over a hidden debug category of the app graph, with the\n console, the log viewer, the Devtools inspector, and the tools below as its pages.\n\n Test-data generation is available via a SpaceGenerator article surface: developers can\n create configurable batches of synthetic ECHO objects into any space collection, with a\n status indicator showing when generation is running.\n\n The plugin contributes a Debug companion tab to every ECHO object in the deck so developers\n can inspect raw field values and DXNs inline, and a Space Objects companion panel that lists\n all objects in the active space with live reactive updates.\n\n Additional utilities include a wireframe overlay mode that draws labelled borders around\n every article and section surface, a log-capture and download facility backed by an\n IdbLogStore, and a transient-stats panel for live telemetry.\n `,\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug',\n icon: { key: 'ph--bug--regular' },\n spec: 'PLUGIN.mdl',\n tags: ['labs'],\n },\n});\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Plugin from '@dxos/app-framework/Plugin';\n\nimport config from '../dx.config.ts';\n\nexport const meta = Plugin.getMetaFromConfig(config);\n"],"mappings":";;;;AAOA,IAAA,oBAAe,QAAQ,KAAK,EAC1B,QAAQ;CACN,KAAK;CACL,MAAM;CACN,QAAQ;CACR,aAAa,IAAI;;;;;;;;;;;;;;;;;CAiBjB,QAAQ;CACR,MAAM,EAAE,KAAK,mBAAmB;CAChC,MAAM;CACN,MAAM,CAAC,MAAM;AACf,EACF,CAAC;;;AC1BD,IAAa,OAAO,OAAO,kBAAkB,iBAAM"}