@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
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  DEPLOYMENT_DIALOG,
3
3
  DeploymentDialog_default
4
- } from "./chunk-3IJASGG5.mjs";
5
- import "./chunk-5JSNQYZZ.mjs";
6
- import "./chunk-LNNCD2H4.mjs";
4
+ } from "./chunk-SAN5Y7FI.mjs";
5
+ import "./chunk-ULJFT73Q.mjs";
6
+ import "./chunk-QIZ3BPRK.mjs";
7
7
  import "./chunk-2G2NA6DQ.mjs";
8
8
  import "./chunk-EB6AXFXO.mjs";
9
9
  import "./chunk-J5LGTIGS.mjs";
@@ -11,4 +11,4 @@ export {
11
11
  DEPLOYMENT_DIALOG,
12
12
  DeploymentDialog_default as default
13
13
  };
14
- //# sourceMappingURL=DeploymentDialog-MZX4T77L.mjs.map
14
+ //# sourceMappingURL=DeploymentDialog-5TKNGPVR.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  NotebookMenu,
3
3
  NotebookStack
4
- } from "./chunk-4M7U2WVT.mjs";
4
+ } from "./chunk-ALS6X4HU.mjs";
5
5
  import "./chunk-M6KJPUJK.mjs";
6
6
  import {
7
7
  meta
@@ -29,7 +29,7 @@ import { getSpace } from "@dxos/react-client/echo";
29
29
  import { DropdownMenu, IconButton, Toolbar, useTranslation } from "@dxos/react-ui";
30
30
  import { useAttention } from "@dxos/react-ui-attention";
31
31
  import { StackItem } from "@dxos/react-ui-stack";
32
- import { Text } from "@dxos/schema";
32
+ import { Text, View } from "@dxos/schema";
33
33
  import { isNonNullable } from "@dxos/util";
34
34
 
35
35
  // src/notebook/compute-graph.ts
@@ -587,27 +587,27 @@ var NotebookContainer = ({ notebook, env }) => {
587
587
  const { name, filter } = builder.build(source);
588
588
  if (filter) {
589
589
  const ast = Query.select(filter).ast;
590
- const view = cell.view?.target;
591
- if (!view) {
592
- const graph2 = Graph.make({
590
+ const graph2 = cell.graph?.target;
591
+ if (!graph2) {
592
+ const { view } = await View.makeFromSpace({
593
+ space
594
+ });
595
+ const graph3 = Graph.make({
593
596
  query: {
594
597
  ast
595
- }
596
- });
597
- const { view: view2 } = await Graph.makeView({
598
- space,
599
- presentation: graph2
598
+ },
599
+ view
600
600
  });
601
- cell.view = Ref.make(view2);
601
+ cell.graph = Ref.make(graph3);
602
602
  cell.name = name;
603
603
  } else {
604
- view.query.ast = ast;
604
+ graph2.query.ast = ast;
605
605
  }
606
606
  }
607
607
  }
608
- if (cell.name && cell.view?.target) {
609
- const view = Obj.getSnapshot(cell.view?.target);
610
- const query = Query.fromAst(view.query.ast);
608
+ if (cell.name && cell.graph?.target) {
609
+ const graph2 = Obj.getSnapshot(cell.graph?.target);
610
+ const query = Query.fromAst(graph2.query.ast);
611
611
  const result = await space?.db.query(query).run();
612
612
  const objectIds = result?.objects?.map((obj) => obj.id);
613
613
  setQueryValues((prev) => ({
@@ -626,7 +626,7 @@ var NotebookContainer = ({ notebook, env }) => {
626
626
  const handleExecPrompts = useComputeRuntimeCallback(space, Effect.fnUntraced(function* () {
627
627
  invariant2(graph, void 0, {
628
628
  F: __dxlog_file3,
629
- L: 96,
629
+ L: 93,
630
630
  S: this,
631
631
  A: [
632
632
  "graph",
@@ -664,7 +664,7 @@ var NotebookContainer = ({ notebook, env }) => {
664
664
  const handleRearrange = useCallback((source, target) => {
665
665
  invariant2(notebook, void 0, {
666
666
  F: __dxlog_file3,
667
- L: 129,
667
+ L: 126,
668
668
  S: void 0,
669
669
  A: [
670
670
  "notebook",
@@ -685,7 +685,7 @@ var NotebookContainer = ({ notebook, env }) => {
685
685
  const handleCellInsert = useCallback(async (type, after) => {
686
686
  invariant2(notebook, void 0, {
687
687
  F: __dxlog_file3,
688
- L: 144,
688
+ L: 141,
689
689
  S: void 0,
690
690
  A: [
691
691
  "notebook",
@@ -724,7 +724,7 @@ var NotebookContainer = ({ notebook, env }) => {
724
724
  const handleCellDelete = useCallback((id) => {
725
725
  invariant2(notebook, void 0, {
726
726
  F: __dxlog_file3,
727
- L: 174,
727
+ L: 171,
728
728
  S: void 0,
729
729
  A: [
730
730
  "notebook",
@@ -794,7 +794,7 @@ var runPrompt = Effect.fn(function* ({ prompt, input, onResult }) {
794
794
  const error = Cause.prettyErrors(cause)[0];
795
795
  log2.error(error.message, error.cause ?? error.stack, {
796
796
  F: __dxlog_file3,
797
- L: 250,
797
+ L: 247,
798
798
  S: this,
799
799
  C: (f, a) => f(...a)
800
800
  });
@@ -814,4 +814,4 @@ export {
814
814
  NotebookContainer,
815
815
  NotebookContainer_default as default
816
816
  };
817
- //# sourceMappingURL=NotebookContainer-RTESC4OV.mjs.map
817
+ //# sourceMappingURL=NotebookContainer-MHY3DXDE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/NotebookContainer.tsx", "../../../src/notebook/compute-graph.ts", "../../../src/notebook/eval.ts", "../../../src/notebook/vfs-parser.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { Agent } from '@dxos/assistant-toolkit';\nimport { Blueprint, Prompt } from '@dxos/blueprints';\nimport { Filter, Obj, Query, Ref } from '@dxos/echo';\nimport { QueryBuilder } from '@dxos/echo-query';\nimport { type FunctionDefinition, FunctionInvocationService } from '@dxos/functions';\nimport { InvocationTracer } from '@dxos/functions-runtime';\nimport { TracingServiceExt } from '@dxos/functions-runtime';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { useComputeRuntimeCallback } from '@dxos/plugin-automation';\nimport { Graph } from '@dxos/plugin-explorer/types';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { DropdownMenu, IconButton, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Text, View } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport { ComputeGraph } from '../notebook';\nimport { type Notebook } from '../types';\n\nimport { NotebookMenu, NotebookStack, type NotebookStackProps } from './NotebookStack';\nimport { type TypescriptEditorProps } from './TypescriptEditor';\n\nconst INCLUDE_BLUEPRINTS = ['dxos.org/blueprint/assistant', 'dxos.org/blueprint/markdown'];\n\n// TODO(burdon): Support calling named deployed functions (as with sheet).\n\nexport type NotebookContainerProps = {\n role?: string;\n notebook?: Notebook.Notebook;\n} & Pick<TypescriptEditorProps, 'env'>;\n\nexport const NotebookContainer = ({ notebook, env }: NotebookContainerProps) => {\n const { t } = useTranslation(meta.id);\n const space = getSpace(notebook);\n const attendableId = notebook ? Obj.getDXN(notebook).toString() : '';\n const { hasAttention } = useAttention(attendableId);\n\n // TODO(burdon): Consolidate execution and state (with graph).\n // Generalize ComputeGraph evaluation function (using effects).\n const graph = useMemo(() => notebook && new ComputeGraph(notebook), [notebook]);\n\n const [queryValues, setQueryValues] = useState<Record<string, any>>({});\n const handleExecQueries = useCallback(async () => {\n invariant(space);\n\n const builder = new QueryBuilder();\n for (const cell of notebook?.cells ?? []) {\n if (cell.type === 'query') {\n if (cell.source?.target) {\n const source = cell.source.target.content;\n const { name, filter } = builder.build(source);\n if (filter) {\n const ast = Query.select(filter).ast;\n const graph = cell.graph?.target;\n if (!graph) {\n const { view } = await View.makeFromSpace({ space });\n const graph = Graph.make({ query: { ast }, view });\n cell.graph = Ref.make(graph);\n cell.name = name;\n } else {\n graph.query.ast = ast;\n }\n }\n }\n\n if (cell.name && cell.graph?.target) {\n const graph = Obj.getSnapshot(cell.graph?.target);\n const query = Query.fromAst(graph.query.ast);\n const result = await space?.db.query(query).run();\n const objectIds = result?.objects?.map((obj) => obj.id);\n setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));\n }\n }\n }\n }, [space, notebook, graph]);\n\n const [promptResults, setPromptResults] = useState<Record<string, string>>({});\n const handleExecPrompts = useComputeRuntimeCallback(\n space,\n Effect.fnUntraced(function* () {\n invariant(graph);\n\n const prompts =\n notebook?.cells\n .filter((cell) => cell.type === 'prompt')\n .map((cell) => cell.prompt)\n .filter(isNonNullable) ?? [];\n\n for (const prompt of prompts) {\n yield* runPrompt({\n prompt,\n input: { ...queryValues, ...graph.valuesByName.value },\n onResult: (result) =>\n setPromptResults((prev) => ({\n ...prev,\n [prompt.dxn.toString()]: result,\n })),\n });\n }\n }),\n [notebook, graph, queryValues],\n );\n\n // TODO(burdon): Cache values in context (preserve when switched).\n const handleCompute = useCallback(async () => {\n // TODO(burdon): Generalize executors (dependencies).\n await graph?.evaluate();\n await handleExecQueries();\n await handleExecPrompts();\n }, [graph, handleExecQueries, handleExecPrompts]);\n\n const handleRearrange = useCallback<NonNullable<NotebookStackProps['onRearrange']>>(\n (source, target) => {\n invariant(notebook);\n const from = notebook.cells.findIndex((cell) => cell.id === source.id);\n const to = notebook.cells.findIndex((cell) => cell.id === target.id);\n if (from != null && to != null) {\n const cell = notebook.cells.splice(from, 1)[0];\n if (cell) {\n notebook.cells.splice(to, 0, cell);\n }\n }\n },\n [notebook],\n );\n\n const handleCellInsert = useCallback<NonNullable<NotebookStackProps['onCellInsert']>>(\n async (type, after) => {\n invariant(notebook);\n const cell: Notebook.Cell = { id: crypto.randomUUID(), type };\n switch (type) {\n case 'markdown':\n case 'script':\n case 'query': {\n cell.source = Ref.make(Text.make());\n break;\n }\n\n case 'prompt': {\n if (space) {\n const result = await space.db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();\n const blueprints = result.objects\n .filter((blueprint) => INCLUDE_BLUEPRINTS.includes(blueprint.key))\n .map((blueprint) => Ref.make(blueprint));\n cell.prompt = Ref.make(Prompt.make({ instructions: '', blueprints }));\n }\n break;\n }\n }\n\n const idx = after ? notebook.cells.findIndex((cell) => cell.id === after) : notebook.cells.length;\n notebook.cells.splice(idx, 0, cell);\n },\n [space, notebook],\n );\n\n const handleCellDelete = useCallback<NonNullable<NotebookStackProps['onCellDelete']>>(\n (id) => {\n invariant(notebook);\n const idx = notebook.cells.findIndex((cell) => cell.id === id);\n if (idx !== -1) {\n notebook.cells.splice(idx, 1);\n }\n },\n [notebook],\n );\n\n return (\n <StackItem.Content toolbar>\n <Toolbar.Root disabled={!hasAttention} textBlockWidth>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton icon='ph--plus--regular' iconOnly label={t('notebook cell insert label')} />\n </DropdownMenu.Trigger>\n <NotebookMenu onCellInsert={handleCellInsert} />\n </DropdownMenu.Root>\n <Toolbar.IconButton\n icon='ph--play--fill'\n iconOnly\n label={t('compute label')}\n classNames='text-green-500'\n onClick={handleCompute}\n />\n </Toolbar.Root>\n <div role='none' className='flex bs-full overflow-hidden -mis-[1px] -mie-[1px]'>\n <NotebookStack\n classNames='container-max-width border-l border-r border-subduedSeparator'\n space={space}\n notebook={notebook}\n graph={graph}\n env={env}\n promptResults={promptResults}\n onRearrange={handleRearrange}\n onCellInsert={handleCellInsert}\n onCellDelete={handleCellDelete}\n />\n </div>\n </StackItem.Content>\n );\n};\n\nexport default NotebookContainer;\n\n// TODO(wittjosiah): Factor out. Copied from PromptArticle in plugin-assistant.\nconst runPrompt = Effect.fn(function* ({\n prompt,\n input,\n onResult,\n}: {\n prompt: Ref.Ref<Prompt.Prompt>;\n input: Record<string, any>;\n onResult: (result: string) => void;\n}) {\n const inputData: FunctionDefinition.Input<typeof Agent.prompt> = {\n prompt,\n input,\n };\n const tracer = yield* InvocationTracer;\n const trace = yield* tracer.traceInvocationStart({\n target: undefined,\n payload: {\n data: {},\n },\n });\n\n // Invoke the function.\n const result = yield* FunctionInvocationService.invokeFunction(Agent.prompt, inputData).pipe(\n Effect.provide(TracingServiceExt.layerQueue(trace.invocationTraceQueue)),\n Effect.exit,\n );\n\n Exit.match(result, {\n onFailure: (cause) => {\n const error = Cause.prettyErrors(cause)[0];\n log.error(error.message, error.cause ?? error.stack);\n onResult(error.message);\n },\n onSuccess: (result: any) => {\n onResult(result.note);\n },\n });\n\n yield* tracer.traceInvocationEnd({\n trace,\n // TODO(dmaretskyi): Might miss errors.\n exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Signal, signal } from '@preact/signals-core';\n\nimport { log } from '@dxos/log';\n\nimport { type Notebook } from '../types';\n\nimport { evalScript } from './eval';\nimport { type ParsedExpression, VirtualTypeScriptParser } from './vfs-parser';\n\n/**\n * Compute graph that evaluates the notebook cells.\n */\n// TODO(burdon): Reconcile with @dxos/conductor.\nexport class ComputeGraph {\n private readonly _parser = new VirtualTypeScriptParser();\n\n private _expressions = signal<Record<string, ParsedExpression>>({});\n private _valuesByCellId = signal<Record<string, any>>({});\n private _valuesByName = signal<Record<string, any>>({});\n\n constructor(private readonly _notebook: Notebook.Notebook) {}\n\n /**\n * Parsed expressions by cell ID.\n */\n get expressions(): Signal<Record<string, ParsedExpression>> {\n return this._expressions;\n }\n\n /**\n * Computed values by cell ID.\n */\n get values(): Signal<Record<string, any>> {\n return this._valuesByCellId;\n }\n\n /**\n * Computed values by name.\n */\n get valuesByName(): Signal<Record<string, any>> {\n return this._valuesByName;\n }\n\n /**\n * Get computed value by cell ID.\n */\n getValue(cellId: string) {\n return this._valuesByCellId.value[cellId];\n }\n\n /**\n * Compute values.\n */\n async evaluate() {\n // Parse expressions.\n const { expressions, dependencyGraph } = this.parse();\n this._valuesByCellId.value = {};\n this._valuesByName.value = {};\n\n // Create a map of cell IDs to expressions for easy lookup.\n const cellExpressions = new Map<string, ParsedExpression>();\n Object.entries(expressions).forEach(([id, expr]) => {\n cellExpressions.set(id, expr);\n });\n\n // Topological sort to determine evaluation order.\n const evaluationOrder = this.topologicalSort(Object.keys(expressions), dependencyGraph);\n\n // Values by reference name.\n const valuesByName: Record<string, any> = {};\n const valuesByCellId: Record<string, any> = {};\n\n // Evaluate cells in dependency order.\n for (const cellId of evaluationOrder) {\n const expr = cellExpressions.get(cellId);\n if (!expr) {\n log.error('no expression for cell', { cellId });\n continue;\n }\n\n const cellSource = this._notebook.cells.find((cell) => cell.id === cellId)?.source?.target?.content;\n if (!cellSource) {\n log.error('no source for cell', { cellId });\n continue;\n }\n\n try {\n // For assignments or declarations, evaluate and store the value.\n if (expr.name && expr.value !== undefined) {\n // If the parser extracted a literal value, use it directly.\n valuesByName[expr.name] = expr.value;\n valuesByCellId[cellId] = expr.value;\n } else if (expr.name) {\n // For non-literal assignments, we need to evaluate the expression.\n // The parser identifies it's an assignment, so we can extract the RHS.\n const equalIndex = cellSource.indexOf('=');\n if (equalIndex !== -1) {\n // Find the actual assignment operator (not in strings or other contexts).\n let rhs = cellSource.substring(equalIndex + 1).trim();\n\n // Handle semicolon at the end.\n if (rhs.endsWith(';')) {\n rhs = rhs.slice(0, -1).trim();\n }\n\n const result = await this.eval(rhs, valuesByName);\n valuesByName[expr.name] = result;\n if (typeof result !== 'function') {\n valuesByCellId[cellId] = result;\n }\n }\n } else {\n // For expressions without assignment, just evaluate.\n const result = await this.eval(cellSource, valuesByName);\n valuesByCellId[cellId] = result;\n }\n } catch (error) {\n // TODO(burdon): Set error state.\n log.error('error evaluating cell', { cellId, error });\n }\n }\n\n this._valuesByCellId.value = valuesByCellId;\n this._valuesByName.value = valuesByName;\n return valuesByCellId;\n }\n\n private async eval(source: string, values: Record<string, any>) {\n return evalScript(source, values);\n }\n\n /**\n * Parse expressions.\n */\n parse() {\n const expressions = this._notebook.cells\n .filter((cell) => cell.type === 'script')\n .reduce<Record<string, ParsedExpression>>((acc, cell) => {\n const text = cell.source?.target?.content.trim();\n if (text) {\n const parsed = this._parser.parseExpression(text);\n acc[cell.id] = parsed;\n }\n\n return acc;\n }, {});\n\n // Build dependency graph.\n const dependencyGraph = this.buildDependencyGraph(expressions);\n this._expressions.value = expressions;\n return { expressions, dependencyGraph };\n }\n\n private topologicalSort(nodes: string[], dependencies: Record<string, string[]>): string[] {\n const visited = new Set<string>();\n const result: string[] = [];\n\n const visit = (node: string) => {\n if (visited.has(node)) {\n return;\n }\n\n visited.add(node);\n\n // Visit dependencies first.\n const deps = dependencies[node] || [];\n deps.forEach((dep) => visit(dep));\n result.push(node);\n };\n\n // Visit all nodes.\n nodes.forEach((node) => visit(node));\n return result;\n }\n\n private buildDependencyGraph(expressions: Record<string, ParsedExpression>): Record<string, string[]> {\n // Create a map of variable names to their cell IDs.\n const nameToCellId = new Map<string, string>();\n Object.entries(expressions).forEach(([id, expr]) => {\n if (expr.name) {\n nameToCellId.set(expr.name, id);\n }\n });\n\n // Build the dependency graph using cell IDs.\n const graph: Record<string, string[]> = {};\n Object.entries(expressions).forEach(([id, expr]) => {\n if (expr.references && expr.references.length > 0) {\n // Map variable references to cell IDs.\n const dependencyCellIds = expr.references\n .map((ref) => nameToCellId.get(ref))\n .filter((cellId): cellId is string => cellId !== undefined && cellId !== id);\n\n if (dependencyCellIds.length > 0) {\n graph[id] = dependencyCellIds;\n }\n }\n });\n\n return graph;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { trim } from '@dxos/util';\n\n/**\n * Evaluate the script (with dependencies as arguments).\n */\nexport const evalScript = async (code: string, deps: Record<string, any> = {}) => {\n // Create a sandboxed environment that blocks access to window and document.\n const sandbox = {\n ...deps,\n\n // Block access to global objects.\n console: undefined,\n document: undefined,\n global: undefined,\n globalThis: undefined,\n self: undefined,\n window: undefined,\n\n // Allow some safe globals.\n Array,\n Boolean,\n Date,\n Error,\n JSON,\n Map,\n Math,\n Number,\n Object,\n Promise,\n RegExp,\n Set,\n String,\n\n // Functions.\n isFinite,\n isNaN,\n parseFloat,\n parseInt,\n\n // Note: undefined and null are not included as they are keywords, not variables.\n };\n\n // Create function with all sandbox keys as parameters.\n const sandboxKeys = Object.keys(sandbox);\n const sandboxValues = Object.values(sandbox);\n\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n const fn = new Function(\n ...sandboxKeys,\n trim`\n 'use strict';\n return ${code};\n `,\n );\n\n return fn(...sandboxValues);\n};\n\n/**\n * Globals.\n */\nexport const builtIns = new Set([\n // Types.\n 'Array',\n 'Date',\n 'Error',\n 'JSON',\n 'Map',\n 'Math',\n 'Number',\n 'Object',\n 'Promise',\n 'RegExp',\n 'Set',\n 'String',\n\n // Functions.\n 'isFinite',\n 'isNaN',\n 'parseFloat',\n 'parseInt',\n]);\n\n/**\n * Default system definitions.\n */\nexport const systemDefinitions = trim`\n interface Array<T> { length: number; [n: number]: T; }\n interface Boolean {}\n interface Function {}\n interface IArguments {}\n interface Number {}\n interface Object {}\n interface RegExp {}\n interface String { length: number; }\n\n interface CallableFunction extends Function {}\n interface NewableFunction extends Function {}\n\n declare var console: { log(...args: any[]): void };\n`;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createSystem, createVirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport ts from 'typescript';\n\nimport { invariant } from '@dxos/invariant';\n\nimport { builtIns, systemDefinitions } from './eval';\n\n/**\n * Default system definitions.\n */\nconst systemFiles: VirtualFile[] = [\n {\n filename: '/lib.d.ts',\n content: systemDefinitions,\n },\n];\n\nexport type ParsedExpression = {\n name?: string;\n type?: 'function' | 'variable' | 'class' | 'interface';\n value?: any;\n valueType?: string;\n parameters?: Array<{ name: string; type: string }>;\n returnType?: string;\n references?: string[];\n};\n\nexport type VirtualFile = {\n filename: string;\n content: string;\n};\n\n/**\n * TypeScript parser using Virtual File System for browser compatibility.\n * This provides full TypeScript analysis including type information.\n */\nexport class VirtualTypeScriptParser {\n protected compilerOptions: ts.CompilerOptions = {\n target: ts.ScriptTarget.ES2020,\n module: ts.ModuleKind.ESNext,\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInfilenames: true,\n jsx: ts.JsxEmit.React,\n noLib: true, // Don't automatically include default lib files.\n };\n\n /**\n * Parse a single expression or statement.\n */\n parseExpression(input: string): ParsedExpression {\n invariant(input.trim() !== '', 'input must not be empty');\n const files: VirtualFile[] = [{ filename: '/temp.ts', content: input }];\n const analysis = this.analyzeFiles(files);\n\n // If no declarations found, check for standalone expression references.\n if (analysis.length === 0) {\n const sourcefilename = '/temp.ts';\n const env = this.createEnvironment([{ filename: sourcefilename, content: input }]);\n const sourceFile = env.getSourceFile(sourcefilename);\n const typeChecker = env.languageService.getProgram()?.getTypeChecker();\n\n if (sourceFile && typeChecker) {\n // Check for assignment expressions.\n const assignmentInfo = this.findAssignmentExpression(sourceFile, typeChecker);\n if (assignmentInfo) {\n return assignmentInfo;\n }\n\n const references = this.findAllReferences(sourceFile, typeChecker);\n return { references };\n }\n }\n\n return analysis[0];\n }\n\n /**\n * Analyze multiple files with full type information.\n */\n analyzeFiles(files: VirtualFile[]): ParsedExpression[] {\n const env = this.createEnvironment(files);\n const results: ParsedExpression[] = [];\n const typeChecker = env.languageService.getProgram()?.getTypeChecker();\n\n // Analyze each file.\n files.forEach((file) => {\n const sourceFile = env.getSourceFile(file.filename);\n if (!sourceFile || !typeChecker) return;\n\n const fileResults = this.analyzeSourceFile(sourceFile, typeChecker);\n results.push(...fileResults);\n });\n\n return results;\n }\n\n /**\n * Analyze a source file with type information.\n */\n protected analyzeSourceFile(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker): ParsedExpression[] {\n const results: ParsedExpression[] = [];\n\n const visit = (node: ts.Node) => {\n // Function declarations.\n if (ts.isFunctionDeclaration(node) && node.name) {\n const symbol = typeChecker.getSymbolAtLocation(node.name);\n const type = symbol && typeChecker.getTypeOfSymbolAtLocation(symbol, node);\n const signature = type && typeChecker.getSignaturesOfType(type, ts.SignatureKind.Call)[0];\n\n results.push({\n name: node.name.text,\n type: 'function',\n parameters: this.extractParameters(signature, typeChecker),\n returnType: signature ? typeChecker.typeToString(signature.getReturnType()) : 'any',\n references: this.findReferences(node, sourceFile, typeChecker),\n });\n }\n\n // Variable declarations.\n else if (ts.isVariableStatement(node)) {\n node.declarationList.declarations.forEach((declaration) => {\n if (ts.isIdentifier(declaration.name)) {\n const symbol = typeChecker.getSymbolAtLocation(declaration.name);\n const type = symbol && typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);\n\n let kind: 'function' | 'variable' = 'variable';\n let parameters: Array<{ name: string; type: string }> | undefined;\n let returnType: string | undefined;\n let value: any;\n\n // Get the type string.\n const typeString = type ? typeChecker.typeToString(type) : 'any';\n\n // Check if it's a function.\n if (declaration.initializer) {\n if (ts.isArrowFunction(declaration.initializer) || ts.isFunctionExpression(declaration.initializer)) {\n kind = 'function';\n const funcType = typeChecker.getTypeAtLocation(declaration.initializer);\n const signature = typeChecker.getSignaturesOfType(funcType, ts.SignatureKind.Call)[0];\n if (signature) {\n parameters = this.extractParameters(signature, typeChecker);\n returnType = typeChecker.typeToString(signature.getReturnType());\n }\n } else {\n // Extract literal values\n if (ts.isNumericLiteral(declaration.initializer)) {\n value = Number(declaration.initializer.text);\n } else if (ts.isStringLiteral(declaration.initializer)) {\n value = declaration.initializer.text;\n }\n }\n }\n\n // Find references in the initializer only.\n const refs = declaration.initializer\n ? this.findReferences(declaration.initializer, sourceFile, typeChecker)\n : [];\n\n results.push({\n name: declaration.name.text,\n type: kind,\n valueType: typeString,\n value,\n parameters,\n returnType,\n references: refs,\n });\n }\n });\n }\n\n // Class declarations.\n else if (ts.isClassDeclaration(node) && node.name) {\n results.push({\n name: node.name.text,\n type: 'class',\n references: this.findReferences(node, sourceFile, typeChecker),\n });\n }\n\n // Interface declarations.\n else if (ts.isInterfaceDeclaration(node)) {\n results.push({\n name: node.name.text,\n type: 'interface',\n references: this.findReferences(node, sourceFile, typeChecker),\n });\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return results;\n }\n\n /**\n * Extract parameter information from a signature.\n */\n private extractParameters(\n signature: ts.Signature | undefined,\n typeChecker: ts.TypeChecker,\n ): Array<{ name: string; type: string }> {\n if (!signature) return [];\n\n return signature.parameters.map((param) => ({\n name: param.getName(),\n type: typeChecker.typeToString(typeChecker.getTypeOfSymbolAtLocation(param, param.valueDeclaration!)),\n }));\n }\n\n /**\n * Find all references to variables used in a node.\n */\n private findReferences(node: ts.Node, _sourceFile: ts.SourceFile, _typeChecker: ts.TypeChecker): string[] {\n const references = new Set<string>();\n const localSymbols = new Set<string>();\n\n // First, collect local symbols (parameters, local variables).\n const collectLocalSymbols = (node: ts.Node) => {\n if (ts.isFunctionDeclaration(node) || ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n node.parameters.forEach((param) => {\n if (ts.isIdentifier(param.name)) {\n localSymbols.add(param.name.text);\n }\n });\n }\n\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n localSymbols.add(node.name.text);\n }\n\n ts.forEachChild(node, collectLocalSymbols);\n };\n\n collectLocalSymbols(node);\n\n // Then find all identifier references.\n const findRefs = (node: ts.Node) => {\n if (ts.isIdentifier(node)) {\n // Skip if it's a local symbol.\n if (!localSymbols.has(node.text)) {\n // Check if it's a reference (not a declaration).\n const parent = node.parent;\n const isDeclaration =\n (ts.isVariableDeclaration(parent) && parent.name === node) ||\n (ts.isFunctionDeclaration(parent) && parent.name === node) ||\n (ts.isParameter(parent) && parent.name === node);\n\n if (!isDeclaration && !this.isBuiltIn(node.text)) {\n references.add(node.text);\n }\n }\n }\n ts.forEachChild(node, findRefs);\n };\n\n findRefs(node);\n return Array.from(references);\n }\n\n /**\n * Check if a name is a built-in global.\n */\n protected isBuiltIn(name: string): boolean {\n return builtIns.has(name);\n }\n\n /**\n * Find assignment expressions in a source file.\n */\n private findAssignmentExpression(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker): ParsedExpression | null {\n let result: ParsedExpression | null = null;\n\n const visit = (node: ts.Node) => {\n if (ts.isExpressionStatement(node) && ts.isBinaryExpression(node.expression)) {\n const expr = node.expression;\n if (expr.operatorToken.kind === ts.SyntaxKind.EqualsToken && ts.isIdentifier(expr.left)) {\n const type = typeChecker.getTypeAtLocation(expr.right);\n const typeString = typeChecker.typeToString(type);\n\n // Get the literal value if it's a literal.\n let value: any;\n if (ts.isNumericLiteral(expr.right)) {\n value = Number(expr.right.text);\n } else if (ts.isStringLiteral(expr.right)) {\n value = expr.right.text;\n }\n\n // Find references in the right-hand side.\n const references = this.findReferences(expr.right, sourceFile, typeChecker);\n\n result = {\n name: expr.left.text,\n type: 'variable',\n valueType: typeString,\n value,\n references,\n };\n }\n }\n if (!result) {\n ts.forEachChild(node, visit);\n }\n };\n\n visit(sourceFile);\n return result;\n }\n\n /**\n * Find all identifier references in a source file.\n */\n protected findAllReferences(sourceFile: ts.SourceFile, _typeChecker: ts.TypeChecker): string[] {\n const references = new Set<string>();\n\n const visit = (node: ts.Node) => {\n if (ts.isIdentifier(node)) {\n // Skip if it's a declaration.\n const parent = node.parent;\n const isDeclaration =\n (ts.isVariableDeclaration(parent) && parent.name === node) ||\n (ts.isFunctionDeclaration(parent) && parent.name === node) ||\n (ts.isParameter(parent) && parent.name === node);\n\n // Skip if it's the left-hand side of an assignment.\n const isAssignmentTarget =\n ts.isBinaryExpression(parent) &&\n parent.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n parent.left === node;\n\n if (!isDeclaration && !isAssignmentTarget && !this.isBuiltIn(node.text)) {\n references.add(node.text);\n }\n }\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return Array.from(references);\n }\n\n protected createEnvironment(files: VirtualFile[]) {\n const allFiles = [...systemFiles, ...files];\n\n const fileMap = new Map<string, string>();\n allFiles.forEach(({ filename, content }) => {\n fileMap.set(filename, content);\n });\n\n const system = createSystem(fileMap);\n return createVirtualTypeScriptEnvironment(\n system,\n allFiles.map(({ filename }) => filename),\n ts,\n this.compilerOptions,\n );\n }\n}\n\n/**\n * Notebook-specific parser with dependency analysis.\n */\nexport class NotebookVirtualParser extends VirtualTypeScriptParser {\n /**\n * Analyze notebook cells with full type checking.\n */\n analyzeNotebook(cells: Array<{ id: string; code: string }>) {\n // Create cumulative environment where each cell can see previous cells.\n const cumulativeCode: string[] = [];\n const cellAnalysis: Map<\n string,\n {\n exports: ParsedExpression[];\n imports: string[];\n errors: ts.Diagnostic[];\n }\n > = new Map();\n\n cells.forEach((cell) => {\n // Create files for all cells up to current.\n const files: VirtualFile[] = [];\n\n // Add previous cells as context.\n if (cumulativeCode.length > 0) {\n files.push({\n filename: '/context.ts',\n content: cumulativeCode.join('\\n'),\n });\n }\n\n // Add current cell.\n const filename = `/cell/${cell.id}.ts`;\n files.push({\n filename,\n content: cell.code,\n });\n\n // Create environment.\n const env = this.createEnvironment(files);\n\n // Get diagnostics (errors).\n const diagnostics = env.languageService.getSemanticDiagnostics(filename);\n\n // Analyze current cell.\n const sourceFile = env.getSourceFile(filename);\n const typeChecker = env.languageService.getProgram()?.getTypeChecker();\n\n if (sourceFile && typeChecker) {\n const exports = this.analyzeSourceFile(sourceFile, typeChecker);\n\n // Find all references in the current cell.\n const allRefs = new Set<string>();\n exports.forEach((exp) => {\n exp.references?.forEach((ref) => allRefs.add(ref));\n });\n\n // Also check for references not in exports (e.g., console.log(y)).\n const additionalRefs = this.findAllReferences(sourceFile, typeChecker);\n additionalRefs.forEach((ref) => allRefs.add(ref));\n\n // Determine which references are imports from previous cells.\n const previousExports = new Set<string>();\n for (const [_prevCellId, prevAnalysis] of cellAnalysis) {\n prevAnalysis.exports.forEach((exp) => {\n if (exp.name) previousExports.add(exp.name);\n });\n }\n\n const imports = Array.from(allRefs).filter((ref) => previousExports.has(ref));\n\n cellAnalysis.set(cell.id, {\n exports,\n imports,\n errors: diagnostics,\n });\n }\n\n // Add current cell code to cumulative.\n cumulativeCode.push(cell.code);\n });\n\n return cellAnalysis;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Cause", "Effect", "Exit", "React", "useCallback", "useMemo", "useState", "Agent", "Blueprint", "Prompt", "Filter", "Obj", "Query", "Ref", "QueryBuilder", "FunctionInvocationService", "InvocationTracer", "TracingServiceExt", "invariant", "log", "useComputeRuntimeCallback", "Graph", "getSpace", "DropdownMenu", "IconButton", "Toolbar", "useTranslation", "useAttention", "StackItem", "Text", "View", "isNonNullable", "signal", "log", "trim", "evalScript", "code", "deps", "sandbox", "console", "undefined", "document", "global", "globalThis", "self", "window", "Array", "Boolean", "Date", "Error", "JSON", "Map", "Math", "Number", "Object", "Promise", "RegExp", "Set", "String", "isFinite", "isNaN", "parseFloat", "parseInt", "sandboxKeys", "keys", "sandboxValues", "values", "fn", "Function", "trim", "builtIns", "systemDefinitions", "createSystem", "createVirtualTypeScriptEnvironment", "ts", "invariant", "systemFiles", "filename", "content", "systemDefinitions", "VirtualTypeScriptParser", "compilerOptions", "target", "ts", "ScriptTarget", "ES2020", "module", "ModuleKind", "ESNext", "strict", "esModuleInterop", "skipLibCheck", "forceConsistentCasingInfilenames", "jsx", "JsxEmit", "React", "noLib", "parseExpression", "input", "invariant", "trim", "files", "analysis", "analyzeFiles", "length", "sourcefilename", "env", "createEnvironment", "sourceFile", "getSourceFile", "typeChecker", "languageService", "getProgram", "getTypeChecker", "assignmentInfo", "findAssignmentExpression", "references", "findAllReferences", "results", "forEach", "file", "fileResults", "analyzeSourceFile", "push", "visit", "node", "isFunctionDeclaration", "name", "symbol", "getSymbolAtLocation", "type", "getTypeOfSymbolAtLocation", "signature", "getSignaturesOfType", "SignatureKind", "Call", "text", "parameters", "extractParameters", "returnType", "typeToString", "getReturnType", "findReferences", "isVariableStatement", "declarationList", "declarations", "declaration", "isIdentifier", "kind", "value", "typeString", "initializer", "isArrowFunction", "isFunctionExpression", "funcType", "getTypeAtLocation", "isNumericLiteral", "Number", "isStringLiteral", "refs", "valueType", "isClassDeclaration", "isInterfaceDeclaration", "forEachChild", "map", "param", "getName", "valueDeclaration", "_sourceFile", "_typeChecker", "Set", "localSymbols", "collectLocalSymbols", "add", "isVariableDeclaration", "findRefs", "has", "parent", "isDeclaration", "isParameter", "isBuiltIn", "Array", "from", "builtIns", "result", "isExpressionStatement", "isBinaryExpression", "expression", "expr", "operatorToken", "SyntaxKind", "EqualsToken", "left", "right", "isAssignmentTarget", "allFiles", "fileMap", "Map", "set", "system", "createSystem", "createVirtualTypeScriptEnvironment", "ComputeGraph", "_parser", "VirtualTypeScriptParser", "_expressions", "signal", "_valuesByCellId", "_valuesByName", "_notebook", "expressions", "values", "valuesByName", "getValue", "cellId", "value", "evaluate", "dependencyGraph", "parse", "cellExpressions", "Map", "Object", "entries", "forEach", "id", "expr", "set", "evaluationOrder", "topologicalSort", "keys", "valuesByCellId", "get", "log", "error", "cellSource", "cells", "find", "cell", "source", "target", "content", "name", "undefined", "equalIndex", "indexOf", "rhs", "substring", "trim", "endsWith", "slice", "result", "eval", "evalScript", "filter", "type", "reduce", "acc", "text", "parsed", "parseExpression", "buildDependencyGraph", "nodes", "dependencies", "visited", "Set", "visit", "node", "has", "add", "deps", "dep", "push", "nameToCellId", "graph", "references", "length", "dependencyCellIds", "map", "ref", "INCLUDE_BLUEPRINTS", "NotebookContainer", "notebook", "env", "t", "useTranslation", "meta", "id", "space", "getSpace", "attendableId", "Obj", "getDXN", "toString", "hasAttention", "useAttention", "graph", "useMemo", "ComputeGraph", "queryValues", "setQueryValues", "useState", "handleExecQueries", "useCallback", "invariant", "builder", "QueryBuilder", "cell", "cells", "type", "source", "target", "content", "name", "filter", "build", "ast", "Query", "select", "view", "View", "makeFromSpace", "Graph", "make", "query", "Ref", "getSnapshot", "fromAst", "result", "db", "run", "objectIds", "objects", "map", "obj", "prev", "promptResults", "setPromptResults", "handleExecPrompts", "useComputeRuntimeCallback", "fnUntraced", "prompts", "prompt", "isNonNullable", "runPrompt", "input", "valuesByName", "value", "onResult", "dxn", "handleCompute", "evaluate", "handleRearrange", "from", "findIndex", "to", "splice", "handleCellInsert", "after", "crypto", "randomUUID", "Text", "Filter", "Blueprint", "blueprints", "blueprint", "includes", "key", "Prompt", "instructions", "idx", "length", "handleCellDelete", "StackItem", "Content", "toolbar", "Toolbar", "Root", "disabled", "textBlockWidth", "DropdownMenu", "Trigger", "asChild", "IconButton", "icon", "iconOnly", "label", "NotebookMenu", "onCellInsert", "classNames", "onClick", "div", "role", "className", "NotebookStack", "onRearrange", "onCellDelete", "fn", "inputData", "tracer", "InvocationTracer", "trace", "traceInvocationStart", "undefined", "payload", "data", "FunctionInvocationService", "invokeFunction", "Agent", "pipe", "provide", "TracingServiceExt", "layerQueue", "invocationTraceQueue", "exit", "Exit", "match", "onFailure", "cause", "error", "prettyErrors", "log", "message", "stack", "onSuccess", "note", "traceInvocationEnd", "exception", "isFailure"]
7
+ }
@@ -8,8 +8,8 @@ import {
8
8
  useDeployDeps,
9
9
  useDeployState,
10
10
  useToolbarState
11
- } from "./chunk-5JSNQYZZ.mjs";
12
- import "./chunk-LNNCD2H4.mjs";
11
+ } from "./chunk-ULJFT73Q.mjs";
12
+ import "./chunk-QIZ3BPRK.mjs";
13
13
  import "./chunk-2G2NA6DQ.mjs";
14
14
  import {
15
15
  meta
@@ -19,7 +19,8 @@ import "./chunk-J5LGTIGS.mjs";
19
19
  // src/components/ScriptContainer.tsx
20
20
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
21
21
  import React2, { useMemo as useMemo2 } from "react";
22
- import { createDocAccessor, getSpace } from "@dxos/react-client/echo";
22
+ import { createDocAccessor } from "@dxos/echo-db";
23
+ import { getSpace } from "@dxos/react-client/echo";
23
24
  import { useIdentity } from "@dxos/react-client/halo";
24
25
  import { createDataExtensions, listener, stackItemContentEditorClassNames } from "@dxos/react-ui-editor";
25
26
  import { StackItem } from "@dxos/react-ui-stack";
@@ -111,7 +112,7 @@ var ScriptContainer = ({ role, script, settings = {
111
112
  text: createDocAccessor(script.source.target, [
112
113
  "content"
113
114
  ]),
114
- space,
115
+ messenger: space,
115
116
  identity
116
117
  })
117
118
  ] : [], [
@@ -144,4 +145,4 @@ export {
144
145
  ScriptContainer,
145
146
  ScriptContainer_default as default
146
147
  };
147
- //# sourceMappingURL=ScriptContainer-T2BAZDJ4.mjs.map
148
+ //# sourceMappingURL=ScriptContainer-CW6YN3DQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptToolbar/ScriptToolbar.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { type Script } from '@dxos/functions';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useDeployState, useToolbarState } from '../hooks';\nimport { type ScriptSettings } from '../types';\n\nimport { ScriptToolbar } from './ScriptToolbar';\nimport { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';\n\nexport type ScriptEditorProps = {\n role: string;\n script: Script.Script;\n settings?: ScriptSettings;\n} & Pick<TypescriptEditorProps, 'env'>;\n\nexport const ScriptContainer = ({ role, script, settings = { editorInputMode: 'vscode' }, env }: ScriptEditorProps) => {\n const identity = useIdentity();\n const space = getSpace(script);\n const state = useToolbarState();\n useDeployState({ state, script });\n\n const extensions = useMemo(\n () =>\n script.source.target\n ? [\n listener({\n onChange: ({ text }) => {\n if (script.source.target?.content !== text) {\n script.changed = true;\n }\n },\n }),\n createDataExtensions({\n id: script.id,\n text: createDocAccessor(script.source.target, ['content']),\n messenger: space,\n identity,\n }),\n ]\n : [],\n [identity, space, script, script.source.target],\n );\n\n return (\n <StackItem.Content toolbar>\n <ScriptToolbar state={state} role={role} script={script} />\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={script.source?.target?.content}\n extensions={extensions}\n classNames={stackItemContentEditorClassNames(role)}\n inputMode={settings.editorInputMode}\n toolbar\n />\n </StackItem.Content>\n );\n};\n\nexport default ScriptContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport React, { useMemo } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { type Script } from '@dxos/functions';\nimport { ElevationProvider, useTranslation } from '@dxos/react-ui';\nimport {\n type ActionGraphProps,\n MenuProvider,\n ToolbarMenu,\n atomFromSignal,\n createGapSeparator,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport {\n type CreateDeployOptions,\n type ScriptToolbarState,\n createDeploy,\n createFormat,\n createTemplateSelect,\n useDeployDeps,\n} from '../../hooks';\nimport { meta } from '../../meta';\n\nexport type ScriptToolbarProps = {\n role?: string;\n script: Script.Script;\n state: ScriptToolbarState;\n};\n\nexport const ScriptToolbar = ({ script, role, state }: ScriptToolbarProps) => {\n const { t } = useTranslation(meta.id);\n const options = useDeployDeps({ script });\n const menu = useMemo(() => createToolbarActions({ state, script, t, ...options }), [state, script, options, t]);\n const actions = useMenuActions(menu);\n\n return (\n <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>\n <MenuProvider {...actions} attendableId={Obj.getDXN(script).toString()}>\n <ToolbarMenu />\n </MenuProvider>\n </ElevationProvider>\n );\n};\n\nconst createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Atom.Atom<ActionGraphProps> =>\n Atom.make((get) =>\n get(\n atomFromSignal(() => {\n const templateSelect = createTemplateSelect(script);\n const format = createFormat(script);\n const gap = createGapSeparator();\n const deploy = createDeploy({ state, script, ...options });\n return {\n nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],\n edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],\n };\n }),\n ),\n );\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,UAASC,WAAAA,gBAAe;AAE/B,SAASC,yBAAyB;AAElC,SAASC,gBAAgB;AACzB,SAASC,mBAAmB;AAC5B,SAASC,sBAAsBC,UAAUC,wCAAwC;AACjF,SAASC,iBAAiB;;;;ACP1B,SAASC,YAAY;AACrB,OAAOC,SAASC,eAAe;AAE/B,SAASC,WAAW;AAEpB,SAASC,mBAAmBC,sBAAsB;AAClD,SAEEC,cACAC,aACAC,gBACAC,oBACAC,sBACK;AAkBA,IAAMC,gBAAgB,CAAC,EAAEC,QAAQC,MAAMC,MAAK,MAAsB;;;AACvE,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,UAAUC,cAAc;MAAER;IAAO,CAAA;AACvC,UAAMS,OAAOC,QAAQ,MAAMC,qBAAqB;MAAET;MAAOF;MAAQG;MAAG,GAAGI;IAAQ,CAAA,GAAI;MAACL;MAAOF;MAAQO;MAASJ;KAAE;AAC9G,UAAMS,UAAUC,eAAeJ,IAAAA;AAE/B,WACE,sBAAA,cAACK,mBAAAA;MAAkBC,WAAWd,SAAS,YAAY,eAAe;OAChE,sBAAA,cAACe,cAAAA;MAAc,GAAGJ;MAASK,cAAcC,IAAIC,OAAOnB,MAAAA,EAAQoB,SAAQ;OAClE,sBAAA,cAACC,aAAAA,IAAAA,CAAAA,CAAAA;;;;AAIT;AAEA,IAAMV,uBAAuB,CAAC,EAAET,OAAOF,QAAQ,GAAGO,QAAAA,MAChDe,KAAKC,KAAK,CAACC,QACTA,IACEC,eAAe,MAAA;AACb,QAAMC,iBAAiBC,qBAAqB3B,MAAAA;AAC5C,QAAM4B,SAASC,aAAa7B,MAAAA;AAC5B,QAAM8B,MAAMC,mBAAAA;AACZ,QAAMC,SAASC,aAAa;IAAE/B;IAAOF;IAAQ,GAAGO;EAAQ,CAAA;AACxD,SAAO;IACL2B,OAAO;SAAIR,eAAeQ;SAAUN,OAAOM;SAAUJ,IAAII;SAAUF,OAAOE;;IAC1EC,OAAO;SAAIT,eAAeS;SAAUP,OAAOO;SAAUL,IAAIK;SAAUH,OAAOG;;EAC5E;AACF,CAAA,CAAA,CAAA;;;ADrCC,IAAMC,kBAAkB,CAAC,EAAEC,MAAMC,QAAQC,WAAW;EAAEC,iBAAiB;AAAS,GAAGC,IAAG,MAAqB;;;AAChH,UAAMC,WAAWC,YAAAA;AACjB,UAAMC,QAAQC,SAASP,MAAAA;AACvB,UAAMQ,QAAQC,gBAAAA;AACdC,mBAAe;MAAEF;MAAOR;IAAO,CAAA;AAE/B,UAAMW,aAAaC,SACjB,MACEZ,OAAOa,OAAOC,SACV;MACEC,SAAS;QACPC,UAAU,CAAC,EAAEC,KAAI,MAAE;AACjB,cAAIjB,OAAOa,OAAOC,QAAQI,YAAYD,MAAM;AAC1CjB,mBAAOmB,UAAU;UACnB;QACF;MACF,CAAA;MACAC,qBAAqB;QACnBC,IAAIrB,OAAOqB;QACXJ,MAAMK,kBAAkBtB,OAAOa,OAAOC,QAAQ;UAAC;SAAU;QACzDS,WAAWjB;QACXF;MACF,CAAA;QAEF,CAAA,GACN;MAACA;MAAUE;MAAON;MAAQA,OAAOa,OAAOC;KAAO;AAGjD,WACE,gBAAAU,OAAA,cAACC,UAAUC,SAAO;MAACC,SAAAA;OACjB,gBAAAH,OAAA,cAACI,eAAAA;MAAcpB;MAAcT;MAAYC;QACzC,gBAAAwB,OAAA,cAACK,kBAAAA;MACCR,IAAIrB,OAAOqB;MACXlB;MACA2B,cAAc9B,OAAOa,QAAQC,QAAQI;MACrCP;MACAoB,YAAYC,iCAAiCjC,IAAAA;MAC7CkC,WAAWhC,SAASC;MACpByB,SAAAA;;;;;AAIR;AAEA,IAAA,0BAAe7B;",
6
+ "names": ["React", "useMemo", "createDocAccessor", "getSpace", "useIdentity", "createDataExtensions", "listener", "stackItemContentEditorClassNames", "StackItem", "Atom", "React", "useMemo", "Obj", "ElevationProvider", "useTranslation", "MenuProvider", "ToolbarMenu", "atomFromSignal", "createGapSeparator", "useMenuActions", "ScriptToolbar", "script", "role", "state", "t", "useTranslation", "meta", "id", "options", "useDeployDeps", "menu", "useMemo", "createToolbarActions", "actions", "useMenuActions", "ElevationProvider", "elevation", "MenuProvider", "attendableId", "Obj", "getDXN", "toString", "ToolbarMenu", "Atom", "make", "get", "atomFromSignal", "templateSelect", "createTemplateSelect", "format", "createFormat", "gap", "createGapSeparator", "deploy", "createDeploy", "nodes", "edges", "ScriptContainer", "role", "script", "settings", "editorInputMode", "env", "identity", "useIdentity", "space", "getSpace", "state", "useToolbarState", "useDeployState", "extensions", "useMemo", "source", "target", "listener", "onChange", "text", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "messenger", "React", "StackItem", "Content", "toolbar", "ScriptToolbar", "TypescriptEditor", "initialValue", "classNames", "stackItemContentEditorClassNames", "inputMode"]
7
+ }
@@ -39,9 +39,9 @@ import { Stack, StackItem } from "@dxos/react-ui-stack";
39
39
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
40
40
  import React2, { useCallback, useMemo } from "react";
41
41
  import { Surface } from "@dxos/app-framework/react";
42
+ import { createDocAccessor } from "@dxos/echo-db";
42
43
  import { invariant } from "@dxos/invariant";
43
44
  import { TemplateEditor } from "@dxos/plugin-assistant";
44
- import { createDocAccessor } from "@dxos/react-client/echo";
45
45
  import { useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
46
46
  import { QueryEditor } from "@dxos/react-ui-components";
47
47
  import { EditorContent, createBasicExtensions, createDataExtensions, createMarkdownExtensions, createThemeExtensions, decorateMarkdown } from "@dxos/react-ui-editor";
@@ -66,7 +66,7 @@ var NotebookCell = ({ space, graph, dragging, cell, promptResults, env }) => {
66
66
  }, [
67
67
  cell.source?.target
68
68
  ]);
69
- const view = cell.view?.target;
69
+ const explorerGraph = cell.graph?.target;
70
70
  const handleQueryChange = useCallback((value) => {
71
71
  invariant(cell.source?.target, void 0, {
72
72
  F: __dxlog_file,
@@ -117,7 +117,7 @@ var NotebookCell = ({ space, graph, dragging, cell, promptResults, env }) => {
117
117
  return null;
118
118
  }
119
119
  return /* @__PURE__ */ React2.createElement("div", {
120
- className: mx("bs-full overflow-hidden grid", view && !dragging && "grid-rows-[min-content_1fr]")
120
+ className: mx("bs-full overflow-hidden grid", explorerGraph && !dragging && "grid-rows-[min-content_1fr]")
121
121
  }, /* @__PURE__ */ React2.createElement(QueryEditor, {
122
122
  id: cell.id,
123
123
  classNames: [
@@ -127,11 +127,11 @@ var NotebookCell = ({ space, graph, dragging, cell, promptResults, env }) => {
127
127
  db: space?.db,
128
128
  value: cell.source.target.content,
129
129
  onChange: handleQueryChange
130
- }), view && !dragging && /* @__PURE__ */ React2.createElement(Surface, {
130
+ }), explorerGraph && !dragging && /* @__PURE__ */ React2.createElement(Surface, {
131
131
  role: "section",
132
132
  limit: 1,
133
133
  data: {
134
- subject: view
134
+ subject: explorerGraph
135
135
  }
136
136
  }));
137
137
  // TODO(burdon): Use streaming response from Chat.
@@ -301,4 +301,4 @@ export {
301
301
  NotebookMenu,
302
302
  NotebookStack
303
303
  };
304
- //# sourceMappingURL=chunk-4M7U2WVT.mjs.map
304
+ //# sourceMappingURL=chunk-ALS6X4HU.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/NotebookStack/NotebookMenu.tsx", "../../../src/components/NotebookStack/NotebookStack.tsx", "../../../src/components/NotebookStack/NotebookCell.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '../../meta';\nimport { type Notebook } from '../../types';\n\nexport type NotebookMenuProps = {\n cell?: Notebook.Cell;\n onCellInsert?: (type: Notebook.CellType, after: string | undefined) => void;\n onCellDelete?: (id: string) => void;\n};\n\n// TODO(burdon): Better way to organize menu?\nexport const NotebookMenu = ({ cell, onCellInsert, onCellDelete }: NotebookMenuProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item onClick={() => onCellInsert?.('script', cell?.id)}>\n {t('notebook cell insert script label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('prompt', cell?.id)}>\n {t('notebook cell insert prompt label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('query', cell?.id)}>\n {t('notebook cell insert query label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('markdown', cell?.id)}>\n {t('notebook cell insert markdown label')}\n </DropdownMenu.Item>\n {cell && onCellDelete && (\n <DropdownMenu.Item onClick={() => onCellDelete?.(cell.id)}>\n {t('notebook cell delete label')}\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { Stack, StackItem, type StackProps } from '@dxos/react-ui-stack';\n\nimport { meta } from '../../meta';\nimport { type Notebook } from '../../types';\nimport { type TypescriptEditorProps } from '../TypescriptEditor';\n\nimport { NotebookCell, type NotebookCellProps } from './NotebookCell';\nimport { NotebookMenu } from './NotebookMenu';\n\nconst minSectionHeight = 'min-bs-[16rem]';\n\nexport type NotebookStackProps = ThemedClassName<\n {\n notebook?: Notebook.Notebook;\n onRearrange?: StackProps['onRearrange'];\n } & (Pick<NotebookSectionProps, 'space' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &\n Pick<TypescriptEditorProps, 'env'>)\n>;\n\n// TODO(burdon): Option for narrow rail (with compact buttons that align with first button in toolbar).\nexport const NotebookStack = ({ classNames, notebook, onRearrange, ...props }: NotebookStackProps) => {\n return (\n <Stack classNames={classNames} orientation='vertical' size='contain' rail onRearrange={onRearrange}>\n {notebook?.cells.map((cell, i) => (\n <NotebookSection key={i} cell={cell} {...props} />\n ))}\n </Stack>\n );\n};\n\ntype NotebookSectionProps = NotebookCellProps;\n\nconst NotebookSection = ({\n cell,\n space,\n env,\n promptResults,\n onCellInsert,\n onCellDelete,\n ...props\n}: NotebookSectionProps) => {\n const { t } = useTranslation(meta.id);\n const resizable = cell.type === 'query';\n\n return (\n <StackItem.Root role='section' item={cell} draggable classNames={resizable && minSectionHeight}>\n <StackItem.Heading classNames='bs-full p-1 justify-between attention-surface'>\n <StackItem.DragHandle asChild>\n <IconButton variant='ghost' icon='ph--dots-six-vertical--regular' iconOnly label='Drag handle' />\n </StackItem.DragHandle>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--dots-three--regular'\n iconOnly\n label={t('notebook cell insert label')}\n />\n </DropdownMenu.Trigger>\n <NotebookMenu cell={cell} onCellInsert={onCellInsert} onCellDelete={onCellDelete} />\n </DropdownMenu.Root>\n {resizable && <StackItem.ResizeHandle />}\n </StackItem.Heading>\n\n {/* TODO(burdon): Move drag preview to outer stack (uniformly). */}\n <StackItem.DragPreview>\n {({ item: cell }) => (\n <StackItem.Content classNames='overflow-visible bg-groupSurface border border-subduedSeparator'>\n <NotebookCell space={space} cell={cell} env={env} dragging />\n </StackItem.Content>\n )}\n </StackItem.DragPreview>\n\n <StackItem.Content classNames='overflow-visible'>\n <NotebookCell space={space} cell={cell} env={env} promptResults={promptResults} {...props} />\n </StackItem.Content>\n </StackItem.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { TemplateEditor } from '@dxos/plugin-assistant';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport {\n type BasicExtensionsOptions,\n EditorContent,\n type EditorContentProps,\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { type ComputeGraph } from '../../notebook';\nimport { type Notebook } from '../../types';\nimport { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';\n\nimport { type NotebookMenuProps } from './NotebookMenu';\n\nconst editorStyles = 'p-2 pis-3';\nconst valueStyles = 'p-1 pis-3';\n\nexport type NotebookCellProps = {\n space?: Space;\n graph?: ComputeGraph;\n dragging?: boolean;\n cell: Notebook.Cell;\n promptResults?: Record<string, string>;\n} & (Pick<NotebookMenuProps, 'onCellInsert' | 'onCellDelete'> & Pick<TypescriptEditorProps, 'env'>);\n\n// TODO(burdon): Show evaluation errors.\nexport const NotebookCell = ({ space, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {\n const { t } = useTranslation(meta.id);\n\n const extensions = useMemo(() => {\n return cell.source?.target\n ? [\n createDataExtensions({\n id: cell.id,\n text: createDocAccessor(cell.source.target, ['content']),\n }),\n ].filter(isNonNullable)\n : [];\n }, [cell.source?.target]);\n\n const explorerGraph = cell.graph?.target;\n\n const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(\n (value: string) => {\n invariant(cell.source?.target);\n cell.source.target.content = value;\n },\n [cell],\n );\n\n switch (cell.type) {\n case 'markdown':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <NotebookTextEditor\n id={cell.id}\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n />\n );\n\n case 'script':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <>\n <TypescriptEditor\n id={cell.id}\n role='section'\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n env={env}\n options={{\n placeholder: t('notebook cell placeholder'),\n highlightActiveLine: false,\n lineNumbers: false,\n }}\n />\n <NotebookCellValue cell={cell} graph={graph} />\n </>\n );\n\n case 'query':\n if (!cell.source?.target) {\n return null;\n }\n\n // TODO(burdon): Remove app-framework deps (via render prop).\n return (\n <div\n className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}\n >\n <QueryEditor\n id={cell.id}\n classNames={[editorStyles, 'border-be border-subduedSeparator']}\n db={space?.db}\n value={cell.source.target.content}\n onChange={handleQueryChange}\n />\n {explorerGraph && !dragging && <Surface role='section' limit={1} data={{ subject: explorerGraph }} />}\n </div>\n );\n\n // TODO(burdon): Use streaming response from Chat.\n case 'prompt':\n if (!cell.prompt?.target) {\n return null;\n }\n\n return (\n <>\n <TemplateEditor\n id={cell.id}\n template={cell.prompt.target.instructions}\n lineNumbers={false}\n classNames={editorStyles}\n />\n <NotebookPromptResult cell={cell} promptResults={promptResults} />\n </>\n );\n\n default:\n return null;\n }\n};\n\nconst NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {\n const name = graph?.expressions.value[cell.id]?.name;\n const value = graph?.getValue(cell.id);\n if (value == null) {\n return null;\n }\n\n return (\n <div\n className={mx(\n 'flex is-full bg-groupSurface border-t border-subduedSeparator text-description font-mono',\n valueStyles,\n )}\n >\n {name && (\n <>\n <span className='text-successText'>{name}</span>\n <span className='text-description'>&nbsp;=&nbsp;</span>\n </>\n )}\n <span>{value}</span>\n </div>\n );\n};\n\nconst NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {\n if (!cell.prompt) {\n return null;\n }\n\n const value = promptResults?.[cell.prompt.dxn.toString()];\n if (value == null) {\n return null;\n }\n\n return (\n <div className={mx('flex is-full bg-groupSurface text-description border-t border-subduedSeparator', valueStyles)}>\n <NotebookTextEditor readOnly value={value} />\n </div>\n );\n};\n\nconst NotebookTextEditor = ({\n extensions: extensionsParam,\n readOnly,\n ...props\n}: EditorContentProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const extensions = useMemo(() => {\n return [\n createBasicExtensions({\n placeholder: t('notebook markdown placeholder'),\n readOnly,\n }),\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n extensionsParam,\n ].filter(isNonNullable);\n }, [extensionsParam]);\n\n return <EditorContent {...props} extensions={extensions} selectionEnd />;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "DropdownMenu", "useTranslation", "NotebookMenu", "cell", "onCellInsert", "onCellDelete", "t", "useTranslation", "meta", "id", "DropdownMenu", "Portal", "Content", "Viewport", "Item", "onClick", "Arrow", "React", "DropdownMenu", "IconButton", "useTranslation", "Stack", "StackItem", "React", "useCallback", "useMemo", "Surface", "createDocAccessor", "invariant", "TemplateEditor", "useThemeContext", "useTranslation", "QueryEditor", "EditorContent", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "mx", "isNonNullable", "editorStyles", "valueStyles", "NotebookCell", "space", "graph", "dragging", "cell", "promptResults", "env", "t", "useTranslation", "meta", "id", "extensions", "useMemo", "source", "target", "createDataExtensions", "text", "createDocAccessor", "filter", "isNonNullable", "explorerGraph", "handleQueryChange", "useCallback", "value", "invariant", "content", "type", "React", "NotebookTextEditor", "classNames", "initialValue", "TypescriptEditor", "role", "options", "placeholder", "highlightActiveLine", "lineNumbers", "NotebookCellValue", "div", "className", "mx", "QueryEditor", "db", "onChange", "Surface", "limit", "data", "subject", "prompt", "TemplateEditor", "template", "instructions", "NotebookPromptResult", "name", "expressions", "getValue", "span", "dxn", "toString", "readOnly", "extensionsParam", "props", "themeMode", "useThemeContext", "createBasicExtensions", "createThemeExtensions", "syntaxHighlighting", "createMarkdownExtensions", "decorateMarkdown", "EditorContent", "selectionEnd", "minSectionHeight", "NotebookStack", "classNames", "notebook", "onRearrange", "props", "React", "Stack", "orientation", "size", "rail", "cells", "map", "cell", "i", "NotebookSection", "key", "space", "env", "promptResults", "onCellInsert", "onCellDelete", "t", "useTranslation", "meta", "id", "resizable", "type", "StackItem", "Root", "role", "item", "draggable", "Heading", "DragHandle", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "DropdownMenu", "Trigger", "NotebookMenu", "ResizeHandle", "DragPreview", "Content", "NotebookCell", "dragging"]
7
+ }
@@ -2,7 +2,7 @@ import {
2
2
  getAccessCredential,
3
3
  useDeployState,
4
4
  useToolbarState
5
- } from "./chunk-5JSNQYZZ.mjs";
5
+ } from "./chunk-ULJFT73Q.mjs";
6
6
  import {
7
7
  meta
8
8
  } from "./chunk-EB6AXFXO.mjs";
@@ -15,11 +15,12 @@ import { ToolId } from "@dxos/ai";
15
15
  import { SettingsAction, createIntent } from "@dxos/app-framework";
16
16
  import { useIntentDispatcher } from "@dxos/app-framework/react";
17
17
  import { Blueprint, Template } from "@dxos/blueprints";
18
+ import { Filter, Obj, Ref } from "@dxos/echo";
18
19
  import { Function, getUserFunctionIdInMetadata } from "@dxos/functions";
19
20
  import { getInvocationUrl } from "@dxos/functions-runtime";
20
21
  import { log } from "@dxos/log";
21
22
  import { useClient } from "@dxos/react-client";
22
- import { Filter, Ref, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
23
+ import { getSpace, useQuery } from "@dxos/react-client/echo";
23
24
  import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from "@dxos/react-ui";
24
25
  import { AccessToken } from "@dxos/types";
25
26
  import { kebabize } from "@dxos/util";
@@ -159,7 +160,7 @@ var Binding = ({ object }) => {
159
160
  const [fn] = useQuery(space, Filter.type(Function.Function, {
160
161
  source: Ref.make(object)
161
162
  }));
162
- const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
163
+ const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
163
164
  const functionUrl = functionId && getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? "", {
164
165
  spaceId: space?.id
165
166
  });
@@ -217,7 +218,7 @@ var Publishing = ({ object }) => {
217
218
  const [githubToken] = useQuery(space, Filter.type(AccessToken.AccessToken, {
218
219
  source: "github.com"
219
220
  }));
220
- const gistKey = getMeta(object).keys.find(({ source }) => source === "github.com");
221
+ const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === "github.com");
221
222
  const [gistUrl, setGistUrl] = useState();
222
223
  useAsyncEffect(async () => {
223
224
  const token = githubToken?.token;
@@ -237,7 +238,7 @@ var Publishing = ({ object }) => {
237
238
  } catch (err) {
238
239
  log.catch(err, void 0, {
239
240
  F: __dxlog_file,
240
- L: 228,
241
+ L: 229,
241
242
  S: void 0,
242
243
  C: (f, a) => f(...a)
243
244
  });
@@ -264,7 +265,7 @@ var Publishing = ({ object }) => {
264
265
  }
265
266
  };
266
267
  try {
267
- const meta2 = getMeta(object);
268
+ const meta2 = Obj.getMeta(object);
268
269
  const githubKey = meta2.keys.find(({ source: source2 }) => source2 === "github.com");
269
270
  const gistId = githubKey?.id;
270
271
  if (gistId) {
@@ -629,9 +630,9 @@ var TestContainer = ({ script }) => {
629
630
 
630
631
  // src/components/index.ts
631
632
  import { lazy } from "react";
632
- var ScriptContainer = lazy(() => import("./ScriptContainer-T2BAZDJ4.mjs"));
633
- var DeploymentDialog = lazy(() => import("./DeploymentDialog-MZX4T77L.mjs"));
634
- var NotebookContainer = lazy(() => import("./NotebookContainer-RTESC4OV.mjs"));
633
+ var ScriptContainer = lazy(() => import("./ScriptContainer-CW6YN3DQ.mjs"));
634
+ var DeploymentDialog = lazy(() => import("./DeploymentDialog-5TKNGPVR.mjs"));
635
+ var NotebookContainer = lazy(() => import("./NotebookContainer-MHY3DXDE.mjs"));
635
636
 
636
637
  export {
637
638
  ScriptObjectSettings,
@@ -643,4 +644,4 @@ export {
643
644
  DeploymentDialog,
644
645
  NotebookContainer
645
646
  };
646
- //# sourceMappingURL=chunk-GAFCKEII.mjs.map
647
+ //# sourceMappingURL=chunk-N5EYLQOT.mjs.map