@dxos/plugin-script 0.8.4-main.2c6827d → 0.8.4-main.3c1ae3b

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 (168) hide show
  1. package/dist/lib/browser/DeploymentDialog-FIHD4UVK.mjs +15 -0
  2. package/dist/lib/browser/{NotebookContainer-RTESC4OV.mjs → NotebookContainer-GL2Z5I5Q.mjs} +26 -26
  3. package/dist/lib/browser/NotebookContainer-GL2Z5I5Q.mjs.map +7 -0
  4. package/dist/lib/browser/{ScriptContainer-T2BAZDJ4.mjs → ScriptContainer-F4OK3OG6.mjs} +9 -7
  5. package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-4M7U2WVT.mjs → chunk-2SXDKBM7.mjs} +7 -7
  7. package/dist/lib/browser/chunk-2SXDKBM7.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-M6KJPUJK.mjs → chunk-6X7QVTRB.mjs} +4 -3
  9. package/dist/lib/browser/{chunk-M6KJPUJK.mjs.map → chunk-6X7QVTRB.mjs.map} +2 -2
  10. package/dist/lib/browser/{chunk-3IJASGG5.mjs → chunk-75RTLLH4.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-GAFCKEII.mjs → chunk-7WFISUBY.mjs} +11 -10
  12. package/dist/lib/browser/chunk-7WFISUBY.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-LNNCD2H4.mjs → chunk-MQHBMJLH.mjs} +7 -6
  14. package/dist/lib/browser/chunk-MQHBMJLH.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-2G2NA6DQ.mjs → chunk-S22N3BUR.mjs} +5 -5
  16. package/dist/lib/browser/chunk-S22N3BUR.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-5JSNQYZZ.mjs → chunk-UGDRMROB.mjs} +147 -122
  18. package/dist/lib/browser/chunk-UGDRMROB.mjs.map +7 -0
  19. package/dist/lib/browser/compiler-2HV5KXV4.mjs +143 -0
  20. package/dist/lib/browser/compiler-2HV5KXV4.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +40 -58
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/{intent-resolver-AFJ575VK.mjs → intent-resolver-3B4ESSCU.mjs} +9 -8
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/{react-surface-QEQ3QUQA.mjs → react-surface-ASV2KBRA.mjs} +15 -15
  26. package/dist/lib/browser/react-surface-ASV2KBRA.mjs.map +7 -0
  27. package/dist/lib/browser/{settings-LNLSTZM4.mjs → settings-4NKLTJTT.mjs} +3 -3
  28. package/dist/lib/browser/templates/index.mjs +1 -1
  29. package/dist/lib/browser/types/index.mjs +2 -2
  30. package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs → DeploymentDialog-5EN2KZE5.mjs} +6 -5
  31. package/dist/lib/node-esm/{NotebookContainer-SVD3A3D6.mjs → NotebookContainer-7RCEXND7.mjs} +26 -26
  32. package/dist/lib/node-esm/NotebookContainer-7RCEXND7.mjs.map +7 -0
  33. package/dist/lib/node-esm/{ScriptContainer-2CE3H3JJ.mjs → ScriptContainer-763IAKOD.mjs} +9 -7
  34. package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-57JA6XL5.mjs → chunk-2S43VHAM.mjs} +5 -5
  36. package/dist/lib/node-esm/chunk-2S43VHAM.mjs.map +7 -0
  37. package/dist/lib/node-esm/{chunk-NNHWLRHT.mjs → chunk-32AMTGGN.mjs} +7 -6
  38. package/dist/lib/node-esm/chunk-32AMTGGN.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-IQTBVH4L.mjs → chunk-4VVV5L5A.mjs} +147 -122
  40. package/dist/lib/node-esm/chunk-4VVV5L5A.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-RIE676OW.mjs → chunk-535YDI5V.mjs} +2 -2
  42. package/dist/lib/node-esm/{chunk-HDKR5WCD.mjs → chunk-6H4FYMCX.mjs} +4 -3
  43. package/dist/lib/node-esm/{chunk-HDKR5WCD.mjs.map → chunk-6H4FYMCX.mjs.map} +2 -2
  44. package/dist/lib/node-esm/{chunk-KJKZ4KNO.mjs → chunk-DKS2EQW6.mjs} +11 -10
  45. package/dist/lib/node-esm/chunk-DKS2EQW6.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-YRTA4EHU.mjs → chunk-NQN3JE2R.mjs} +7 -7
  47. package/dist/lib/node-esm/chunk-NQN3JE2R.mjs.map +7 -0
  48. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs +144 -0
  49. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs.map +7 -0
  50. package/dist/lib/node-esm/index.mjs +40 -58
  51. package/dist/lib/node-esm/index.mjs.map +4 -4
  52. package/dist/lib/node-esm/{intent-resolver-A5VVK746.mjs → intent-resolver-GIACMXI4.mjs} +9 -8
  53. package/dist/lib/{browser/intent-resolver-AFJ575VK.mjs.map → node-esm/intent-resolver-GIACMXI4.mjs.map} +1 -1
  54. package/dist/lib/node-esm/meta.json +1 -1
  55. package/dist/lib/node-esm/{react-surface-U77YT7VF.mjs → react-surface-NXBO7VYB.mjs} +15 -15
  56. package/dist/lib/node-esm/react-surface-NXBO7VYB.mjs.map +7 -0
  57. package/dist/lib/node-esm/{settings-IUFMOCXY.mjs → settings-PW5NXWLW.mjs} +3 -3
  58. package/dist/lib/node-esm/templates/index.mjs +1 -1
  59. package/dist/lib/node-esm/types/index.mjs +2 -2
  60. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  63. package/dist/types/src/compiler/compiler.d.ts +1 -1
  64. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  65. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +3 -0
  66. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  68. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
  69. package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -0
  70. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  72. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +3 -0
  73. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  75. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  76. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  77. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  78. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  79. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  80. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  81. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +3 -0
  82. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  84. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  85. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  86. package/dist/types/src/hooks/deploy.d.ts +3 -21
  87. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  88. package/dist/types/src/hooks/index.d.ts +1 -0
  89. package/dist/types/src/hooks/index.d.ts.map +1 -1
  90. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  91. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  92. package/dist/types/src/templates/chess.d.ts +6 -1
  93. package/dist/types/src/templates/chess.d.ts.map +1 -1
  94. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  95. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  96. package/dist/types/src/templates/forex.d.ts +4 -1
  97. package/dist/types/src/templates/forex.d.ts.map +1 -1
  98. package/dist/types/src/testing/deploy.test.d.ts +2 -0
  99. package/dist/types/src/testing/deploy.test.d.ts.map +1 -0
  100. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  101. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  102. package/dist/types/src/translations.d.ts +2 -0
  103. package/dist/types/src/translations.d.ts.map +1 -1
  104. package/dist/types/src/types/Notebook.d.ts +7 -7
  105. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  106. package/dist/types/src/types/actions.d.ts +3 -3
  107. package/dist/types/src/util/deploy.d.ts.map +1 -1
  108. package/dist/types/src/util/functions.d.ts.map +1 -1
  109. package/dist/types/tsconfig.tsbuildinfo +1 -1
  110. package/package.json +63 -59
  111. package/src/ScriptPlugin.tsx +13 -28
  112. package/src/capabilities/artifact-definition.ts +11 -11
  113. package/src/capabilities/compiler.ts +66 -16
  114. package/src/capabilities/react-surface.tsx +5 -6
  115. package/src/compiler/compiler.ts +10 -3
  116. package/src/components/FrameContainer/FrameContainer.tsx +3 -1
  117. package/src/components/NotebookContainer.tsx +14 -17
  118. package/src/components/NotebookStack/NotebookCell.tsx +6 -4
  119. package/src/components/QueryEditor/QueryEditor.stories.tsx +89 -0
  120. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  121. package/src/components/QueryEditor/index.ts +5 -0
  122. package/src/components/ScriptContainer.tsx +3 -2
  123. package/src/components/Settings/ScriptObjectSettings.tsx +5 -4
  124. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +1 -1
  125. package/src/components/TypescriptEditor/TypescriptEditor.tsx +2 -2
  126. package/src/e2e/deploy.test.ts +64 -0
  127. package/src/hooks/deploy.ts +3 -2
  128. package/src/hooks/index.ts +1 -0
  129. package/src/hooks/useCompiler.ts +23 -0
  130. package/src/templates/chess.ts +9 -8
  131. package/src/templates/data-generator.ts +1 -1
  132. package/src/templates/forex-effect.ts +22 -27
  133. package/src/templates/forex.ts +7 -6
  134. package/src/testing/deploy.test.ts +63 -0
  135. package/src/testing/simulator.test.ts +40 -0
  136. package/src/translations.ts +2 -0
  137. package/src/types/Notebook.ts +5 -4
  138. package/src/util/deploy.ts +18 -28
  139. package/src/util/functions.ts +3 -2
  140. package/src/vite-env.d.ts +2 -0
  141. package/dist/lib/browser/DeploymentDialog-MZX4T77L.mjs +0 -14
  142. package/dist/lib/browser/NotebookContainer-RTESC4OV.mjs.map +0 -7
  143. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs.map +0 -7
  144. package/dist/lib/browser/chunk-2G2NA6DQ.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-4M7U2WVT.mjs.map +0 -7
  146. package/dist/lib/browser/chunk-5JSNQYZZ.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-GAFCKEII.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-LNNCD2H4.mjs.map +0 -7
  149. package/dist/lib/browser/compiler-4KHRSX7J.mjs +0 -86
  150. package/dist/lib/browser/compiler-4KHRSX7J.mjs.map +0 -7
  151. package/dist/lib/browser/react-surface-QEQ3QUQA.mjs.map +0 -7
  152. package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs.map +0 -7
  153. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs.map +0 -7
  154. package/dist/lib/node-esm/chunk-57JA6XL5.mjs.map +0 -7
  155. package/dist/lib/node-esm/chunk-IQTBVH4L.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs.map +0 -7
  158. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs.map +0 -7
  159. package/dist/lib/node-esm/compiler-DU5NQISX.mjs +0 -87
  160. package/dist/lib/node-esm/compiler-DU5NQISX.mjs.map +0 -7
  161. package/dist/lib/node-esm/react-surface-U77YT7VF.mjs.map +0 -7
  162. /package/dist/lib/browser/{DeploymentDialog-MZX4T77L.mjs.map → DeploymentDialog-FIHD4UVK.mjs.map} +0 -0
  163. /package/dist/lib/browser/{chunk-3IJASGG5.mjs.map → chunk-75RTLLH4.mjs.map} +0 -0
  164. /package/dist/lib/{node-esm/intent-resolver-A5VVK746.mjs.map → browser/intent-resolver-3B4ESSCU.mjs.map} +0 -0
  165. /package/dist/lib/browser/{settings-LNLSTZM4.mjs.map → settings-4NKLTJTT.mjs.map} +0 -0
  166. /package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs.map → DeploymentDialog-5EN2KZE5.mjs.map} +0 -0
  167. /package/dist/lib/node-esm/{chunk-RIE676OW.mjs.map → chunk-535YDI5V.mjs.map} +0 -0
  168. /package/dist/lib/node-esm/{settings-IUFMOCXY.mjs.map → settings-PW5NXWLW.mjs.map} +0 -0
