@dxos/plugin-script 0.8.4-main.72ec0f3 → 0.8.4-main.7ace549

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 (99) hide show
  1. package/dist/lib/browser/{DeploymentDialog-MZX4T77L.mjs → DeploymentDialog-5TKNGPVR.mjs} +4 -4
  2. package/dist/lib/browser/{NotebookContainer-RTESC4OV.mjs → NotebookContainer-MHY3DXDE.mjs} +21 -21
  3. package/dist/lib/browser/NotebookContainer-MHY3DXDE.mjs.map +7 -0
  4. package/dist/lib/browser/{ScriptContainer-T2BAZDJ4.mjs → ScriptContainer-CW6YN3DQ.mjs} +6 -5
  5. package/dist/lib/browser/ScriptContainer-CW6YN3DQ.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-4M7U2WVT.mjs → chunk-ALS6X4HU.mjs} +6 -6
  7. package/dist/lib/browser/chunk-ALS6X4HU.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-GAFCKEII.mjs → chunk-N5EYLQOT.mjs} +11 -10
  9. package/dist/lib/browser/chunk-N5EYLQOT.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-LNNCD2H4.mjs → chunk-QIZ3BPRK.mjs} +6 -5
  11. package/dist/lib/browser/chunk-QIZ3BPRK.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-3IJASGG5.mjs → chunk-SAN5Y7FI.mjs} +2 -2
  13. package/dist/lib/browser/{chunk-5JSNQYZZ.mjs → chunk-ULJFT73Q.mjs} +23 -27
  14. package/dist/lib/browser/chunk-ULJFT73Q.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +31 -36
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-AFJ575VK.mjs → intent-resolver-TXTBWOVD.mjs} +6 -6
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-QEQ3QUQA.mjs → react-surface-R245YN52.mjs} +6 -6
  20. package/dist/lib/browser/{settings-LNLSTZM4.mjs → settings-MHJXRGDF.mjs} +2 -2
  21. package/dist/lib/browser/types/index.mjs +1 -1
  22. package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs → DeploymentDialog-2ULNOZQH.mjs} +4 -4
  23. package/dist/lib/node-esm/{NotebookContainer-SVD3A3D6.mjs → NotebookContainer-U4C2HQ4T.mjs} +21 -21
  24. package/dist/lib/node-esm/NotebookContainer-U4C2HQ4T.mjs.map +7 -0
  25. package/dist/lib/node-esm/{ScriptContainer-2CE3H3JJ.mjs → ScriptContainer-VRPEKB4T.mjs} +6 -5
  26. package/dist/lib/node-esm/ScriptContainer-VRPEKB4T.mjs.map +7 -0
  27. package/dist/lib/node-esm/{chunk-RIE676OW.mjs → chunk-ND4BPYPR.mjs} +2 -2
  28. package/dist/lib/node-esm/{chunk-KJKZ4KNO.mjs → chunk-UEVZP5DN.mjs} +11 -10
  29. package/dist/lib/node-esm/chunk-UEVZP5DN.mjs.map +7 -0
  30. package/dist/lib/node-esm/{chunk-IQTBVH4L.mjs → chunk-VJSRZRLI.mjs} +23 -27
  31. package/dist/lib/node-esm/chunk-VJSRZRLI.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-YRTA4EHU.mjs → chunk-VTRMJSQL.mjs} +6 -6
  33. package/dist/lib/node-esm/chunk-VTRMJSQL.mjs.map +7 -0
  34. package/dist/lib/node-esm/{chunk-NNHWLRHT.mjs → chunk-XYKKDWUR.mjs} +6 -5
  35. package/dist/lib/node-esm/chunk-XYKKDWUR.mjs.map +7 -0
  36. package/dist/lib/node-esm/index.mjs +31 -36
  37. package/dist/lib/node-esm/index.mjs.map +3 -3
  38. package/dist/lib/node-esm/{intent-resolver-A5VVK746.mjs → intent-resolver-D6AVAQRA.mjs} +6 -6
  39. package/dist/lib/node-esm/meta.json +1 -1
  40. package/dist/lib/node-esm/{react-surface-U77YT7VF.mjs → react-surface-MHT3PJ6C.mjs} +6 -6
  41. package/dist/lib/node-esm/{settings-IUFMOCXY.mjs → settings-BVJORMMJ.mjs} +2 -2
  42. package/dist/lib/node-esm/types/index.mjs +1 -1
  43. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  44. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +3 -0
  45. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
  47. package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -0
  48. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  50. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +3 -0
  51. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  53. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +3 -0
  54. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  56. package/dist/types/src/hooks/deploy.d.ts +4 -4
  57. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  58. package/dist/types/src/translations.d.ts +2 -0
  59. package/dist/types/src/translations.d.ts.map +1 -1
  60. package/dist/types/src/types/Notebook.d.ts +7 -7
  61. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  62. package/dist/types/src/types/actions.d.ts +3 -3
  63. package/dist/types/src/util/deploy.d.ts.map +1 -1
  64. package/dist/types/src/util/functions.d.ts.map +1 -1
  65. package/dist/types/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +59 -58
  67. package/src/ScriptPlugin.tsx +13 -26
  68. package/src/components/NotebookContainer.tsx +10 -13
  69. package/src/components/NotebookStack/NotebookCell.tsx +6 -4
  70. package/src/components/ScriptContainer.tsx +3 -2
  71. package/src/components/Settings/ScriptObjectSettings.tsx +5 -4
  72. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +1 -1
  73. package/src/hooks/deploy.ts +3 -2
  74. package/src/translations.ts +2 -0
  75. package/src/types/Notebook.ts +5 -4
  76. package/src/util/deploy.ts +4 -4
  77. package/src/util/functions.ts +3 -2
  78. package/dist/lib/browser/NotebookContainer-RTESC4OV.mjs.map +0 -7
  79. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs.map +0 -7
  80. package/dist/lib/browser/chunk-4M7U2WVT.mjs.map +0 -7
  81. package/dist/lib/browser/chunk-5JSNQYZZ.mjs.map +0 -7
  82. package/dist/lib/browser/chunk-GAFCKEII.mjs.map +0 -7
  83. package/dist/lib/browser/chunk-LNNCD2H4.mjs.map +0 -7
  84. package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs.map +0 -7
  85. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs.map +0 -7
  86. package/dist/lib/node-esm/chunk-IQTBVH4L.mjs.map +0 -7
  87. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs.map +0 -7
  88. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs.map +0 -7
  89. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs.map +0 -7
  90. /package/dist/lib/browser/{DeploymentDialog-MZX4T77L.mjs.map → DeploymentDialog-5TKNGPVR.mjs.map} +0 -0
  91. /package/dist/lib/browser/{chunk-3IJASGG5.mjs.map → chunk-SAN5Y7FI.mjs.map} +0 -0
  92. /package/dist/lib/browser/{intent-resolver-AFJ575VK.mjs.map → intent-resolver-TXTBWOVD.mjs.map} +0 -0
  93. /package/dist/lib/browser/{react-surface-QEQ3QUQA.mjs.map → react-surface-R245YN52.mjs.map} +0 -0
  94. /package/dist/lib/browser/{settings-LNLSTZM4.mjs.map → settings-MHJXRGDF.mjs.map} +0 -0
  95. /package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs.map → DeploymentDialog-2ULNOZQH.mjs.map} +0 -0
  96. /package/dist/lib/node-esm/{chunk-RIE676OW.mjs.map → chunk-ND4BPYPR.mjs.map} +0 -0
  97. /package/dist/lib/node-esm/{intent-resolver-A5VVK746.mjs.map → intent-resolver-D6AVAQRA.mjs.map} +0 -0
  98. /package/dist/lib/node-esm/{react-surface-U77YT7VF.mjs.map → react-surface-MHT3PJ6C.mjs.map} +0 -0
  99. /package/dist/lib/node-esm/{settings-IUFMOCXY.mjs.map → settings-BVJORMMJ.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-script",
3
- "version": "0.8.4-main.72ec0f3",
3
+ "version": "0.8.4-main.7ace549",
4
4
  "description": "Braneframe notebook plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -65,55 +65,56 @@
65
65
  "prettier": "^3.6.2",
66
66
  "react-syntax-highlighter": "^15.6.1",
67
67
  "typescript": "^5.9.3",
68
- "@dxos/ai": "0.8.4-main.72ec0f3",
69
- "@dxos/app-framework": "0.8.4-main.72ec0f3",
70
- "@dxos/assistant": "0.8.4-main.72ec0f3",
71
- "@dxos/assistant-toolkit": "0.8.4-main.72ec0f3",
72
- "@dxos/async": "0.8.4-main.72ec0f3",
73
- "@dxos/blueprints": "0.8.4-main.72ec0f3",
74
- "@dxos/client-protocol": "0.8.4-main.72ec0f3",
75
- "@dxos/client": "0.8.4-main.72ec0f3",
76
- "@dxos/compute": "0.8.4-main.72ec0f3",
77
- "@dxos/echo": "0.8.4-main.72ec0f3",
78
- "@dxos/debug": "0.8.4-main.72ec0f3",
79
- "@dxos/devtools": "0.8.4-main.72ec0f3",
80
- "@dxos/echo-protocol": "0.8.4-main.72ec0f3",
81
- "@dxos/functions-runtime": "0.8.4-main.72ec0f3",
82
- "@dxos/keys": "0.8.4-main.72ec0f3",
83
- "@dxos/functions": "0.8.4-main.72ec0f3",
84
- "@dxos/invariant": "0.8.4-main.72ec0f3",
85
- "@dxos/live-object": "0.8.4-main.72ec0f3",
86
- "@dxos/log": "0.8.4-main.72ec0f3",
87
- "@dxos/local-storage": "0.8.4-main.72ec0f3",
88
- "@dxos/plugin-assistant": "0.8.4-main.72ec0f3",
89
- "@dxos/plugin-automation": "0.8.4-main.72ec0f3",
90
- "@dxos/plugin-client": "0.8.4-main.72ec0f3",
91
- "@dxos/echo-query": "0.8.4-main.72ec0f3",
92
- "@dxos/plugin-deck": "0.8.4-main.72ec0f3",
93
- "@dxos/plugin-markdown": "0.8.4-main.72ec0f3",
94
- "@dxos/plugin-space": "0.8.4-main.72ec0f3",
95
- "@dxos/plugin-graph": "0.8.4-main.72ec0f3",
96
- "@dxos/plugin-stack": "0.8.4-main.72ec0f3",
97
- "@dxos/plugin-theme": "0.8.4-main.72ec0f3",
98
- "@dxos/plugin-explorer": "0.8.4-main.72ec0f3",
99
- "@dxos/plugin-token-manager": "0.8.4-main.72ec0f3",
100
- "@dxos/protocols": "0.8.4-main.72ec0f3",
101
- "@dxos/react-client": "0.8.4-main.72ec0f3",
102
- "@dxos/react-edge-client": "0.8.4-main.72ec0f3",
103
- "@dxos/react-ui-attention": "0.8.4-main.72ec0f3",
104
- "@dxos/react-ui-components": "0.8.4-main.72ec0f3",
105
- "@dxos/react-ui-editor": "0.8.4-main.72ec0f3",
106
- "@dxos/react-ui-form": "0.8.4-main.72ec0f3",
107
- "@dxos/react-ui-menu": "0.8.4-main.72ec0f3",
108
- "@dxos/react-ui-stack": "0.8.4-main.72ec0f3",
109
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.72ec0f3",
110
- "@dxos/react-ui-list": "0.8.4-main.72ec0f3",
111
- "@dxos/rpc-tunnel": "0.8.4-main.72ec0f3",
112
- "@dxos/schema": "0.8.4-main.72ec0f3",
113
- "@dxos/util": "0.8.4-main.72ec0f3",
114
- "@dxos/vendor-quickjs": "0.8.4-main.72ec0f3",
115
- "@dxos/types": "0.8.4-main.72ec0f3",
116
- "@dxos/rpc": "0.8.4-main.72ec0f3"
68
+ "@dxos/ai": "0.8.4-main.7ace549",
69
+ "@dxos/assistant": "0.8.4-main.7ace549",
70
+ "@dxos/assistant-toolkit": "0.8.4-main.7ace549",
71
+ "@dxos/app-framework": "0.8.4-main.7ace549",
72
+ "@dxos/async": "0.8.4-main.7ace549",
73
+ "@dxos/client": "0.8.4-main.7ace549",
74
+ "@dxos/blueprints": "0.8.4-main.7ace549",
75
+ "@dxos/client-protocol": "0.8.4-main.7ace549",
76
+ "@dxos/debug": "0.8.4-main.7ace549",
77
+ "@dxos/devtools": "0.8.4-main.7ace549",
78
+ "@dxos/compute": "0.8.4-main.7ace549",
79
+ "@dxos/echo": "0.8.4-main.7ace549",
80
+ "@dxos/echo-db": "0.8.4-main.7ace549",
81
+ "@dxos/echo-protocol": "0.8.4-main.7ace549",
82
+ "@dxos/echo-query": "0.8.4-main.7ace549",
83
+ "@dxos/functions": "0.8.4-main.7ace549",
84
+ "@dxos/functions-runtime": "0.8.4-main.7ace549",
85
+ "@dxos/keys": "0.8.4-main.7ace549",
86
+ "@dxos/invariant": "0.8.4-main.7ace549",
87
+ "@dxos/live-object": "0.8.4-main.7ace549",
88
+ "@dxos/local-storage": "0.8.4-main.7ace549",
89
+ "@dxos/plugin-assistant": "0.8.4-main.7ace549",
90
+ "@dxos/plugin-automation": "0.8.4-main.7ace549",
91
+ "@dxos/plugin-client": "0.8.4-main.7ace549",
92
+ "@dxos/plugin-deck": "0.8.4-main.7ace549",
93
+ "@dxos/log": "0.8.4-main.7ace549",
94
+ "@dxos/plugin-explorer": "0.8.4-main.7ace549",
95
+ "@dxos/plugin-graph": "0.8.4-main.7ace549",
96
+ "@dxos/plugin-markdown": "0.8.4-main.7ace549",
97
+ "@dxos/plugin-stack": "0.8.4-main.7ace549",
98
+ "@dxos/plugin-theme": "0.8.4-main.7ace549",
99
+ "@dxos/plugin-token-manager": "0.8.4-main.7ace549",
100
+ "@dxos/plugin-space": "0.8.4-main.7ace549",
101
+ "@dxos/protocols": "0.8.4-main.7ace549",
102
+ "@dxos/react-edge-client": "0.8.4-main.7ace549",
103
+ "@dxos/react-ui-attention": "0.8.4-main.7ace549",
104
+ "@dxos/react-ui-components": "0.8.4-main.7ace549",
105
+ "@dxos/react-client": "0.8.4-main.7ace549",
106
+ "@dxos/react-ui-editor": "0.8.4-main.7ace549",
107
+ "@dxos/react-ui-form": "0.8.4-main.7ace549",
108
+ "@dxos/react-ui-menu": "0.8.4-main.7ace549",
109
+ "@dxos/react-ui-stack": "0.8.4-main.7ace549",
110
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.7ace549",
111
+ "@dxos/rpc": "0.8.4-main.7ace549",
112
+ "@dxos/schema": "0.8.4-main.7ace549",
113
+ "@dxos/types": "0.8.4-main.7ace549",
114
+ "@dxos/util": "0.8.4-main.7ace549",
115
+ "@dxos/react-ui-list": "0.8.4-main.7ace549",
116
+ "@dxos/rpc-tunnel": "0.8.4-main.7ace549",
117
+ "@dxos/vendor-quickjs": "0.8.4-main.7ace549"
117
118
  },
