@dxos/plugin-debug 0.7.4 → 0.7.5-labs.401163d

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 (81) hide show
  1. package/dist/lib/browser/{DebugApp-HCHR6GKO.mjs → DebugApp-LQHFFK3Y.mjs} +4 -2
  2. package/dist/lib/browser/{DebugApp-HCHR6GKO.mjs.map → DebugApp-LQHFFK3Y.mjs.map} +3 -3
  3. package/dist/lib/browser/{DebugSpace-DHKEAMIC.mjs → DebugSpace-4JHYA7FG.mjs} +7 -6
  4. package/dist/lib/browser/DebugSpace-4JHYA7FG.mjs.map +7 -0
  5. package/dist/lib/browser/SpaceGenerator-KYSK77VG.mjs +1100 -0
  6. package/dist/lib/browser/SpaceGenerator-KYSK77VG.mjs.map +7 -0
  7. package/dist/lib/browser/app-graph-builder-DCMGZAT3.mjs +181 -0
  8. package/dist/lib/browser/app-graph-builder-DCMGZAT3.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-EF3UVAVI.mjs +21 -0
  10. package/dist/lib/browser/chunk-EF3UVAVI.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-LZEK532R.mjs → chunk-P7GHHMDB.mjs} +1 -11
  12. package/dist/lib/browser/chunk-P7GHHMDB.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +60 -737
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/react-surface-6GVTLM4O.mjs +484 -0
  17. package/dist/lib/browser/react-surface-6GVTLM4O.mjs.map +7 -0
  18. package/dist/lib/browser/settings-OIMSBZUC.mjs +25 -0
  19. package/dist/lib/browser/settings-OIMSBZUC.mjs.map +7 -0
  20. package/dist/types/src/DebugPlugin.d.ts +1 -2
  21. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  22. package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
  23. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  24. package/dist/types/src/capabilities/index.d.ts +180 -0
  25. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  26. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  27. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  28. package/dist/types/src/capabilities/settings.d.ts +4 -0
  29. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  30. package/dist/types/src/components/DebugObjectPanel.d.ts.map +1 -1
  31. package/dist/types/src/components/DebugSettings.d.ts.map +1 -1
  32. package/dist/types/src/components/DebugSpace/DebugSpace.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/DebugSpace/ObjectCreator.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/DebugStatus.d.ts.map +1 -1
  35. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +2 -2
  36. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  37. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  38. package/dist/types/src/components/SpaceGenerator/draw-util.d.ts.map +1 -1
  39. package/dist/types/src/components/SpaceGenerator/presets.d.ts +21 -0
  40. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -0
  41. package/dist/types/src/components/Wireframe.d.ts +2 -1
  42. package/dist/types/src/components/Wireframe.d.ts.map +1 -1
  43. package/dist/types/src/index.d.ts +1 -2
  44. package/dist/types/src/index.d.ts.map +1 -1
  45. package/dist/types/src/meta.d.ts +2 -2
  46. package/dist/types/src/meta.d.ts.map +1 -1
  47. package/dist/types/src/types.d.ts +0 -6
  48. package/dist/types/src/types.d.ts.map +1 -1
  49. package/dist/types/tsconfig.tsbuildinfo +1 -0
  50. package/package.json +49 -51
  51. package/src/DebugPlugin.tsx +55 -381
  52. package/src/capabilities/app-graph-builder.ts +175 -0
  53. package/src/capabilities/index.ts +9 -0
  54. package/src/capabilities/react-surface.tsx +130 -0
  55. package/src/capabilities/settings.ts +18 -0
  56. package/src/components/DebugApp/DebugApp.tsx +1 -1
  57. package/src/components/DebugObjectPanel.tsx +17 -5
  58. package/src/components/DebugSettings.tsx +11 -13
  59. package/src/components/DebugSpace/DebugSpace.stories.tsx +4 -3
  60. package/src/components/DebugSpace/DebugSpace.tsx +1 -1
  61. package/src/components/DebugSpace/ObjectCreator.stories.tsx +4 -3
  62. package/src/components/DebugStatus.tsx +17 -27
  63. package/src/components/SpaceGenerator/ObjectGenerator.tsx +45 -18
  64. package/src/components/SpaceGenerator/SpaceGenerator.tsx +11 -8
  65. package/src/components/SpaceGenerator/draw-util.ts +7 -6
  66. package/src/components/SpaceGenerator/presets.ts +493 -0
  67. package/src/components/Wireframe.tsx +2 -2
  68. package/src/index.ts +1 -4
  69. package/src/meta.ts +4 -2
  70. package/src/types.ts +0 -22
  71. package/dist/lib/browser/DebugSpace-DHKEAMIC.mjs.map +0 -7
  72. package/dist/lib/browser/SpaceGenerator-BQ3645OS.mjs +0 -273
  73. package/dist/lib/browser/SpaceGenerator-BQ3645OS.mjs.map +0 -7
  74. package/dist/lib/browser/chunk-CAENAAHY.mjs +0 -18
  75. package/dist/lib/browser/chunk-CAENAAHY.mjs.map +0 -7
  76. package/dist/lib/browser/chunk-LZEK532R.mjs.map +0 -7
  77. package/dist/lib/browser/meta.mjs +0 -9
  78. package/dist/lib/browser/meta.mjs.map +0 -7
  79. package/dist/types/src/components/DebugSurface.d.ts +0 -9
  80. package/dist/types/src/components/DebugSurface.d.ts.map +0 -1
  81. package/src/components/DebugSurface.tsx +0 -55
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/SpaceGenerator/SpaceGenerator.tsx", "../../../src/components/SpaceGenerator/ObjectGenerator.tsx", "../../../src/components/SpaceGenerator/SchemaTable.tsx", "../../../src/components/SpaceGenerator/presets.ts", "../../../src/components/SpaceGenerator/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { SheetType } from '@dxos/plugin-sheet/types';\nimport { DiagramType } from '@dxos/plugin-sketch/types';\nimport { useClient } from '@dxos/react-client';\nimport { getTypename, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, Toolbar, useAsyncEffect } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { Testing } from '@dxos/schema/testing';\nimport { jsonKeyReplacer, sortKeys } from '@dxos/util';\n\nimport { type ObjectGenerator, createGenerator, staticGenerators } from './ObjectGenerator';\nimport { SchemaTable } from './SchemaTable';\nimport { presets } from './presets';\n\nexport type SpaceGeneratorProps = {\n space: Space;\n onCreateObjects?: (objects: ReactiveObject<any>[]) => void;\n};\n\nexport const SpaceGenerator = ({ space, onCreateObjects }: SpaceGeneratorProps) => {\n const client = useClient();\n const staticTypes = [DocumentType, DiagramType, SheetType, ComputeGraph]; // TODO(burdon): Make extensible.\n const mutableTypes = [Testing.OrgType, Testing.ProjectType, Testing.ContactType, Testing.EmailType];\n const [count, setCount] = useState(1);\n const [info, setInfo] = useState<any>({});\n\n // Create type generators.\n const typeMap = useMemo(() => {\n client.addTypes([...staticTypes, ...presets.schemas]);\n const mutableGenerators = new Map<string, ObjectGenerator<any>>(\n mutableTypes.map((type) => [type.typename, createGenerator(type as any)]),\n );\n\n return new Map([...staticGenerators, ...presets.items, ...mutableGenerators]);\n }, [client, mutableTypes]);\n\n // Query space to get info.\n const updateInfo = async () => {\n // Create schema map.\n const echoSchema = await space.db.schemaRegistry.query().run();\n const staticSchema = space.db.graph.schemaRegistry.schemas;\n\n // Create object map.\n const { objects } = await space.db.query().run();\n const objectMap = sortKeys(\n objects.reduce<Record<string, number>>((map, obj) => {\n const type = getTypename(obj);\n if (type) {\n const count = map[type] ?? 0;\n map[type] = count + 1;\n }\n return map;\n }, {}),\n );\n\n setInfo({\n schema: {\n static: staticSchema.length,\n mutable: echoSchema.length,\n },\n objects: objectMap,\n });\n };\n\n useAsyncEffect(updateInfo, [space]);\n\n const handleCreateData = useCallback(\n async (typename: string) => {\n const constructor = typeMap.get(typename);\n if (constructor) {\n // TODO(burdon): Input to specify number of objects.\n await constructor(space, count, onCreateObjects);\n await updateInfo();\n }\n },\n [typeMap, count],\n );\n\n return (\n <div role='none' className='flex flex-col divide-y divide-separator'>\n <Toolbar.Root classNames='p-1'>\n <IconButton icon='ph--arrow-clockwise--regular' iconOnly label='Refresh' onClick={updateInfo} />\n <Toolbar.Separator variant='gap' />\n <div className='flex'>\n <Input.Root>\n <Input.TextInput\n type='number'\n min={1}\n max={100}\n placeholder={'Count'}\n classNames='w-[80px]'\n value={count}\n onChange={(ev) => setCount(parseInt(ev.target.value))}\n />\n </Input.Root>\n </div>\n </Toolbar.Root>\n\n <SchemaTable types={staticTypes} objects={info.objects} label='Static Types' onClick={handleCreateData} />\n <SchemaTable types={mutableTypes} objects={info.objects} label='Mutable Types' onClick={handleCreateData} />\n <SchemaTable types={presets.types} objects={info.objects} label='Presets' onClick={handleCreateData} />\n\n <SyntaxHighlighter classNames='flex text-xs' language='json'>\n {JSON.stringify({ space, ...info }, jsonKeyReplacer({ truncate: true }), 2)}\n </SyntaxHighlighter>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { addressToA1Notation } from '@dxos/compute';\nimport { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from '@dxos/conductor';\nimport { ObjectId, type BaseObject, type TypedObject } from '@dxos/echo-schema';\nimport { DXN, SpaceId } from '@dxos/keys';\nimport { create, makeRef, type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { createSheet } from '@dxos/plugin-sheet/types';\nimport { SheetType, type CellValue } from '@dxos/plugin-sheet/types';\nimport { CanvasType, DiagramType } from '@dxos/plugin-sketch/types';\nimport { faker } from '@dxos/random';\nimport { Filter, type Space } from '@dxos/react-client/echo';\nimport { TableType } from '@dxos/react-ui-table';\nimport { createView, TextType } from '@dxos/schema';\nimport { createAsyncGenerator, type ValueGenerator } from '@dxos/schema/testing';\nimport { range } from '@dxos/util';\n\nconst generator: ValueGenerator = faker as any;\n\n// TODO(burdon): Add objects to collections.\n// TODO(burdon): Create docs.\n// TODO(burdon): Create sketches.\n// TODO(burdon): Create sheets.\n// TODO(burdon): Create comments.\n// TODO(burdon): Reuse in testbench-app.\n// TODO(burdon): Mutator running in background (factor out): from echo-generator.\n\nexport type ObjectGenerator<T extends BaseObject> = (\n space: Space,\n n: number,\n cb?: (objects: ReactiveObject<any>[]) => void,\n) => Promise<ReactiveObject<T>[]>;\n\nexport const staticGenerators = new Map<string, ObjectGenerator<any>>([\n [\n DocumentType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n return space.db.add(\n create(DocumentType, {\n name: faker.commerce.productName(),\n content: makeRef(create(TextType, { content: faker.lorem.sentences(5) })),\n threads: [],\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n DiagramType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n // TODO(burdon): Generate diagram.\n const obj = space.db.add(\n create(DiagramType, {\n name: faker.commerce.productName(),\n canvas: makeRef(create(CanvasType, { content: {} })),\n }),\n );\n\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n // TODO(burdon): Create unit tests.\n [\n SheetType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const cells: Record<string, 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 createSheet({\n name: faker.commerce.productName(),\n cells,\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n ComputeGraph.typename,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const model = ComputeGraphModel.create();\n model.builder\n .createNode({ id: 'gpt-INPUT', type: NODE_INPUT })\n .createNode({ id: 'gpt-GPT', type: 'gpt' })\n .createNode({\n id: 'gpt-QUEUE_ID',\n type: 'constant',\n value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),\n })\n .createNode({ id: 'gpt-APPEND', type: 'append' })\n .createNode({ id: 'gpt-OUTPUT', type: NODE_OUTPUT })\n .createEdge({ node: 'gpt-INPUT', property: 'prompt' }, { node: 'gpt-GPT', property: 'prompt' })\n .createEdge({ node: 'gpt-GPT', property: 'text' }, { node: 'gpt-OUTPUT', property: 'text' })\n .createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-APPEND', property: 'id' })\n .createEdge({ node: 'gpt-GPT', property: 'messages' }, { node: 'gpt-APPEND', property: 'items' })\n .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\nexport const createGenerator = <T extends BaseObject>(type: TypedObject<T>): ObjectGenerator<T> => {\n return async (\n space: Space,\n n: number,\n cb?: (objects: ReactiveObject<any>[]) => void,\n ): Promise<ReactiveObject<T>[]> => {\n // Find or create mutable schema.\n const schema =\n (await space.db.schemaRegistry.query({ typename: type.typename }).firstOrUndefined()) ??\n (await space.db.schemaRegistry.register([type]))[0];\n\n // Create objects.\n const generate = createAsyncGenerator(generator, schema.getSchemaSnapshot(), { db: space.db });\n const objects = await generate.createObjects(n);\n\n // Find or create table and view.\n const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();\n const table = tables.find((table) => table.view?.target?.query?.type === type.typename);\n if (!table) {\n const name = type.typename.split('/').pop() ?? type.typename;\n const view = createView({ name, typename: type.typename, jsonSchema: schema.jsonSchema });\n const table = space.db.add(create(TableType, { name, view: makeRef(view) }));\n cb?.([table]);\n }\n\n return objects;\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { IconButton } from '@dxos/react-ui';\n\nexport type SchemaTableProps = {\n types: any[];\n objects?: Record<string, number | undefined>;\n label: string;\n onClick: (typename: string) => void;\n};\n\nexport const SchemaTable = ({ types, objects = {}, label, onClick }: SchemaTableProps) => {\n return (\n <div className='grid grid-cols-[1fr_80px_40px] gap-1 overflow-hidden'>\n <div className='grid grid-cols-subgrid col-span-3'>\n <div className='px-2 text-sm text-primary-500'>{label}</div>\n <div className='px-2 text-xs text-subdued text-right'>count</div>\n </div>\n {types.map((type) => (\n <div key={type.typename} className='grid grid-cols-subgrid col-span-3 items-center'>\n <div className='px-2 text-sm font-mono text-green-500'>{type.typename}</div>\n <div className='px-2 text-right font-mono'>{objects[type.typename] ?? 0}</div>\n <IconButton\n variant='ghost'\n icon='ph--plus--regular'\n iconOnly\n label='Create data'\n onClick={() => onClick(type.typename)}\n />\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComputeGraphModel, EmailTriggerOutput, NODE_INPUT } from '@dxos/conductor';\nimport { AST, ObjectId, S, toJsonSchema } from '@dxos/echo-schema';\nimport { FunctionTrigger, TriggerKind, type TriggerType } from '@dxos/functions/types';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, SpaceId } from '@dxos/keys';\nimport { create, makeRef } from '@dxos/live-object';\nimport { Filter, type Space } from '@dxos/react-client/echo';\nimport {\n type ComputeShape,\n createAppend,\n createChat,\n createComputeGraph,\n createConstant,\n createFunction,\n createGpt,\n createQueue,\n createSurface,\n createRandom,\n createTemplate,\n createText,\n createTrigger,\n} from '@dxos/react-ui-canvas-compute';\nimport {\n CanvasBoardType,\n CanvasGraphModel,\n pointMultiply,\n pointsToRect,\n rectToPoints,\n} from '@dxos/react-ui-canvas-editor';\nimport { TableType } from '@dxos/react-ui-table';\nimport { range } from '@dxos/util';\n\nimport { type ObjectGenerator } from './ObjectGenerator';\n\nexport enum PresetName {\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 FOREX_FUNCTION_CALL = 'forex-function-call',\n TIMER_TICK_QUEUE = 'timerTick-queue',\n DISCORD_MESSAGES = 'discord-messages',\n}\n\nexport const presets = {\n schemas: [CanvasBoardType, FunctionTrigger],\n types: Object.values(PresetName).map((name) => ({ typename: name })),\n items: [\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: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const triggerShape = createTrigger({ triggerKind: TriggerKind.Webhook, ...position({ x: -18, y: -2 }) });\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(canvasModel);\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n builder\n .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'bodyText' })\n .createEdge({ source: gpt.id, target: text.id, output: 'text' })\n .createEdge({ source: queueId.id, target: append.id, input: 'id' })\n .createEdge({ source: gpt.id, target: append.id, output: 'messages', input: 'items' });\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 TriggerKind.Subscription,\n (triggerSpec) => (triggerSpec.filter = { type: 'dxn:type:dxos.org/type/Chess' }),\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 TriggerKind.Timer,\n (triggerSpec) => (triggerSpec.cron = '*/5 * * * * *'),\n 'result',\n );\n return addToSpace(PresetName.TIMER_TICK_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\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.schema(TableType)).runSync();\n const emailTable = results.find((r) => r.object?.view?.target?.query?.type?.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 canvasModel.builder.call((builder) => {\n const triggerShape = createTrigger({ triggerKind: TriggerKind.Email, ...position({ x: -18, y: -2 }) });\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 = AST.getPropertySignatures(EmailTriggerOutput.ast);\n for (let i = 0; i < properties.length; i++) {\n const propName = properties[i].name.toString();\n builder.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 = 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 canvasModel.builder.call((builder) => {\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(canvasModel);\n\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n builder\n .createEdge({ source: chat.id, target: gpt.id, input: 'prompt' })\n .createEdge({ source: gpt.id, target: text.id, output: 'text' })\n .createEdge({ source: queueId.id, target: append.id, input: 'id' })\n .createEdge({ source: gpt.id, target: append.id, output: 'messages', input: 'items' });\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 [\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.schema(TableType)).runSync();\n const emailTable = results.find((r) => r.object?.view?.target?.query?.type?.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 canvasModel.builder.call((builder) => {\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 triggerKind: TriggerKind.Email,\n ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n\n const { queueId } = setupQueue(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 builder.createEdge({ source: gpt.id, target: template.id, input: 'text', output: 'text' });\n\n const properties = AST.getPropertySignatures(EmailTriggerOutput.ast);\n for (let i = 0; i < properties.length; i++) {\n const propName = properties[i].name.toString();\n builder.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 = S.extend(EmailTriggerOutput, S.Struct({ text: S.String }));\n templateComputeNode.inputSchema = 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 PresetName.FOREX_FUNCTION_CALL,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n canvasModel.builder.call((builder) => {\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 builder\n .createEdge({ source: sourceCurrency.id, target: converter.id, input: 'from' })\n .createEdge({ source: targetCurrency.id, target: converter.id, input: 'to' })\n .createEdge({ source: converter.id, target: view.id, output: 'rate' });\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 PresetName.DISCORD_MESSAGES,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n let functionTrigger: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const triggerShape = createTrigger({ triggerKind: TriggerKind.Timer, ...position({ x: -10, y: -5 }) });\n const trigger = canvasModel.createNode(triggerShape);\n // DXOS dev-null channel.\n const channelId = canvasModel.createNode(\n createConstant({ value: '1088569858767212554', ...position({ x: -10, y: 0 }) }),\n );\n const queueId = canvasModel.createNode(\n createConstant({\n value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),\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(createQueue(position({ x: 0, y: 12 })));\n\n builder\n .createEdge({ source: trigger.id, target: converter.id, input: 'tick' })\n .createEdge({ source: channelId.id, target: converter.id, input: 'channelId' })\n .createEdge({ source: queueId.id, target: converter.id, input: 'queueId' })\n .createEdge({ source: converter.id, target: view.id, output: 'newMessages' })\n .createEdge({ source: queueId.id, target: queue.id, input: 'input' });\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 ] as [PresetName, ObjectGenerator<any>][],\n};\n\nconst createQueueSinkPreset = <SpecType extends TriggerKind>(\n triggerKind: SpecType,\n initSpec: (spec: Extract<TriggerType, { type: 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: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const triggerShape = createTrigger({\n triggerKind,\n ...rawPosition({ centerX: -578, centerY: -187, height: 320, width: 320 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n const { queueId } = setupQueue(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 builder\n .createEdge({ source: queueId.id, target: append.id, input: 'id' })\n .createEdge({ source: template.id, target: append.id, input: 'items' })\n .createEdge({ source: trigger.id, target: template.id, output: triggerOutputName, input: 'type' })\n .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.type === triggerKind, 'No trigger spec.');\n initSpec(triggerSpec as any);\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 = ['{', ' \"@type\": \"{{type}}\",', ' \"id\": \"@{{changeId}}\"', '}'].join('\\n');\n templateComputeNode.inputSchema = toJsonSchema(S.Struct({ type: S.String, changeId: S.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 create(CanvasBoardType, {\n name,\n computeGraph: makeRef(compute.root),\n layout: canvas.graph,\n }),\n );\n};\n\nconst setupQueue = (\n canvasModel: CanvasGraphModel,\n args?: { idPosition?: RawPositionInput; queuePosition?: RawPositionInput },\n) => {\n const queueId = canvasModel.createNode(\n createConstant({\n value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),\n ...(args?.idPosition ? rawPosition(args.idPosition) : position({ x: -18, y: 5, width: 8, height: 6 })),\n }),\n );\n const queue = canvasModel.createNode(\n createQueue(\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: FunctionTrigger | undefined, computeModel: ComputeGraphModel) => {\n invariant(functionTrigger);\n functionTrigger.function = DXN.fromLocalObjectId(computeModel.root.id).toString();\n functionTrigger.meta ??= {};\n const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;\n functionTrigger.meta.computeNodeId = inputNode.id;\n};\n\ntype RawPositionInput = { centerX: number; centerY: number; width: number; height: number };\n\nconst rawPosition = (args: RawPositionInput) => {\n return { center: { x: args.centerX, y: args.centerY }, size: { width: args.width, height: args.height } };\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 { center: { x, y }, size: width && height ? { width, height } : undefined };\n } else {\n return { center: { x, y } };\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SpaceGenerator } from './SpaceGenerator';\n\nexport default SpaceGenerator;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useMemo", "useState", "ComputeGraph", "DocumentType", "SheetType", "DiagramType", "useClient", "getTypename", "IconButton", "Input", "Toolbar", "useAsyncEffect", "SyntaxHighlighter", "Testing", "jsonKeyReplacer", "sortKeys", "addressToA1Notation", "ComputeGraph", "ComputeGraphModel", "DEFAULT_OUTPUT", "NODE_INPUT", "NODE_OUTPUT", "ObjectId", "DXN", "SpaceId", "create", "makeRef", "DocumentType", "createSheet", "SheetType", "CanvasType", "DiagramType", "faker", "Filter", "TableType", "createView", "TextType", "createAsyncGenerator", "range", "generator", "faker", "staticGenerators", "Map", "DocumentType", "typename", "space", "n", "cb", "objects", "range", "map", "db", "add", "create", "name", "commerce", "productName", "content", "makeRef", "TextType", "lorem", "sentences", "threads", "DiagramType", "obj", "canvas", "CanvasType", "SheetType", "cells", "year", "Date", "getFullYear", "cols", "rows", "col", "row", "cell", "addressToA1Notation", "value", "from", "to", "Math", "floor", "random", "createSheet", "ComputeGraph", "model", "ComputeGraphModel", "builder", "createNode", "id", "type", "NODE_INPUT", "DXN", "kind", "QUEUE", "SpaceId", "ObjectId", "toString", "NODE_OUTPUT", "createEdge", "node", "property", "DEFAULT_OUTPUT", "root", "createGenerator", "schema", "schemaRegistry", "query", "firstOrUndefined", "register", "generate", "createAsyncGenerator", "getSchemaSnapshot", "createObjects", "tables", "Filter", "TableType", "run", "table", "find", "view", "target", "split", "pop", "createView", "jsonSchema", "React", "IconButton", "SchemaTable", "types", "objects", "label", "onClick", "div", "className", "map", "type", "key", "typename", "IconButton", "variant", "icon", "iconOnly", "EmailTriggerOutput", "NODE_INPUT", "AST", "ObjectId", "S", "toJsonSchema", "FunctionTrigger", "TriggerKind", "invariant", "DXN", "SpaceId", "create", "makeRef", "Filter", "createAppend", "createChat", "createComputeGraph", "createConstant", "createFunction", "createGpt", "createQueue", "createSurface", "createRandom", "createTemplate", "createText", "createTrigger", "CanvasBoardType", "CanvasGraphModel", "pointMultiply", "pointsToRect", "rectToPoints", "TableType", "range", "PresetName", "presets", "schemas", "types", "Object", "values", "map", "name", "typename", "items", "space", "n", "cb", "objects", "canvasModel", "functionTrigger", "builder", "call", "gpt", "createNode", "position", "x", "y", "triggerShape", "triggerKind", "Webhook", "trigger", "text", "width", "height", "queueId", "setupQueue", "append", "createEdge", "source", "id", "target", "input", "output", "computeModel", "attachTrigger", "addToSpace", "createQueueSinkPreset", "Subscription", "triggerSpec", "filter", "type", "Timer", "cron", "results", "db", "query", "schema", "runSync", "emailTable", "find", "r", "object", "view", "endsWith", "template", "valueType", "rawPosition", "centerX", "centerY", "templateContent", "Email", "tableId", "value", "fromLocalObjectId", "toString", "appendToTable", "properties", "getPropertySignatures", "ast", "i", "length", "propName", "push", "templateComputeNode", "nodes", "node", "join", "inputSchema", "chat", "systemPrompt", "idPosition", "queuePosition", "appendToQueue", "extendedSchema", "extend", "Struct", "String", "sourceCurrency", "targetCurrency", "converter", "channelId", "kind", "QUEUE", "random", "queue", "initSpec", "triggerOutputName", "spec", "changeId", "canvas", "compute", "add", "computeGraph", "root", "layout", "graph", "args", "function", "meta", "inputNode", "computeNodeId", "center", "size", "rect", "snap", "undefined", "SpaceGenerator", "space", "onCreateObjects", "client", "useClient", "staticTypes", "DocumentType", "DiagramType", "SheetType", "ComputeGraph", "mutableTypes", "Testing", "OrgType", "ProjectType", "ContactType", "EmailType", "count", "setCount", "useState", "info", "setInfo", "typeMap", "useMemo", "addTypes", "presets", "schemas", "mutableGenerators", "Map", "map", "type", "typename", "createGenerator", "staticGenerators", "items", "updateInfo", "echoSchema", "db", "schemaRegistry", "query", "run", "staticSchema", "graph", "objects", "objectMap", "sortKeys", "reduce", "obj", "getTypename", "schema", "static", "length", "mutable", "useAsyncEffect", "handleCreateData", "useCallback", "constructor", "get", "React", "div", "role", "className", "Toolbar", "Root", "classNames", "IconButton", "icon", "iconOnly", "label", "onClick", "Separator", "variant", "Input", "TextInput", "min", "max", "placeholder", "value", "onChange", "ev", "parseInt", "target", "SchemaTable", "types", "SyntaxHighlighter", "language", "JSON", "stringify", "jsonKeyReplacer", "truncate", "SpaceGenerator"]
7
+ }
@@ -0,0 +1,181 @@
1
+ import {
2
+ DEBUG_PLUGIN
3
+ } from "./chunk-EF3UVAVI.mjs";
4
+
5
+ // packages/plugins/plugin-debug/src/capabilities/app-graph-builder.ts
6
+ import { contributes, Capabilities } from "@dxos/app-framework";
7
+ import { ClientCapabilities } from "@dxos/plugin-client";
8
+ import { createExtension, toSignal } from "@dxos/plugin-graph";
9
+ import { memoizeQuery } from "@dxos/plugin-space";
10
+ import { CollectionType } from "@dxos/plugin-space/types";
11
+ import { getTypename, parseId, SpaceState } from "@dxos/react-client/echo";
12
+ import { isSpace } from "@dxos/react-client/echo";
13
+ var app_graph_builder_default = (context) => {
14
+ const resolve = (typename) => context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
15
+ return contributes(Capabilities.AppGraphBuilder, [
16
+ // Devtools node.
17
+ createExtension({
18
+ id: "dxos.org/plugin/debug/devtools",
19
+ filter: (node) => {
20
+ const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DEBUG_PLUGIN)?.value;
21
+ return !!settings?.devtools && node.id === "root";
22
+ },
23
+ connector: () => [
24
+ {
25
+ // TODO(zan): Removed `/` because it breaks deck layout reload. Fix?
26
+ id: "dxos.org.plugin.debug.devtools",
27
+ data: "devtools",
28
+ type: "dxos.org/plugin/debug/devtools",
29
+ properties: {
30
+ label: [
31
+ "devtools label",
32
+ {
33
+ ns: DEBUG_PLUGIN
34
+ }
35
+ ],
36
+ disposition: "navigation",
37
+ icon: "ph--hammer--regular"
38
+ }
39
+ }
40
+ ]
41
+ }),
42
+ // Debug node.
43
+ createExtension({
44
+ id: "dxos.org/plugin/debug/debug",
45
+ filter: (node) => {
46
+ const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DEBUG_PLUGIN)?.value;
47
+ return !!settings?.debug && node.id === "root";
48
+ },
49
+ connector: () => {
50
+ const [graph] = context.requestCapabilities(Capabilities.AppGraph);
51
+ if (!graph) {
52
+ return;
53
+ }
54
+ return [
55
+ {
56
+ id: "dxos.org/plugin/debug/debug",
57
+ type: "dxos.org/plugin/debug/debug",
58
+ data: {
59
+ graph
60
+ },
61
+ properties: {
62
+ label: [
63
+ "debug label",
64
+ {
65
+ ns: DEBUG_PLUGIN
66
+ }
67
+ ],
68
+ disposition: "navigation",
69
+ icon: "ph--bug--regular"
70
+ }
71
+ }
72
+ ];
73
+ }
74
+ }),
75
+ // Space debug nodes.
76
+ createExtension({
77
+ id: "dxos.org/plugin/debug/spaces",
78
+ filter: (node) => {
79
+ const settings = context.requestCapabilities(Capabilities.SettingsStore)[0]?.getStore(DEBUG_PLUGIN)?.value;
80
+ return !!settings?.debug && isSpace(node.data);
81
+ },
82
+ connector: ({ node }) => {
83
+ const space = node.data;
84
+ const state = toSignal((onChange) => space.state.subscribe(() => onChange()).unsubscribe, () => space.state.get(), space.id);
85
+ if (state !== SpaceState.SPACE_READY) {
86
+ return;
87
+ }
88
+ const collection = space.properties[CollectionType.typename]?.target;
89
+ if (!collection) {
90
+ return;
91
+ }
92
+ return [
93
+ {
94
+ id: `${space.id}-debug`,
95
+ type: "dxos.org/plugin/debug/space",
96
+ data: {
97
+ space,
98
+ type: "dxos.org/plugin/debug/space"
99
+ },
100
+ properties: {
101
+ label: [
102
+ "debug label",
103
+ {
104
+ ns: DEBUG_PLUGIN
105
+ }
106
+ ],
107
+ icon: "ph--bug--regular"
108
+ }
109
+ }
110
+ ];
111
+ }
112
+ }),
113
+ // Create nodes for debug sidebar.
114
+ createExtension({
115
+ id: `${DEBUG_PLUGIN}/debug-for-subject`,
116
+ resolver: ({ id }) => {
117
+ if (!id.endsWith("~debug")) {
118
+ return;
119
+ }
120
+ const type = "orphan-settings-for-subject";
121
+ const icon = "ph--bug--regular";
122
+ const client = context.requestCapability(ClientCapabilities.Client);
123
+ const [subjectId] = id.split("~");
124
+ const { spaceId, objectId } = parseId(subjectId);
125
+ const spaces = toSignal((onChange) => client.spaces.subscribe(() => onChange()).unsubscribe, () => client.spaces.get());
126
+ const space = spaces?.find((space2) => space2.state.get() === SpaceState.SPACE_READY && space2.id === spaceId);
127
+ if (!objectId) {
128
+ const label2 = space ? space.properties.name || [
129
+ "unnamed space label",
130
+ {
131
+ ns: DEBUG_PLUGIN
132
+ }
133
+ ] : [
134
+ "unnamed object settings label",
135
+ {
136
+ ns: DEBUG_PLUGIN
137
+ }
138
+ ];
139
+ return {
140
+ id,
141
+ type,
142
+ data: null,
143
+ properties: {
144
+ icon,
145
+ label: label2,
146
+ object: null,
147
+ space
148
+ }
149
+ };
150
+ }
151
+ const [object] = memoizeQuery(space, {
152
+ id: objectId
153
+ });
154
+ if (!object || !subjectId) {
155
+ return;
156
+ }
157
+ const meta = resolve(getTypename(object) ?? "");
158
+ const label = meta.label?.(object) || object.name || meta.placeholder || [
159
+ "unnamed object settings label",
160
+ {
161
+ ns: DEBUG_PLUGIN
162
+ }
163
+ ];
164
+ return {
165
+ id,
166
+ type,
167
+ data: null,
168
+ properties: {
169
+ icon,
170
+ label,
171
+ object
172
+ }
173
+ };
174
+ }
175
+ })
176
+ ]);
177
+ };
178
+ export {
179
+ app_graph_builder_default as default
180
+ };
181
+ //# sourceMappingURL=app-graph-builder-DCMGZAT3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, Capabilities, type PluginsContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, toSignal, type Node } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { CollectionType } from '@dxos/plugin-space/types';\nimport { getTypename, parseId, SpaceState } from '@dxos/react-client/echo';\nimport { isSpace, type Space } from '@dxos/react-client/echo';\n\nimport { DEBUG_PLUGIN } from '../meta';\nimport { type DebugSettingsProps } from '../types';\n\nexport default (context: PluginsContext) => {\n const resolve = (typename: string) =>\n context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n // Devtools node.\n createExtension({\n id: 'dxos.org/plugin/debug/devtools',\n filter: (node): node is Node<null> => {\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DebugSettingsProps>(DEBUG_PLUGIN)?.value;\n return !!settings?.devtools && node.id === 'root';\n },\n connector: () => [\n {\n // TODO(zan): Removed `/` because it breaks deck layout reload. Fix?\n id: 'dxos.org.plugin.debug.devtools',\n data: 'devtools',\n type: 'dxos.org/plugin/debug/devtools',\n properties: {\n label: ['devtools label', { ns: DEBUG_PLUGIN }],\n disposition: 'navigation',\n icon: 'ph--hammer--regular',\n },\n },\n ],\n }),\n\n // Debug node.\n createExtension({\n id: 'dxos.org/plugin/debug/debug',\n filter: (node): node is Node<null> => {\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DebugSettingsProps>(DEBUG_PLUGIN)?.value;\n return !!settings?.debug && node.id === 'root';\n },\n connector: () => {\n const [graph] = context.requestCapabilities(Capabilities.AppGraph);\n if (!graph) {\n return;\n }\n\n return [\n {\n id: 'dxos.org/plugin/debug/debug',\n type: 'dxos.org/plugin/debug/debug',\n data: { graph },\n properties: {\n label: ['debug label', { ns: DEBUG_PLUGIN }],\n disposition: 'navigation',\n icon: 'ph--bug--regular',\n },\n },\n ];\n },\n }),\n\n // Space debug nodes.\n createExtension({\n id: 'dxos.org/plugin/debug/spaces',\n filter: (node): node is Node<Space> => {\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<DebugSettingsProps>(DEBUG_PLUGIN)?.value;\n return !!settings?.debug && isSpace(node.data);\n },\n connector: ({ node }) => {\n const space = node.data;\n const state = toSignal(\n (onChange) => space.state.subscribe(() => onChange()).unsubscribe,\n () => space.state.get(),\n space.id,\n );\n if (state !== SpaceState.SPACE_READY) {\n return;\n }\n\n // Not adding the debug node until the root collection is available aligns the behaviour of this\n // extension with that of the space plugin adding objects. This ensures that the debug node is added at\n // the same time as objects and prevents order from changing as the nodes are added.\n const collection = space.properties[CollectionType.typename]?.target as CollectionType | undefined;\n if (!collection) {\n return;\n }\n\n return [\n {\n id: `${space.id}-debug`, // TODO(burdon): Change to slashes consistently.\n type: 'dxos.org/plugin/debug/space',\n data: { space, type: 'dxos.org/plugin/debug/space' },\n properties: {\n label: ['debug label', { ns: DEBUG_PLUGIN }],\n icon: 'ph--bug--regular',\n },\n },\n ];\n },\n }),\n\n // Create nodes for debug sidebar.\n createExtension({\n id: `${DEBUG_PLUGIN}/debug-for-subject`,\n resolver: ({ id }) => {\n if (!id.endsWith('~debug')) {\n return;\n }\n\n const type = 'orphan-settings-for-subject';\n const icon = 'ph--bug--regular';\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n const space = spaces?.find((space) => space.state.get() === SpaceState.SPACE_READY && space.id === spaceId);\n if (!objectId) {\n // TODO(burdon): Ref SPACE_PLUGIN ns.\n const label = space\n ? space.properties.name || ['unnamed space label', { ns: DEBUG_PLUGIN }]\n : ['unnamed object settings label', { ns: DEBUG_PLUGIN }];\n\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: { icon, label, object: null, space },\n };\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolve(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object settings label', { ns: DEBUG_PLUGIN }];\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n object,\n },\n };\n },\n }),\n ]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["contributes", "Capabilities", "ClientCapabilities", "createExtension", "toSignal", "memoizeQuery", "CollectionType", "getTypename", "parseId", "SpaceState", "isSpace", "context", "resolve", "typename", "requestCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "filter", "node", "settings", "SettingsStore", "getStore", "DEBUG_PLUGIN", "value", "devtools", "connector", "data", "type", "properties", "label", "ns", "disposition", "icon", "debug", "graph", "AppGraph", "isSpace", "space", "state", "toSignal", "onChange", "subscribe", "unsubscribe", "get", "SpaceState", "SPACE_READY", "collection", "CollectionType", "target", "resolver", "endsWith", "client", "requestCapability", "ClientCapabilities", "Client", "subjectId", "split", "spaceId", "objectId", "parseId", "spaces", "name", "object", "memoizeQuery", "meta", "getTypename", "placeholder"]
7
+ }
@@ -0,0 +1,21 @@
1
+ // packages/plugins/plugin-debug/src/meta.ts
2
+ var DEBUG_PLUGIN = "dxos.org/plugin/debug";
3
+ var meta = {
4
+ id: DEBUG_PLUGIN,
5
+ name: "Debug",
6
+ description: "The debug plugin is useful for troubleshooting inside of Composer. You can also use the Debug plugin to create test data inside of sheets or tables or explore pre-built automations. Non-technical users will likely not spend much time here, but this plugin is invaluable for developers and technical users.",
7
+ icon: "ph--bug--regular",
8
+ source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug",
9
+ tags: [
10
+ "experimental"
11
+ ],
12
+ screenshots: [
13
+ "https://dxos.network/plugin-details-debug-dark.png"
14
+ ]
15
+ };
16
+
17
+ export {
18
+ DEBUG_PLUGIN,
19
+ meta
20
+ };
21
+ //# sourceMappingURL=chunk-EF3UVAVI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const DEBUG_PLUGIN = 'dxos.org/plugin/debug';\n\nexport const meta = {\n id: DEBUG_PLUGIN,\n name: 'Debug',\n description:\n 'The debug plugin is useful for troubleshooting inside of Composer. You can also use the Debug plugin to create test data inside of sheets or tables or explore pre-built automations. Non-technical users will likely not spend much time here, but this plugin is invaluable for developers and technical users.',\n icon: 'ph--bug--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug',\n tags: ['experimental'],\n screenshots: ['https://dxos.network/plugin-details-debug-dark.png'],\n} satisfies PluginMeta;\n"],
5
+ "mappings": ";AAMO,IAAMA,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;",
6
+ "names": ["DEBUG_PLUGIN", "meta", "id", "name", "description", "icon", "source", "tags", "screenshots"]
7
+ }
@@ -1,15 +1,6 @@
1
- import {
2
- DEBUG_PLUGIN
3
- } from "./chunk-CAENAAHY.mjs";
4
-
5
1
  // packages/plugins/plugin-debug/src/types.ts