@@ -1,22 +1,98 @@
1
1
  import {
2
2
  ScriptAction
3
- } from "./chunk-LNNCD2H4.mjs";
3
+ } from "./chunk-MQHBMJLH.mjs";
4
4
  import {
5
5
  templates
6
- } from "./chunk-2G2NA6DQ.mjs";
6
+ } from "./chunk-S22N3BUR.mjs";
7
+ import {
8
+ ScriptCapabilities
9
+ } from "./chunk-UOQ6NCH3.mjs";
7
10
  import {
8
11
  meta
9
12
  } from "./chunk-EB6AXFXO.mjs";
10
13
 
14
+ // src/util/deploy.ts
15
+ import { Obj, Ref } from "@dxos/echo";
16
+ import { Function, getUserFunctionIdInMetadata } from "@dxos/functions";
17
+ import { bundleFunction } from "@dxos/functions-runtime/bundler";
18
+ import { FunctionsServiceClient, incrementSemverPatch } from "@dxos/functions-runtime/edge";
19
+ import { log } from "@dxos/log";
20
+ import { FunctionRuntimeKind } from "@dxos/protocols";
21
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/deploy.ts";
22
+ var isScriptDeployed = ({ script, fn }) => {
23
+ const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
24
+ return Boolean(existingFunctionId) && !script.changed;
25
+ };
26
+ var deployScript = async ({ script, client, space, fn, existingFunctionId }) => {
27
+ const validationError = validateDeployInputs(script, space);
28
+ if (validationError) {
29
+ return {
30
+ success: false,
31
+ error: validationError
32
+ };
33
+ }
34
+ try {
35
+ const buildResult = await bundleFunction({
36
+ source: script.source.target.content
37
+ });
38
+ if ("error" in buildResult) {
39
+ throw buildResult.error || new Error("Bundle creation failed");
40
+ }
41
+ const functionsServiceClient = FunctionsServiceClient.fromClient(client);
42
+ const newFunction = await functionsServiceClient.deploy({
43
+ // TODO(dmaretskyi): Space key or identity key.
44
+ ownerPublicKey: space.key,
45
+ version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
46
+ functionId: existingFunctionId,
47
+ entryPoint: buildResult.entryPoint,
48
+ assets: buildResult.assets,
49
+ runtime: FunctionRuntimeKind.enums.WORKER_LOADER
50
+ });
51
+ const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, newFunction);
52
+ script.changed = false;
53
+ return {
54
+ success: true,
55
+ functionId: getUserFunctionIdInMetadata(Obj.getMeta(storedFunction))
56
+ };
57
+ } catch (err) {
58
+ log.catch(err, void 0, {
59
+ F: __dxlog_file,
60
+ L: 68,
61
+ S: void 0,
62
+ C: (f, a) => f(...a)
63
+ });
64
+ return {
65
+ success: false,
66
+ error: err
67
+ };
68
+ }
69
+ };
70
+ var validateDeployInputs = (script, space) => {
71
+ if (!script.source || !space) {
72
+ return new Error("Script source or space not available");
73
+ }
74
+ return null;
75
+ };
76
+ var createOrUpdateFunctionInSpace = (space, fn, script, newFunction) => {
77
+ if (fn) {
78
+ Function.setFrom(fn, newFunction);
79
+ return fn;
80
+ } else {
81
+ newFunction.source = Ref.make(script);
82
+ return space.db.add(newFunction);
83
+ }
84
+ };
85
+
11
86
  // src/util/functions.ts