118
119
  "devDependencies": {
119
120
  "@effect-atom/atom-react": "^0.3.4",
@@ -124,12 +125,12 @@
124
125
  "react": "~19.2.0",
125
126
  "react-dom": "~19.2.0",
126
127
  "vite": "7.1.9",
127
- "@dxos/echo-db": "0.8.4-main.72ec0f3",
128
- "@dxos/plugin-automation": "0.8.4-main.72ec0f3",
129
- "@dxos/random": "0.8.4-main.72ec0f3",
130
- "@dxos/react-ui": "0.8.4-main.72ec0f3",
131
- "@dxos/react-ui-theme": "0.8.4-main.72ec0f3",
132
- "@dxos/storybook-utils": "0.8.4-main.72ec0f3"
128
+ "@dxos/echo-db": "0.8.4-main.7ace549",
129
+ "@dxos/plugin-automation": "0.8.4-main.7ace549",
130
+ "@dxos/random": "0.8.4-main.7ace549",
131
+ "@dxos/react-ui": "0.8.4-main.7ace549",
132
+ "@dxos/react-ui-theme": "0.8.4-main.7ace549",
133
+ "@dxos/storybook-utils": "0.8.4-main.7ace549"
133
134
  },
134
135
  "peerDependencies": {
135
136
  "@effect-atom/atom-react": "^0.3.4",
@@ -137,8 +138,8 @@
137
138
  "effect": "^3.13.3",
138
139
  "react": "^19.0.0",
139
140
  "react-dom": "^19.0.0",
140
- "@dxos/react-ui": "0.8.4-main.72ec0f3",
141
- "@dxos/react-ui-theme": "0.8.4-main.72ec0f3"
141
+ "@dxos/react-ui": "0.8.4-main.7ace549",
142
+ "@dxos/react-ui-theme": "0.8.4-main.7ace549"
142
143
  },