6
2
  import { createContext } from "react";
7
3
  import { S } from "@dxos/echo-schema";
8
- var DEBUG_ACTION = `${DEBUG_PLUGIN}/action`;
9
- var DebugAction;
10
- (function(DebugAction2) {
11
- DebugAction2[DebugAction2["OPEN_DEVTOOLS"] = `${DEBUG_ACTION}/open-devtools`] = "OPEN_DEVTOOLS";
12
- })(DebugAction || (DebugAction = {}));
13
4
  var DebugContext = createContext({
14
5
  running: false,
15
6
  start: () => {
@@ -24,8 +15,7 @@ var DebugSettingsSchema = S.mutable(S.Struct({
24
15
  }));
25
16
 
26
17
  export {
27
- DebugAction,
28
18
  DebugContext,
29
19
  DebugSettingsSchema
30
20
  };
31
- //# sourceMappingURL=chunk-LZEK532R.mjs.map
21
+ //# sourceMappingURL=chunk-P7GHHMDB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Context, createContext } from 'react';\n\nimport type { TimerCallback, TimerOptions } from '@dxos/async';\nimport { S } from '@dxos/echo-schema';\n\nexport type DebugContextType = {\n running: boolean;\n start: (cb: TimerCallback, options: TimerOptions) => void;\n stop: () => void;\n};\n\nexport const DebugContext: Context<DebugContextType> = createContext<DebugContextType>({\n running: false,\n start: () => {},\n stop: () => {},\n});\n\nexport const DebugSettingsSchema = S.mutable(\n S.Struct({\n devtools: S.optional(S.Boolean),\n debug: S.optional(S.Boolean),\n wireframe: S.optional(S.Boolean),\n }),\n);\n\nexport interface DebugSettingsProps extends S.Schema.Type<typeof DebugSettingsSchema> {}\n"],
5
+ "mappings": ";AAIA,SAAuBA,qBAAqB;AAG5C,SAASC,SAAS;AAQX,IAAMC,eAA0CC,cAAgC;EACrFC,SAAS;EACTC,OAAO,MAAA;EAAO;EACdC,MAAM,MAAA;EAAO;AACf,CAAA;AAEO,IAAMC,sBAAsBC,EAAEC,QACnCD,EAAEE,OAAO;EACPC,UAAUH,EAAEI,SAASJ,EAAEK,OAAO;EAC9BC,OAAON,EAAEI,SAASJ,EAAEK,OAAO;EAC3BE,WAAWP,EAAEI,SAASJ,EAAEK,OAAO;AACjC,CAAA,CAAA;",
6
+ "names": ["createContext", "S", "DebugContext", "createContext", "running", "start", "stop", "DebugSettingsSchema", "S", "mutable", "Struct", "devtools", "optional", "Boolean", "debug", "wireframe"]
7
+ }