12
- import { getUserFunctionIdInMetadata } from "@dxos/functions";
87
+ import { Obj as Obj2 } from "@dxos/echo";
88
+ import { getUserFunctionIdInMetadata as getUserFunctionIdInMetadata2 } from "@dxos/functions";
13
89
  import { getInvocationUrl } from "@dxos/functions-runtime";
14
- import { log } from "@dxos/log";
15
- import { getMeta, getSpace } from "@dxos/react-client/echo";
16
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/functions.ts";
90
+ import { log as log2 } from "@dxos/log";
91
+ import { getSpace } from "@dxos/react-client/echo";
92
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/functions.ts";
17
93
  var getFunctionUrl = ({ script, fn, edgeUrl }) => {
18
94
  const space = getSpace(script);
19
- const existingFunctionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
95
+ const existingFunctionId = fn && getUserFunctionIdInMetadata2(Obj2.getMeta(fn));
20
96
  if (!existingFunctionId) {
21
97
  return void 0;
22
98
  }
@@ -30,11 +106,11 @@ var updateFunctionMetadata = (script, storedFunction, meta2, functionId) => {
30
106
  } else if (meta2.description) {
31
107
  storedFunction.description = meta2.description;
32
108
  } else {
33
- log.verbose("no description in function metadata", {
109
+ log2.verbose("no description in function metadata", {
34
110
  functionId
35
111
  }, {
36
- F: __dxlog_file,
37
- L: 46,
112
+ F: __dxlog_file2,
113
+ L: 47,
38
114
  S: void 0,
39
115
  C: (f, a) => f(...a)
40
116
  });
@@ -42,11 +118,11 @@ var updateFunctionMetadata = (script, storedFunction, meta2, functionId) => {
42
118
  if (meta2.inputSchema) {
43
119
  storedFunction.inputSchema = meta2.inputSchema;
44
120
  } else {
45
- log.verbose("no input schema in function metadata", {
121
+ log2.verbose("no input schema in function metadata", {
46
122
  functionId
47
123
  }, {
48
- F: __dxlog_file,
49
- L: 52,
124
+ F: __dxlog_file2,
125
+ L: 53,
50
126
  S: void 0,
51
127
  C: (f, a) => f(...a)
52
128
  });
@@ -54,11 +130,11 @@ var updateFunctionMetadata = (script, storedFunction, meta2, functionId) => {
54
130
  if (meta2.outputSchema) {
55
131
  storedFunction.outputSchema = meta2.outputSchema;
56
132
  } else {
57
- log.verbose("no output schema in function metadata", {
133
+ log2.verbose("no output schema in function metadata", {
58
134
  functionId
59
135
  }, {
60
- F: __dxlog_file,
61
- L: 58,
136
+ F: __dxlog_file2,
137
+ L: 59,
62
138
  S: void 0,
63
139
  C: (f, a) => f(...a)
64
140
  });
@@ -66,11 +142,11 @@ var updateFunctionMetadata = (script, storedFunction, meta2, functionId) => {
66
142
  if (meta2.key) {
67
143
  storedFunction.key = meta2.key;
68
144
  } else {
69
- log.verbose("no key in function metadata", {
145
+ log2.verbose("no key in function metadata", {
70
146
  functionId
71
147
  }, {
72
- F: __dxlog_file,
73
- L: 64,
148
+ F: __dxlog_file2,
149
+ L: 65,
74
150
  S: void 0,
75
151
  C: (f, a) => f(...a)
76
152
  });
@@ -95,104 +171,13 @@ var getAccessCredential = (identityKey) => {
95
171
  };
96
172
  };
97
173
 
98
- // src/util/deploy.ts
99
- import { Obj, Ref } from "@dxos/echo";
100
- import { Function, getUserFunctionIdInMetadata as getUserFunctionIdInMetadata2, setUserFunctionIdInMetadata } from "@dxos/functions";
101
- import { Bundler } from "@dxos/functions-runtime/bundler";
102
- import { incrementSemverPatch, uploadWorkerFunction } from "@dxos/functions-runtime/edge";
103
- import { log as log2 } from "@dxos/log";
104
- import { isNode } from "@dxos/util";
105
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/util/deploy.ts";
106
- var isScriptDeployed = ({ script, fn }) => {
107
- const existingFunctionId = fn && getUserFunctionIdInMetadata2(Obj.getMeta(fn));
108
- return Boolean(existingFunctionId) && !script.changed;
109
- };
110
- var deployScript = async ({ script, client, space, fn, existingFunctionId }) => {
111
- const validationError = validateDeployInputs(script, space);
112
- if (validationError) {
113
- return {
114
- success: false,
115
- error: validationError
116
- };
117
- }
118
- try {
119
- const bundler = new Bundler({
120
- platform: isNode() ? "node" : "browser",
121
- sandboxedModules: [],
122
- remoteModules: {}
123
- });
124
- const buildResult = await bundler.bundle({
125
- source: script.source.target.content
126
- });
127
- if ("error" in buildResult) {
128
- throw buildResult.error || new Error("Bundle creation failed");
129
- }
130
- const { functionId, version, meta: meta2 } = await uploadWorkerFunction({
131
- client,
132
- ownerPublicKey: space.key,
133
- version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
134
- functionId: existingFunctionId,
135
- entryPoint: buildResult.entryPoint,
136
- assets: {
137
- [buildResult.entryPoint]: buildResult.asset
138
- }
139
- });
140
- if (functionId === void 0 || version === void 0) {
141
- throw new Error(`Upload didn't return expected data: ${JSON.stringify({
142
- functionId,
143
- version
144
- })}`);
145
- }
146
- const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, functionId, version);
147
- script.changed = false;
148
- updateFunctionMetadata(script, storedFunction, meta2, functionId);
149
- setUserFunctionIdInMetadata(Obj.getMeta(storedFunction), functionId);
150
- return {
151
- success: true,
152
- functionId
153
- };
154
- } catch (err) {
155
- log2.catch(err, void 0, {
156
- F: __dxlog_file2,
157
- L: 74,
158
- S: void 0,
159
- C: (f, a) => f(...a)
160
- });
161
- return {
162
- success: false,
163
- error: err
164
- };
165
- }
166
- };
167
- var validateDeployInputs = (script, space) => {
168
- if (!script.source || !space) {
169
- return new Error("Script source or space not available");
170
- }
171
- return null;
172
- };
173
- var createOrUpdateFunctionInSpace = (space, fn, script, functionId, version) => {
174
- if (fn) {
175
- fn.name = script.name ?? "New Function";
176
- fn.version = version;
177
- return fn;
178
- } else {
179
- const fn2 = Function.make({
180
- name: script.name ?? "New Function",
181
- version,
182
- source: Ref.make(script)
183
- });
184
- space.db.add(fn2);
185
- setUserFunctionIdInMetadata(Obj.getMeta(fn2), functionId);
186
- return fn2;
187
- }
188
- };
189
-
190
174
  // src/hooks/deploy.ts
191
175
  import { useEffect, useMemo } from "react";
176
+ import { Obj as Obj3, Query, Ref as Ref2 } from "@dxos/echo";
192
177
  import { Function as Function2, getUserFunctionIdInMetadata as getUserFunctionIdInMetadata3 } from "@dxos/functions";
193
178
  import { log as log3 } from "@dxos/log";
194
179
  import { useClient } from "@dxos/react-client";
195
- import { Query, Ref as Ref2, getMeta as getMeta2, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
180
+ import { getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
196
181
  import { createMenuAction } from "@dxos/react-ui-menu";
197
182
  import { errorMessageColors } from "@dxos/react-ui-theme";
198
183
  var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/hooks/deploy.ts";
@@ -225,7 +210,7 @@ var createDeploy = ({ state, script, space, fn, client, existingFunctionId, t })
225
210
  if (!result.success) {
226
211
  log3.catch(result.error, void 0, {
227
212
  F: __dxlog_file3,
228
- L: 59,
213
+ L: 60,
229
214
  S: void 0,
230
215
  C: (f, a) => f(...a)
231
216
  });
@@ -319,7 +304,7 @@ var useDeployDeps = ({ script }) => {
319
304
  const [fn] = useQuery(space, Query.type(Function2.Function, {
320
305
  source: Ref2.make(script)
321
306
  }));
322
- const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata3(getMeta2(fn)), [
307
+ const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata3(Obj3.getMeta(fn)), [
323
308
  fn
324
309
  ]);
325
310
  return {
@@ -337,6 +322,38 @@ var useToolbarState = (initialState = {}) => {
337
322
  return useMemo2(() => live(initialState), []);
338
323
  };
339
324
 
325
+ // src/hooks/useCompiler.ts
326
+ import { useCapabilities, usePluginManager } from "@dxos/app-framework/react";
327
+ import { useAsyncEffect } from "@dxos/react-ui";
328
+
329
+ // src/capabilities/index.ts
330
+ import { lazy } from "@dxos/app-framework";
331
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-2WR2ATTJ.mjs"));
332
+ var BlueprintDefinition = lazy(() => import("./blueprint-definition-6PZWZM2Y.mjs"));
333
+ var Compiler = lazy(() => import("./compiler-2HV5KXV4.mjs"));
334
+ var IntentResolver = lazy(() => import("./intent-resolver-3B4ESSCU.mjs"));
335
+ var ReactSurface = lazy(() => import("./react-surface-ASV2KBRA.mjs"));
336
+ var ScriptSettings = lazy(() => import("./settings-4NKLTJTT.mjs"));
337
+
338
+ // src/events.ts
339
+ import { defineEvent } from "@dxos/app-framework";
340
+ (function(ScriptEvents2) {
341
+ ScriptEvents2.SetupCompiler = defineEvent(`${meta.id}/event/setup-compiler`);
342
+ })(ScriptEvents || (ScriptEvents = {}));
343
+ var ScriptEvents;
344
+
345
+ // src/hooks/useCompiler.ts
346
+ var useCompiler = () => {
347
+ const manager = usePluginManager();
348
+ useAsyncEffect(async () => {
349
+ await manager.activate(ScriptEvents.SetupCompiler);
350
+ }, [
351
+ manager
352
+ ]);
353
+ const [compiler] = useCapabilities(ScriptCapabilities.Compiler);
354
+ return compiler;
355
+ };
356
+
340
357
  // src/hooks/format.ts
341
358
  import { format } from "prettier";
342
359
  import prettierPluginEstree from "prettier/plugins/estree";
@@ -390,7 +407,7 @@ var createFormat = (script) => {
390
407
  };
391
408
 
392
409
  // src/hooks/template.ts
393
- import { Obj as Obj2 } from "@dxos/echo";
410
+ import { Obj as Obj4 } from "@dxos/echo";
394
411
  import { FUNCTIONS_PRESET_META_KEY } from "@dxos/functions";
395
412
  import { createMenuAction as createMenuAction3 } from "@dxos/react-ui-menu";
396
413
  var createTemplateSelectActions = (script) => {
@@ -398,7 +415,7 @@ var createTemplateSelectActions = (script) => {
398
415
  return createMenuAction3(`template--${template.id}`, () => {
399
416
  script.name = template.name;
400
417
  script.source.target.content = template.source;
401
- const metaKeys = Obj2.getMeta(script).keys;
418
+ const metaKeys = Obj4.getMeta(script).keys;
402
419
  const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
403
420
  if (oldPresetIndex >= 0) {
404
421
  metaKeys.splice(oldPresetIndex, 1);
@@ -440,7 +457,7 @@ import * as Function3 from "effect/Function";
440
457
  import { useCallback, useState } from "react";
441
458
  import { chain, createIntent } from "@dxos/app-framework";
442
459
  import { useIntentDispatcher } from "@dxos/app-framework/react";
443
- import { Obj as Obj3 } from "@dxos/echo";
460
+ import { Obj as Obj5 } from "@dxos/echo";
444
461
  import { Script } from "@dxos/functions";
445
462
  import { invariant } from "@dxos/invariant";
446
463
  import { SpaceAction } from "@dxos/plugin-space/types";
@@ -470,7 +487,7 @@ var useCreateAndDeployScriptTemplates = (space, scriptTemplates) => {
470
487
  }), chain(SpaceAction.AddObject, {
471
488
  target: space
472
489
  })));
473
- invariant(Obj3.instanceOf(Script.Script, result.data?.object), void 0, {
490
+ invariant(Obj5.instanceOf(Script.Script, result.data?.object), void 0, {
474
491
  F: __dxlog_file5,
475
492
  L: 52,
476
493
  S: void 0,
@@ -501,17 +518,25 @@ var useCreateAndDeployScriptTemplates = (space, scriptTemplates) => {
501
518
  };
502
519
 
503
520
  export {
521
+ isScriptDeployed,
522
+ deployScript,
504
523
  getFunctionUrl,
505
524
  updateFunctionMetadata,
506
525
  getAccessCredential,
507
- isScriptDeployed,
508
- deployScript,
509
526
  createDeploy,
510
527
  useDeployState,
511
528
  useDeployDeps,
512
529
  createFormat,
513
530
  createTemplateSelect,
514
531
  useCreateAndDeployScriptTemplates,
515
- useToolbarState
532
+ useToolbarState,
533
+ ScriptEvents,
534
+ useCompiler,
535
+ AppGraphBuilder,
536
+ BlueprintDefinition,
537
+ Compiler,
538
+ IntentResolver,
539
+ ReactSurface,
540
+ ScriptSettings
516
541
  };
517
- //# sourceMappingURL=chunk-5JSNQYZZ.mjs.map
542
+ //# sourceMappingURL=chunk-UGDRMROB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/deploy.ts", "../../../src/util/functions.ts", "../../../src/hooks/deploy.ts", "../../../src/hooks/useToolbarState.ts", "../../../src/hooks/useCompiler.ts", "../../../src/capabilities/index.ts", "../../../src/events.ts", "../../../src/hooks/format.ts", "../../../src/hooks/template.ts", "../../../src/hooks/useCreateAndDeployScriptTemplates.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Client } from '@dxos/client';\nimport { Obj, Ref } from '@dxos/echo';\nimport { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { bundleFunction } from '@dxos/functions-runtime/bundler';\nimport { FunctionsServiceClient, incrementSemverPatch } from '@dxos/functions-runtime/edge';\nimport { log } from '@dxos/log';\nimport { FunctionRuntimeKind } from '@dxos/protocols';\nimport { type Space } from '@dxos/react-client/echo';\n\nexport const isScriptDeployed = ({ script, fn }: { script: Script.Script; fn: any }): boolean => {\n const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n return Boolean(existingFunctionId) && !script.changed;\n};\n\ntype DeployScriptProps = {\n script: Script.Script;\n client: Client;\n space: Space;\n fn?: Function.Function;\n existingFunctionId?: string;\n};\n\ntype DeployScriptResult = { success: boolean; error?: Error; functionId?: string };\n\n/**\n * Deploy a script to a space, handling bundling and uploading to the FaaS infrastructure.\n */\nexport const deployScript = async ({\n script,\n client,\n space,\n fn,\n existingFunctionId,\n}: DeployScriptProps): Promise<DeployScriptResult> => {\n const validationError = validateDeployInputs(script, space);\n if (validationError) {\n return { success: false, error: validationError };\n }\n\n try {\n const buildResult = await bundleFunction({\n source: script.source!.target!.content,\n });\n if ('error' in buildResult) {\n throw buildResult.error || new Error('Bundle creation failed');\n }\n\n const functionsServiceClient = FunctionsServiceClient.fromClient(client);\n const newFunction = await functionsServiceClient.deploy({\n // TODO(dmaretskyi): Space key or identity key.\n ownerPublicKey: space.key,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n entryPoint: buildResult.entryPoint,\n assets: buildResult.assets,\n runtime: FunctionRuntimeKind.enums.WORKER_LOADER,\n });\n\n const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, newFunction);\n script.changed = false;\n\n return { success: true, functionId: getUserFunctionIdInMetadata(Obj.getMeta(storedFunction)) };\n } catch (err: any) {\n log.catch(err);\n return { success: false, error: err };\n }\n};\n\n/**\n * Validate inputs for script deployment.\n */\nconst validateDeployInputs = (script: Script.Script, space: Space): Error | null => {\n if (!script.source || !space) {\n return new Error('Script source or space not available');\n }\n return null;\n};\n\nconst createOrUpdateFunctionInSpace = (\n space: Space,\n fn: Function.Function | undefined,\n script: Script.Script,\n newFunction: Function.Function,\n): Function.Function => {\n if (fn) {\n Function.setFrom(fn, newFunction);\n return fn;\n } else {\n newFunction.source = Ref.make(script);\n return space.db.add(newFunction);\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Obj } from '@dxos/echo';\nimport { type Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { getInvocationUrl } from '@dxos/functions-runtime';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { getSpace } from '@dxos/react-client/echo';\n/**\n * Get the function URL for a given script and client configuration\n */\nexport const getFunctionUrl = ({\n script,\n fn,\n edgeUrl,\n}: {\n script: Script.Script;\n fn: any;\n edgeUrl: string;\n}): string | undefined => {\n const space = getSpace(script);\n const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n\n if (!existingFunctionId) {\n return undefined;\n }\n\n return getInvocationUrl(existingFunctionId, edgeUrl, {\n spaceId: space?.id,\n });\n};\n\nexport const updateFunctionMetadata = (\n script: Script.Script,\n storedFunction: Function.Function,\n meta: any,\n functionId: string,\n) => {\n if (script.description !== undefined && script.description.trim() !== '') {\n storedFunction.description = script.description;\n } else if (meta.description) {\n storedFunction.description = meta.description;\n } else {\n log.verbose('no description in function metadata', { functionId });\n }\n\n if (meta.inputSchema) {\n storedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n if (meta.outputSchema) {\n storedFunction.outputSchema = meta.outputSchema;\n } else {\n log.verbose('no output schema in function metadata', { functionId });\n }\n\n if (meta.key) {\n storedFunction.key = meta.key;\n } else {\n log.verbose('no key in function metadata', { functionId });\n }\n};\n\nexport const getAccessCredential = (identityKey: PublicKey): Credential => {\n return {\n issuer: identityKey,\n issuanceDate: new Date(),\n subject: {\n id: identityKey,\n assertion: {\n '@type': 'dxos.halo.credentials.ServiceAccess',\n serverName: 'hub.dxos.network',\n serverKey: identityKey,\n identityKey,\n capabilities: ['composer:beta'],\n },\n },\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { Obj, Query, Ref } from '@dxos/echo';\nimport { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { type Space, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { type TFunction } from '@dxos/react-ui';\nimport { createMenuAction } from '@dxos/react-ui-menu';\nimport { errorMessageColors } from '@dxos/react-ui-theme';\n\nimport { meta } from '../meta';\nimport { deployScript, getFunctionUrl, isScriptDeployed } from '../util';\n\nexport type DeployActionProperties = { type: 'deploy' } | { type: 'copy' };\n\nexport type DeployState = {\n deploying: boolean;\n deployed: boolean;\n functionUrl: string;\n error: string;\n};\n\nexport type CreateDeployOptions = {\n state: Partial<DeployState>;\n script: Script.Script;\n fn: Function.Function;\n space?: Space;\n existingFunctionId?: string;\n client: Client;\n t: TFunction;\n};\n\nexport const createDeploy = ({ state, script, space, fn, client, existingFunctionId, t }: CreateDeployOptions) => {\n // TODO(wittjosiah): Should this be an action?\n const errorItem = createMenuAction('error', () => {}, {\n label: state.error ?? ['no error label', { ns: meta.id }],\n icon: 'ph--warning-circle--regular',\n hidden: !state.error,\n classNames: state.error && errorMessageColors,\n });\n\n const deployAction = createMenuAction<DeployActionProperties>(\n 'deploy',\n async () => {\n if (!script.source || !space) {\n return;\n }\n\n state.error = undefined;\n state.deploying = true;\n\n const result = await deployScript({ script, client, space, fn, existingFunctionId });\n\n if (!result.success) {\n log.catch(result.error);\n state.error = t('upload failed label');\n }\n\n state.deploying = false;\n },\n {\n type: 'deploy',\n label: [state.deploying ? 'publishing label' : 'deploy label', { ns: meta.id }],\n icon: state.deploying ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular',\n disabled: state.deploying,\n classNames: state.deploying ? '[&_svg]:animate-spin' : '',\n },\n );\n\n const copyAction = createMenuAction<DeployActionProperties>(\n 'copy',\n async () => {\n if (state.functionUrl) {\n await navigator.clipboard.writeText(state.functionUrl);\n }\n },\n {\n type: 'copy',\n label: ['copy link label', { ns: meta.id }],\n icon: 'ph--link--regular',\n disabled: !state.functionUrl,\n },\n );\n\n return {\n nodes: [errorItem, deployAction, copyAction],\n edges: [\n { source: 'root', target: 'error' },\n { source: 'root', target: 'deploy' },\n { source: 'root', target: 'copy' },\n ],\n };\n};\n\nexport const useDeployState = ({ state, script }: { state: Partial<DeployState>; script: Script.Script }) => {\n const { space, client, fn, existingFunctionId } = useDeployDeps({ script });\n useEffect(() => {\n if (!existingFunctionId) {\n return;\n }\n\n state.functionUrl = getFunctionUrl({\n script,\n fn,\n edgeUrl: client.config.values.runtime?.services?.edge?.url ?? '',\n });\n }, [existingFunctionId, space, fn, script, client.config.values.runtime?.services?.edge?.url]);\n\n useEffect(() => {\n state.deployed = isScriptDeployed({ script, fn });\n }, [script.changed, existingFunctionId, fn, script]);\n};\n\nexport const useDeployDeps = ({ script }: { script: Script.Script }) => {\n const client = useClient();\n const space = getSpace(script);\n const [fn] = useQuery(space, Query.type(Function.Function, { source: Ref.make(script) }));\n const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(Obj.getMeta(fn)), [fn]);\n return { client, space, fn, existingFunctionId };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { live } from '@dxos/live-object';\n\nimport { type DeployState } from './deploy';\n\nexport type ScriptToolbarState = Partial<DeployState>;\n\n// TODO(burdon): Replace with context provider?\nexport const useToolbarState = (initialState: ScriptToolbarState = {}) => {\n return useMemo(() => live<ScriptToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCapabilities, usePluginManager } from '@dxos/app-framework/react';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { ScriptCapabilities } from '../capabilities';\nimport type { Compiler } from '../compiler';\nimport { ScriptEvents } from '../events';\n\n/**\n * Asynchronously sets up the compiler and returns it.\n * @returns The compiler instance or undefined if it is not ready.\n */\nexport const useCompiler = (): Compiler | undefined => {\n const manager = usePluginManager();\n useAsyncEffect(async () => {\n await manager.activate(ScriptEvents.SetupCompiler);\n }, [manager]);\n const [compiler] = useCapabilities(ScriptCapabilities.Compiler);\n return compiler;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const BlueprintDefinition = lazy(() => import('./blueprint-definition'));\nexport const Compiler = lazy(() => import('./compiler'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ScriptSettings = lazy(() => import('./settings'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport namespace ScriptEvents {\n export const SetupCompiler = defineEvent(`${meta.id}/event/setup-compiler`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\n\nimport { type Script } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { meta } from '../meta';\n\nexport type FormatActionProperties = { type: 'format' };\n\nexport const createFormat = (script: Script.Script) => {\n const formatAction = createMenuAction(\n 'format',\n async () => {\n if (!script.source) {\n return;\n }\n\n try {\n script.source.target!.content = await format(script.source.target!.content, {\n parser: 'typescript',\n plugins: [prettierPluginEstree, prettierPluginTypescript],\n semi: true,\n singleQuote: true,\n });\n } catch (err: any) {\n // TODO(wittjosiah): Show error in UI.\n log.catch(err);\n }\n },\n {\n label: ['format label', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n },\n );\n\n return {\n nodes: [formatAction],\n edges: [\n {\n source: 'root',\n target: 'format',\n },\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Obj } from '@dxos/echo';\nimport { FUNCTIONS_PRESET_META_KEY, type Script } from '@dxos/functions';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { templates } from '../templates';\n\nexport type TemplateActionProperties = { type: 'template'; value: string };\n\nconst createTemplateSelectActions = (script: Script.Script) => {\n return templates.map((template) => {\n return createMenuAction<TemplateActionProperties>(\n `template--${template.id}`,\n () => {\n script.name = template.name;\n script.source!.target!.content = template.source;\n const metaKeys = Obj.getMeta(script).keys;\n const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);\n if (oldPresetIndex >= 0) {\n metaKeys.splice(oldPresetIndex, 1);\n }\n if ('presetId' in template) {\n metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });\n }\n },\n {\n label: template.name,\n value: template.id,\n type: 'template',\n },\n );\n });\n};\n\nexport const createTemplateSelect = (script: Script.Script) => {\n const templateSelectActions = createTemplateSelectActions(script);\n return {\n nodes: [...templateSelectActions],\n edges: [\n { source: 'root', target: 'template-select' },\n ...templateSelectActions.map((action) => ({ source: 'template-select', target: action.id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport { useCallback, useState } from 'react';\n\nimport { chain, createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Obj } from '@dxos/echo';\nimport { Script } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { type Template } from '../templates';\nimport { ScriptAction } from '../types';\nimport { deployScript } from '../util';\n\ntype DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * Hook for creating and deploying multiple script templates concurrently.\n *\n * Takes a space and an array of script template IDs, then provides a callback\n * function that creates each script from its template and deploys it to the space.\n * All creation / deployment operations run concurrently for improved performance.\n */\nexport const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const [status, setStatus] = useState<DeploymentStatus>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n\n const handleCreateAndDeployScripts = useCallback(async () => {\n invariant(space);\n setStatus('pending');\n setError(undefined);\n\n const deploymentResults = await Promise.all(\n scriptTemplates.map(async (template) => {\n const result = await dispatch(\n Function.pipe(\n createIntent(ScriptAction.CreateScript, {\n space,\n initialTemplateId: template.id as any,\n }),\n chain(SpaceAction.AddObject, { target: space }),\n ),\n );\n invariant(Obj.instanceOf(Script.Script, result.data?.object));\n\n return deployScript({ space, client, script: result.data.object });\n }),\n );\n\n const hasErrors = deploymentResults.some((result) => !result.success);\n setStatus(hasErrors ? 'error' : 'success');\n }, [space, dispatch, client, scriptTemplates]);\n\n // TODO(burdon): Return onCreateAndDeployScripts.\n return { handleCreateAndDeployScripts, status, error };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Obj", "Ref", "Function", "getUserFunctionIdInMetadata", "bundleFunction", "FunctionsServiceClient", "incrementSemverPatch", "log", "FunctionRuntimeKind", "isScriptDeployed", "script", "fn", "existingFunctionId", "getMeta", "Boolean", "changed", "deployScript", "client", "space", "validationError", "validateDeployInputs", "success", "error", "buildResult", "source", "target", "content", "Error", "functionsServiceClient", "fromClient", "newFunction", "deploy", "ownerPublicKey", "key", "version", "functionId", "entryPoint", "assets", "runtime", "enums", "WORKER_LOADER", "storedFunction", "createOrUpdateFunctionInSpace", "err", "catch", "setFrom", "make", "db", "add", "Obj", "getUserFunctionIdInMetadata", "getInvocationUrl", "log", "getSpace", "getFunctionUrl", "script", "fn", "edgeUrl", "space", "existingFunctionId", "getMeta", "undefined", "spaceId", "id", "updateFunctionMetadata", "storedFunction", "meta", "functionId", "description", "trim", "verbose", "inputSchema", "outputSchema", "key", "getAccessCredential", "identityKey", "issuer", "issuanceDate", "Date", "subject", "assertion", "serverName", "serverKey", "capabilities", "useEffect", "useMemo", "Obj", "Query", "Ref", "Function", "getUserFunctionIdInMetadata", "log", "useClient", "getSpace", "useQuery", "createMenuAction", "errorMessageColors", "createDeploy", "state", "script", "space", "fn", "client", "existingFunctionId", "t", "errorItem", "createMenuAction", "label", "error", "ns", "meta", "id", "icon", "hidden", "classNames", "errorMessageColors", "deployAction", "source", "undefined", "deploying", "result", "deployScript", "success", "log", "catch", "type", "disabled", "copyAction", "functionUrl", "navigator", "clipboard", "writeText", "nodes", "edges", "target", "useDeployState", "useDeployDeps", "useEffect", "getFunctionUrl", "edgeUrl", "config", "values", "runtime", "services", "edge", "url", "deployed", "isScriptDeployed", "changed", "useClient", "getSpace", "useQuery", "Query", "Function", "Ref", "make", "useMemo", "getUserFunctionIdInMetadata", "Obj", "getMeta", "useMemo", "live", "useToolbarState", "initialState", "useMemo", "live", "useCapabilities", "usePluginManager", "useAsyncEffect", "lazy", "AppGraphBuilder", "lazy", "BlueprintDefinition", "Compiler", "IntentResolver", "ReactSurface", "ScriptSettings", "defineEvent", "ScriptEvents", "SetupCompiler", "defineEvent", "meta", "id", "useCompiler", "manager", "usePluginManager", "useAsyncEffect", "activate", "ScriptEvents", "SetupCompiler", "compiler", "useCapabilities", "ScriptCapabilities", "Compiler", "format", "prettierPluginEstree", "prettierPluginTypescript", "log", "createMenuAction", "createFormat", "script", "formatAction", "createMenuAction", "source", "target", "content", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "label", "ns", "meta", "id", "icon", "nodes", "edges", "Obj", "FUNCTIONS_PRESET_META_KEY", "createMenuAction", "createTemplateSelectActions", "script", "templates", "map", "template", "createMenuAction", "id", "name", "source", "target", "content", "metaKeys", "Obj", "getMeta", "keys", "oldPresetIndex", "findIndex", "key", "FUNCTIONS_PRESET_META_KEY", "splice", "push", "presetId", "label", "value", "type", "createTemplateSelect", "templateSelectActions", "nodes", "edges", "action", "Function", "useCallback", "useState", "chain", "createIntent", "useIntentDispatcher", "Obj", "Script", "invariant", "SpaceAction", "useClient", "useCreateAndDeployScriptTemplates", "space", "scriptTemplates", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "status", "setStatus", "useState", "error", "setError", "undefined", "handleCreateAndDeployScripts", "useCallback", "invariant", "deploymentResults", "Promise", "all", "map", "template", "result", "pipe", "createIntent", "ScriptAction", "CreateScript", "initialTemplateId", "id", "chain", "SpaceAction", "AddObject", "target", "Obj", "instanceOf", "Script", "data", "object", "deployScript", "script", "hasErrors", "some", "success"]
7
+ }
@@ -0,0 +1,143 @@
1
+ import {
2
+ ScriptCapabilities
3
+ } from "./chunk-UOQ6NCH3.mjs";
4
+ import "./chunk-EB6AXFXO.mjs";
5
+ import "./chunk-J5LGTIGS.mjs";
6
+
7
+ // src/capabilities/compiler.ts
8
+ import * as FetchHttpClient from "@effect/platform/FetchHttpClient";
9
+ import * as HttpClient from "@effect/platform/HttpClient";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Schedule from "effect/Schedule";
12
+ import * as Schema from "effect/Schema";
13
+ import wasmUrl from "esbuild-wasm/esbuild.wasm?url";
14
+ import * as ts2 from "typescript";
15
+ import { contributes } from "@dxos/app-framework";
16
+ import { initializeBundler } from "@dxos/functions-runtime/bundler";
17
+ import { trim } from "@dxos/util";
18
+
19
+ // src/compiler/compiler.ts
20
+ import { createDefaultMapFromCDN, createSystem, createVirtualTypeScriptEnvironment } from "@typescript/vfs";
21
+ import ts from "typescript";
22
+ import { invariant } from "@dxos/invariant";
23
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/compiler/compiler.ts";
24
+ var GLOBALS = "globals.d.ts";
25
+ var defaultOptions = {
26
+ lib: [
27
+ "DOM",
28
+ "es2022"
29
+ ],
30
+ target: ts.ScriptTarget.ES2022
31
+ };
32
+ var Compiler = class {
33
+ _options;
34
+ _env;
35
+ _fsMap;
36
+ constructor(_options = defaultOptions) {
37
+ this._options = _options;
38
+ }
39
+ async initialize(globals) {
40
+ if (this._env) {
41
+ return;
42
+ }
43
+ this._fsMap = await createDefaultMapFromCDN(this._options, "5.7.2", true, ts);
44
+ if (globals) {
45
+ this._fsMap.set(GLOBALS, globals);
46
+ }
47
+ const rootFiles = globals ? [
48
+ GLOBALS
49
+ ] : [];
50
+ const system = createSystem(this._fsMap);
51
+ this._env = createVirtualTypeScriptEnvironment(system, rootFiles, ts, this._options);
52
+ }
53
+ get environment() {
54
+ invariant(this._env, "Compiler environment not initialized.", {
55
+ F: __dxlog_file,
56
+ L: 46,
57
+ S: this,
58
+ A: [
59
+ "this._env",
60
+ "'Compiler environment not initialized.'"
61
+ ]
62
+ });
63
+ return this._env;
64
+ }
65
+ setFile(fileName, content) {
66
+ invariant(this._fsMap, "File system map not initialized.", {
67
+ F: __dxlog_file,
68
+ L: 51,
69
+ S: this,
70
+ A: [
71
+ "this._fsMap",
72
+ "'File system map not initialized.'"
73
+ ]
74
+ });
75
+ this.environment.createFile(fileName, content);
76
+ }
77
+ compile(fileName) {
78
+ return this.environment.languageService.getEmitOutput(fileName);
79
+ }
80
+ };
81
+
82
+ // src/capabilities/compiler.ts
83
+ var SCRIPT_PACKAGES_BUCKET = "https://pub-5745ae82e450484aa28f75fc6a175935.r2.dev/dev/";
84
+ var DECLARATION_EXTS = [
85
+ ".d.ts",
86
+ ".d.mts"
87
+ ];
88
+ var NO_TYPES = true;
89
+ var compiler_default = (async () => {
90
+ await initializeBundler({
91
+ wasmUrl
92
+ });
93
+ const runtimeModules = await Effect.runPromise(fetchRuntimeModules().pipe(Effect.provide(FetchHttpClient.layer)));
94
+ const compiler = new Compiler({
95
+ skipLibCheck: true,
96
+ moduleResolution: ts2.ModuleResolutionKind.Bundler,
97
+ allowImportingTsExtensions: true,
98
+ noEmit: true,
99
+ strict: true,
100
+ esModuleInterop: true,
101
+ paths: Object.fromEntries(runtimeModules.map((mod) => [
102
+ mod.moduleName,
103
+ [
104
+ `./src/${mod.filename}`
105
+ ]
106
+ ]))
107
+ });
108
+ await compiler.initialize(trim`
109
+ declare module 'https://*';
110
+ ${NO_TYPES ? "" : 'declare module "*";'}
111
+ `);
112
+ if (!NO_TYPES) {
113
+ for (const mod of runtimeModules) {
114
+ compiler.setFile(`/src/${mod.filename}`, mod.content);
115
+ }
116
+ }
117
+ return contributes(ScriptCapabilities.Compiler, compiler);
118
+ });
119
+ var fetchRuntimeModules = Effect.fnUntraced(function* () {
120
+ const manifest = yield* HttpClient.get(new URL("manifest.json", SCRIPT_PACKAGES_BUCKET)).pipe(Effect.flatMap((_) => _.json), Effect.flatMap(Schema.decodeUnknown(Schema.Struct({
121
+ files: Schema.Array(Schema.String)
122
+ }))));
123
+ const declarationFiles = manifest.files.filter((file) => DECLARATION_EXTS.some((ext) => file.endsWith(ext)));
124
+ let fetched = 0;
125
+ const modules = yield* Effect.forEach(declarationFiles, Effect.fnUntraced(function* (file) {
126
+ const response = yield* HttpClient.get(new URL(file, SCRIPT_PACKAGES_BUCKET)).pipe(Effect.retry(Schedule.exponential(1e3).pipe(Schedule.compose(Schedule.recurs(3)))));
127
+ const content = yield* response.text;
128
+ fetched++;
129
+ const moduleName = file.replace(/\.d\.(ts|mts)$/, "");
130
+ return {
131
+ moduleName,
132
+ filename: file,
133
+ content
134
+ };
135
+ }, Effect.retry(Schedule.exponential(1e3).pipe(Schedule.compose(Schedule.recurs(3))))), {
136
+ concurrency: 20
137
+ });
138
+ return modules;
139
+ });
140
+ export {
141
+ compiler_default as default
142
+ };
143
+ //# sourceMappingURL=compiler-2HV5KXV4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/compiler.ts", "../../../src/compiler/compiler.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as Effect from 'effect/Effect';\nimport * as Schedule from 'effect/Schedule';\nimport * as Schema from 'effect/Schema';\nimport wasmUrl from 'esbuild-wasm/esbuild.wasm?url';\nimport * as ts from 'typescript';\n\nimport { contributes } from '@dxos/app-framework';\nimport { initializeBundler } from '@dxos/functions-runtime/bundler';\nimport { trim } from '@dxos/util';\n\nimport { Compiler } from '../compiler';\n\nimport { ScriptCapabilities } from './capabilities';\n\nconst SCRIPT_PACKAGES_BUCKET = 'https://pub-5745ae82e450484aa28f75fc6a175935.r2.dev/dev/';\nconst DECLARATION_EXTS = ['.d.ts', '.d.mts'];\nconst NO_TYPES = true; // Types temopararly disabled due to compiler erorrs.\n\nexport default async () => {\n await initializeBundler({ wasmUrl });\n\n const runtimeModules = await Effect.runPromise(fetchRuntimeModules().pipe(Effect.provide(FetchHttpClient.layer)));\n\n const compiler = new Compiler({\n skipLibCheck: true,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n allowImportingTsExtensions: true,\n noEmit: true,\n strict: true,\n esModuleInterop: true,\n paths: Object.fromEntries(runtimeModules.map((mod) => [mod.moduleName, [`./src/${mod.filename}`]])),\n });\n\n await compiler.initialize(trim`\n declare module 'https://*';\n ${NO_TYPES ? '' : 'declare module \"*\";'}\n `);\n if (!NO_TYPES) {\n for (const mod of runtimeModules) {\n compiler.setFile(`/src/${mod.filename}`, mod.content);\n }\n }\n\n return contributes(ScriptCapabilities.Compiler, compiler);\n};\n\nconst fetchRuntimeModules = Effect.fnUntraced(function* () {\n const manifest = yield* HttpClient.get(new URL('manifest.json', SCRIPT_PACKAGES_BUCKET)).pipe(\n Effect.flatMap((_) => _.json),\n Effect.flatMap(Schema.decodeUnknown(Schema.Struct({ files: Schema.Array(Schema.String) }))),\n );\n\n const declarationFiles = manifest.files.filter((file) => DECLARATION_EXTS.some((ext) => file.endsWith(ext)));\n\n let fetched = 0;\n const modules = yield* Effect.forEach(\n declarationFiles,\n Effect.fnUntraced(\n function* (file) {\n const response = yield* HttpClient.get(new URL(file, SCRIPT_PACKAGES_BUCKET)).pipe(\n Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),\n );\n const content = yield* response.text;\n fetched++;\n\n const moduleName = file.replace(/\\.d\\.(ts|mts)$/, '');\n return {\n moduleName,\n filename: file,\n content,\n };\n },\n Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),\n ),\n { concurrency: 20 },\n );\n return modules;\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n type VirtualTypeScriptEnvironment,\n createDefaultMapFromCDN,\n createSystem,\n createVirtualTypeScriptEnvironment,\n} from '@typescript/vfs';\nimport ts from 'typescript';\n\nimport { invariant } from '@dxos/invariant';\n\nconst GLOBALS = 'globals.d.ts';\n\nconst defaultOptions: ts.CompilerOptions = {\n lib: ['DOM', 'es2022'],\n target: ts.ScriptTarget.ES2022,\n};\n\nexport class Compiler {\n private _env: VirtualTypeScriptEnvironment | undefined;\n private _fsMap: Map<string, string> | undefined;\n\n constructor(private readonly _options: ts.CompilerOptions = defaultOptions) {}\n\n async initialize(globals?: string): Promise<void> {\n if (this._env) {\n return;\n }\n\n // TODO(wittjosiah): Figure out how to get workers working in plugin packages.\n // https://github.com/val-town/codemirror-ts?tab=readme-ov-file#setup-worker\n this._fsMap = await createDefaultMapFromCDN(this._options, '5.7.2', true, ts);\n if (globals) {\n this._fsMap.set(GLOBALS, globals);\n }\n\n const rootFiles = globals ? [GLOBALS] : [];\n const system = createSystem(this._fsMap);\n this._env = createVirtualTypeScriptEnvironment(system, rootFiles, ts, this._options);\n }\n\n get environment() {\n invariant(this._env, 'Compiler environment not initialized.');\n return this._env;\n }\n\n setFile(fileName: string, content: string): void {\n invariant(this._fsMap, 'File system map not initialized.');\n this.environment.createFile(fileName, content);\n }\n\n compile(fileName: string): ts.EmitOutput {\n return this.environment.languageService.getEmitOutput(fileName);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["FetchHttpClient", "HttpClient", "Effect", "Schedule", "Schema", "wasmUrl", "ts", "contributes", "initializeBundler", "trim", "createDefaultMapFromCDN", "createSystem", "createVirtualTypeScriptEnvironment", "ts", "invariant", "GLOBALS", "defaultOptions", "lib", "target", "ScriptTarget", "ES2022", "Compiler", "_env", "_fsMap", "_options", "initialize", "globals", "set", "rootFiles", "system", "environment", "setFile", "fileName", "content", "createFile", "compile", "languageService", "getEmitOutput", "SCRIPT_PACKAGES_BUCKET", "DECLARATION_EXTS", "NO_TYPES", "initializeBundler", "wasmUrl", "runtimeModules", "runPromise", "fetchRuntimeModules", "pipe", "provide", "layer", "compiler", "Compiler", "skipLibCheck", "moduleResolution", "ModuleResolutionKind", "Bundler", "allowImportingTsExtensions", "noEmit", "strict", "esModuleInterop", "paths", "Object", "fromEntries", "map", "mod", "moduleName", "filename", "initialize", "trim", "setFile", "content", "contributes", "ScriptCapabilities", "fnUntraced", "manifest", "get", "URL", "flatMap", "_", "json", "decodeUnknown", "Struct", "files", "Array", "String", "declarationFiles", "filter", "file", "some", "ext", "endsWith", "fetched", "modules", "forEach", "response", "retry", "exponential", "compose", "recurs", "text", "replace", "concurrency"]
7
+ }