143
144
  "publishConfig": {
144
145
  "access": "public"
@@ -5,9 +5,8 @@
5
5
  import { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';
6
6
  import { Ref } from '@dxos/echo';
7
7
  import { Script } from '@dxos/functions';
8
- import { ClientEvents } from '@dxos/plugin-client';
9
- import { SpaceCapabilities } from '@dxos/plugin-space';
10
- import { defineObjectForm } from '@dxos/plugin-space/types';
8
+ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
9
+ import { type CreateObjectIntent } from '@dxos/plugin-space/types';
11
10
 
12
11
  import {
13
12
  AppGraphBuilder,
@@ -49,6 +48,10 @@ export const ScriptPlugin = definePlugin(meta, () => [
49
48
  iconHue: 'sky',
50
49
  // TODO(wittjosiah): Move out of metadata.
51
50
  loadReferences: async (script: Script.Script) => await Ref.Array.loadAll([script.source]),
51
+ inputSchema: ScriptAction.ScriptProps,
52
+ createObjectIntent: ((props, options) =>
53
+ createIntent(ScriptAction.CreateScript, { ...props, space: options.space })) satisfies CreateObjectIntent,
54
+ addToCollectionOnCreate: true,
52
55
  },
53
56
  }),
54
57
  contributes(Capabilities.Metadata, {
@@ -56,6 +59,10 @@ export const ScriptPlugin = definePlugin(meta, () => [
56
59
  metadata: {
57
60
  icon: 'ph--notebook--regular',
58
61
  iconHue: 'sky',
62
+ inputSchema: ScriptAction.NotebookProps,
63
+ createObjectIntent: ((props, options) =>
64
+ createIntent(ScriptAction.CreateNotebook, { ...props, space: options.space })) satisfies CreateObjectIntent,
65
+ addToCollectionOnCreate: true,
59
66
  },
60
67
  }),
61
68
  ],
@@ -66,31 +73,11 @@ export const ScriptPlugin = definePlugin(meta, () => [
66
73
  activate: AppGraphBuilder,
67
74
  }),
68
75
  defineModule({
69
- id: `${meta.id}/module/script/object-form`,
76
+ id: `${meta.id}/module/schema`,
70
77
  activatesOn: ClientEvents.SetupSchema,
71
- activate: () =>
72
- contributes(
73
- SpaceCapabilities.ObjectForm,
74
- defineObjectForm({
75
- objectSchema: Script.Script,
76
- formSchema: ScriptAction.ScriptProps,
77
- getIntent: (props, options) => createIntent(ScriptAction.CreateScript, { ...props, space: options.space }),
78
- }),
79
- ),
80
- }),
81
- defineModule({
82
- id: `${meta.id}/module/notebook/object-form`,
83
- activatesOn: ClientEvents.SetupSchema,
84
- activate: () =>
85
- contributes(
86
- SpaceCapabilities.ObjectForm,
87
- defineObjectForm({
88
- objectSchema: Notebook.Notebook,
89
- formSchema: ScriptAction.NotebookProps,
90
- getIntent: (props, options) => createIntent(ScriptAction.CreateNotebook, { ...props, space: options.space }),
91
- }),
92
- ),
78
+ activate: () => contributes(ClientCapabilities.Schema, [Script.Script]),
93
79
  }),
80
+
94
81
  defineModule({
95
82
  id: `${meta.id}/module/react-surface`,
96
83
  activatesOn: Events.SetupReactSurface,
@@ -22,7 +22,7 @@ import { getSpace } from '@dxos/react-client/echo';
22
22
  import { DropdownMenu, IconButton, Toolbar, useTranslation } from '@dxos/react-ui';
23
23
  import { useAttention } from '@dxos/react-ui-attention';
24
24
  import { StackItem } from '@dxos/react-ui-stack';
25
- import { Text } from '@dxos/schema';
25
+ import { Text, View } from '@dxos/schema';
26
26
  import { isNonNullable } from '@dxos/util';
27
27
 
28
28
  import { meta } from '../meta';
@@ -63,24 +63,21 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
63
63
  const { name, filter } = builder.build(source);
64
64
  if (filter) {
65
65
  const ast = Query.select(filter).ast;
66
- const view = cell.view?.target;
67
- if (!view) {
68
- const graph = Graph.make({ query: { ast } });
69
- const { view } = await Graph.makeView({
70
- space,
71
- presentation: graph,
72
- });
73
- cell.view = Ref.make(view);
66
+ const graph = cell.graph?.target;
67
+ if (!graph) {
68
+ const { view } = await View.makeFromSpace({ space });
69
+ const graph = Graph.make({ query: { ast }, view });
70
+ cell.graph = Ref.make(graph);
74
71
  cell.name = name;
75
72
  } else {
76
- view.query.ast = ast;
73
+ graph.query.ast = ast;
77
74
  }
78
75
  }
79
76
  }
80
77
 
81
- if (cell.name && cell.view?.target) {
82
- const view = Obj.getSnapshot(cell.view?.target);
83
- const query = Query.fromAst(view.query.ast);
78
+ if (cell.name && cell.graph?.target) {
79
+ const graph = Obj.getSnapshot(cell.graph?.target);
80
+ const query = Query.fromAst(graph.query.ast);
84
81
  const result = await space?.db.query(query).run();
85
82
  const objectIds = result?.objects?.map((obj) => obj.id);
86
83
  setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));
@@ -5,9 +5,9 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { Surface } from '@dxos/app-framework/react';
8
+ import { createDocAccessor } from '@dxos/echo-db';
8
9
  import { invariant } from '@dxos/invariant';
9
10
  import { TemplateEditor } from '@dxos/plugin-assistant';
10
- import { createDocAccessor } from '@dxos/react-client/echo';
11
11
  import { type Space } from '@dxos/react-client/echo';
12
12
  import { useThemeContext, useTranslation } from '@dxos/react-ui';
13
13
  import { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';
@@ -57,7 +57,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
57
57
  : [];
58
58
  }, [cell.source?.target]);
59
59
 
60
- const view = cell.view?.target;
60
+ const explorerGraph = cell.graph?.target;
61
61
 
62
62
  const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(
63
63
  (value: string) => {
@@ -113,7 +113,9 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
113
113
 
114
114
  // TODO(burdon): Remove app-framework deps (via render prop).
115
115
  return (
116
- <div className={mx('bs-full overflow-hidden grid', view && !dragging && 'grid-rows-[min-content_1fr]')}>
116
+ <div
117
+ className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}
118
+ >
117
119
  <QueryEditor
118
120
  id={cell.id}
119
121
  classNames={[editorStyles, 'border-be border-subduedSeparator']}
@@ -121,7 +123,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
121
123
  value={cell.source.target.content}
122
124
  onChange={handleQueryChange}
123
125
  />
124
- {view && !dragging && <Surface role='section' limit={1} data={{ subject: view }} />}
126
+ {explorerGraph && !dragging && <Surface role='section' limit={1} data={{ subject: explorerGraph }} />}
125
127
  </div>
126
128
  );
127
129
 
@@ -4,8 +4,9 @@
4
4
 
5
5
  import React, { useMemo } from 'react';
6
6
 
7
+ import { createDocAccessor } from '@dxos/echo-db';
7
8
  import { type Script } from '@dxos/functions';
8
- import { createDocAccessor, getSpace } from '@dxos/react-client/echo';
9
+ import { getSpace } from '@dxos/react-client/echo';
9
10
  import { useIdentity } from '@dxos/react-client/halo';
10
11
  import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';
11
12
  import { StackItem } from '@dxos/react-ui-stack';
@@ -42,7 +43,7 @@ export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'v
42
43
  createDataExtensions({
43
44
  id: script.id,
44
45
  text: createDocAccessor(script.source.target, ['content']),
45
- space,
46
+ messenger: space,
46
47
  identity,
47
48
  }),
48
49
  ]
@@ -9,11 +9,12 @@ import { ToolId } from '@dxos/ai';
9
9
  import { SettingsAction, createIntent } from '@dxos/app-framework';
10
10
  import { useIntentDispatcher } from '@dxos/app-framework/react';
11
11
  import { Blueprint, Template } from '@dxos/blueprints';
12
+ import { Filter, Obj, Ref } from '@dxos/echo';
12
13
  import { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
13
14
  import { getInvocationUrl } from '@dxos/functions-runtime';
14
15
  import { log } from '@dxos/log';
15
16
  import { useClient } from '@dxos/react-client';
16
- import { Filter, Ref, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';
17
+ import { getSpace, useQuery } from '@dxos/react-client/echo';
17
18
  import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';
18
19
  import { AccessToken } from '@dxos/types';
19
20
  import { kebabize } from '@dxos/util';
@@ -144,7 +145,7 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
144
145
  const space = getSpace(object);
145
146
  const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
146
147
 
147
- const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
148
+ const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
148
149
  const functionUrl =
149
150
  functionId &&
150
151
  getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {
@@ -207,7 +208,7 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
207
208
  const { dispatchPromise: dispatch } = useIntentDispatcher();
208
209
  const space = getSpace(object);
209
210
  const [githubToken] = useQuery(space, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));
210
- const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');
211
+ const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');
211
212
  const [gistUrl, setGistUrl] = useState<string | undefined>();
212
213
 
213
214
  useAsyncEffect(async () => {
@@ -250,7 +251,7 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
250
251
 
251
252
  try {
252
253
  // TODO(wittjosiah): Factor out to intent.
253
- const meta = getMeta(object);
254
+ const meta = Obj.getMeta(object);
254
255
  const githubKey = meta.keys.find(({ source }) => source === 'github.com');
255
256
  const gistId = githubKey?.id;
256
257
  if (gistId) {
@@ -5,7 +5,7 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { useCallback, useMemo, useState } from 'react';
7
7
 
8
- import { createDocAccessor } from '@dxos/react-client/echo';
8
+ import { createDocAccessor } from '@dxos/echo-db';
9
9
  import { createObject } from '@dxos/react-client/echo';
10
10
  import { Toolbar } from '@dxos/react-ui';
11
11
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
@@ -4,10 +4,11 @@
4
4
 
5
5
  import { useEffect, useMemo } from 'react';
6
6
 
7
+ import { Obj, Query, Ref } from '@dxos/echo';
7
8
  import { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
8
9
  import { log } from '@dxos/log';
9
10
  import { type Client, useClient } from '@dxos/react-client';
10
- import { Query, Ref, type Space, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';
11
+ import { type Space, getSpace, useQuery } from '@dxos/react-client/echo';
11
12
  import { type TFunction } from '@dxos/react-ui';
12
13
  import { createMenuAction } from '@dxos/react-ui-menu';
13
14
  import { errorMessageColors } from '@dxos/react-ui-theme';
@@ -119,6 +120,6 @@ export const useDeployDeps = ({ script }: { script: Script.Script }) => {
119
120
  const client = useClient();
120
121
  const space = getSpace(script);
121
122
  const [fn] = useQuery(space, Query.type(Function.Function, { source: Ref.make(script) }));
122
- const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(getMeta(fn)), [fn]);
123
+ const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(Obj.getMeta(fn)), [fn]);
123
124
  return { client, space, fn, existingFunctionId };
124
125
  };
@@ -19,6 +19,7 @@ export const translations = [
19
19
  'object name placeholder': 'New script',
20
20
  'rename object label': 'Rename script',
21
21
  'delete object label': 'Delete script',
22
+ 'object deleted label': 'Script deleted',
22
23
  },
23
24
  [Notebook.Notebook.typename]: {
24
25
  'typename label': 'Notebook',
@@ -28,6 +29,7 @@ export const translations = [
28
29
  'object name placeholder': 'New notebook',
29
30
  'rename object label': 'Rename notebook',
30
31
  'delete object label': 'Delete notebook',
32
+ 'object deleted label': 'Notebook deleted',
31
33
  },
32
34
  [meta.id]: {
33
35
  'plugin name': 'Scripts',
@@ -6,9 +6,10 @@ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Prompt } from '@dxos/blueprints';
8
8
  import { Obj, Type } from '@dxos/echo';
9
- import { FormAnnotation } from '@dxos/echo/internal';
9
+ import { FormInputAnnotation } from '@dxos/echo/internal';
10
10
  import { LabelAnnotation } from '@dxos/echo/internal';
11
- import { Text, View } from '@dxos/schema';
11
+ import { Graph } from '@dxos/plugin-explorer/types';
12
+ import { Text } from '@dxos/schema';
12
13
 
13
14
  export type CellType = 'markdown' | 'script' | 'query' | 'prompt' | 'view';
14
15
 
@@ -19,7 +20,7 @@ const Cell_ = Schema.Struct({
19
20
  // TODO(burdon): Union type.
20
21
  source: Schema.optional(Type.Ref(Text.Text)),
21
22
  prompt: Schema.optional(Type.Ref(Prompt.Prompt)),
22
- view: Schema.optional(Type.Ref(View.View)),
23
+ graph: Schema.optional(Type.Ref(Graph.Graph)),
23
24
  }).pipe(Schema.mutable);
24
25
  export interface Cell extends Schema.Schema.Type<typeof Cell_> {}
25
26
  export interface Cell_Encoded extends Schema.Schema.Encoded<typeof Cell_> {}
@@ -27,7 +28,7 @@ export const Cell: Schema.Schema<Cell, Cell_Encoded> = Cell_;
27
28
 
28
29
  export const Notebook = Schema.Struct({
29
30
  name: Schema.String.pipe(Schema.optional),
30
- cells: Cell.pipe(Schema.Array, Schema.mutable, FormAnnotation.set(false)),
31
+ cells: Cell.pipe(Schema.Array, Schema.mutable, FormInputAnnotation.set(false)),
31
32
  }).pipe(
32
33
  Type.Obj({
33
34
  typename: 'dxos.org/type/Notebook',
@@ -5,11 +5,10 @@
5
5
  import { type Client } from '@dxos/client';
6
6
  import { Obj, Ref } from '@dxos/echo';
7
7
  import { Function, type Script, getUserFunctionIdInMetadata, setUserFunctionIdInMetadata } from '@dxos/functions';
8
- import { Bundler } from '@dxos/functions-runtime/bundler';
8
+ import { bundleFunction } from '@dxos/functions-runtime/bundler';
9
9
  import { incrementSemverPatch, uploadWorkerFunction } from '@dxos/functions-runtime/edge';
10
10
  import { log } from '@dxos/log';
11
11
  import { type Space } from '@dxos/react-client/echo';
12
- import { isNode } from '@dxos/util';
13
12
 
14
13
  import { updateFunctionMetadata } from './functions';
15
14
 
@@ -44,8 +43,9 @@ export const deployScript = async ({
44
43
  }
45
44
 
46
45
  try {
47
- const bundler = new Bundler({ platform: isNode() ? 'node' : 'browser', sandboxedModules: [], remoteModules: {} });
48
- const buildResult = await bundler.bundle({ source: script.source!.target!.content });
46
+ const buildResult = await bundleFunction({
47
+ source: script.source!.target!.content,
48
+ });
49
49
  if ('error' in buildResult) {
50
50
  throw buildResult.error || new Error('Bundle creation failed');
51
51
  }
@@ -2,12 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Obj } from '@dxos/echo';
5
6
  import { type Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
6
7
  import { getInvocationUrl } from '@dxos/functions-runtime';
7
8
  import { type PublicKey } from '@dxos/keys';
8
9
  import { log } from '@dxos/log';
9
10
  import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
10
- import { getMeta, getSpace } from '@dxos/react-client/echo';
11
+ import { getSpace } from '@dxos/react-client/echo';
11
12
  /**
12
13
  * Get the function URL for a given script and client configuration
13
14
  */
@@ -21,7 +22,7 @@ export const getFunctionUrl = ({
21
22
  edgeUrl: string;
22
23
  }): string | undefined => {
23
24
  const space = getSpace(script);
24
- const existingFunctionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
25
+ const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
25
26
 
26
27
  if (!existingFunctionId) {
27
28
  return undefined;