@dxos/plugin-script 0.6.14-main.f49f251 → 0.6.14-staging.4b6f9cf

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 (105) hide show
  1. package/dist/lib/browser/{AutomationPanel-MDPZ5WAC.mjs → AutomationPanel-F2SAN67R.mjs} +5 -5
  2. package/dist/lib/browser/{ScriptContainer-B3CPWXRE.mjs → ScriptContainer-F2DFCOHF.mjs} +24 -21
  3. package/dist/lib/browser/ScriptContainer-F2DFCOHF.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-G6H56WFS.mjs → chunk-4UTRJLQ3.mjs} +11 -3
  5. package/dist/lib/browser/chunk-4UTRJLQ3.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-KHNN3F7J.mjs → chunk-5GGRYRS4.mjs} +5 -5
  7. package/dist/lib/browser/{chunk-KHNN3F7J.mjs.map → chunk-5GGRYRS4.mjs.map} +2 -2
  8. package/dist/lib/browser/{chunk-SGQHRB4P.mjs → chunk-C7VBULMK.mjs} +4 -3
  9. package/dist/lib/browser/{chunk-SGQHRB4P.mjs.map → chunk-C7VBULMK.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-KXVQPS4Y.mjs → chunk-JBXEMQ6S.mjs} +5 -4
  11. package/dist/lib/browser/chunk-JBXEMQ6S.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-G66MXS4T.mjs → chunk-NCZUJKJE.mjs} +6 -18
  13. package/dist/lib/browser/chunk-NCZUJKJE.mjs.map +7 -0
  14. package/dist/lib/browser/edge/index.mjs +1 -1
  15. package/dist/lib/browser/index.mjs +106 -13
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/meta.mjs +1 -1
  19. package/dist/lib/browser/types/index.mjs +2 -2
  20. package/dist/lib/node/{AutomationPanel-SANUE5X4.cjs → AutomationPanel-M5UHEMPG.cjs} +15 -15
  21. package/dist/lib/node/{ScriptContainer-BV7HMUY5.cjs → ScriptContainer-X76C7OD2.cjs} +40 -37
  22. package/dist/lib/node/ScriptContainer-X76C7OD2.cjs.map +7 -0
  23. package/dist/lib/node/{chunk-EJC55SDD.cjs → chunk-6LYX73ZT.cjs} +7 -6
  24. package/dist/lib/node/chunk-6LYX73ZT.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-JWKMTYYH.cjs → chunk-BJ4WIWCP.cjs} +9 -21
  26. package/dist/lib/node/chunk-BJ4WIWCP.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-ACLCRWDB.cjs → chunk-WPP65EYS.cjs} +14 -6
  28. package/dist/lib/node/chunk-WPP65EYS.cjs.map +7 -0
  29. package/dist/lib/node/{chunk-FY5KKL5N.cjs → chunk-XS6GEYYH.cjs} +8 -8
  30. package/dist/lib/node/{chunk-FY5KKL5N.cjs.map → chunk-XS6GEYYH.cjs.map} +2 -2
  31. package/dist/lib/node/{chunk-25PQE7FL.cjs → chunk-ZTUFXDTH.cjs} +8 -7
  32. package/dist/lib/node/chunk-ZTUFXDTH.cjs.map +7 -0
  33. package/dist/lib/node/edge/index.cjs +10 -10
  34. package/dist/lib/node/edge/index.cjs.map +1 -1
  35. package/dist/lib/node/index.cjs +122 -33
  36. package/dist/lib/node/index.cjs.map +4 -4
  37. package/dist/lib/node/meta.cjs +3 -3
  38. package/dist/lib/node/meta.cjs.map +1 -1
  39. package/dist/lib/node/meta.json +1 -1
  40. package/dist/lib/node/types/index.cjs +5 -5
  41. package/dist/lib/node/types/index.cjs.map +1 -1
  42. package/dist/lib/node-esm/{AutomationPanel-H2IKE53E.mjs → AutomationPanel-JQ2NLXYS.mjs} +5 -5
  43. package/dist/lib/node-esm/{ScriptContainer-HSIOGVP3.mjs → ScriptContainer-KXUHDS5D.mjs} +24 -21
  44. package/dist/lib/node-esm/ScriptContainer-KXUHDS5D.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-7EDYDVQH.mjs → chunk-3QSMHAWD.mjs} +5 -4
  46. package/dist/lib/node-esm/chunk-3QSMHAWD.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-LDLNTVAK.mjs → chunk-4SRPREUK.mjs} +11 -3
  48. package/dist/lib/node-esm/chunk-4SRPREUK.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-3QHVR4VV.mjs → chunk-DXWSRDEN.mjs} +6 -18
  50. package/dist/lib/node-esm/chunk-DXWSRDEN.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-GO7HYFM5.mjs → chunk-SLTZMY34.mjs} +4 -3
  52. package/dist/lib/node-esm/{chunk-GO7HYFM5.mjs.map → chunk-SLTZMY34.mjs.map} +3 -3
  53. package/dist/lib/node-esm/{chunk-QMTTZYLF.mjs → chunk-V74XKPLC.mjs} +5 -5
  54. package/dist/lib/node-esm/{chunk-QMTTZYLF.mjs.map → chunk-V74XKPLC.mjs.map} +2 -2
  55. package/dist/lib/node-esm/edge/index.mjs +1 -1
  56. package/dist/lib/node-esm/index.mjs +106 -13
  57. package/dist/lib/node-esm/index.mjs.map +4 -4
  58. package/dist/lib/node-esm/meta.json +1 -1
  59. package/dist/lib/node-esm/meta.mjs +1 -1
  60. package/dist/lib/node-esm/types/index.mjs +2 -2
  61. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  62. package/dist/types/src/bundler/bundler.d.ts.map +1 -1
  63. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +1 -4
  64. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -1
  65. package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
  66. package/dist/types/src/components/ScriptSettingsPanel.d.ts +7 -0
  67. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -0
  68. package/dist/types/src/components/index.d.ts +1 -0
  69. package/dist/types/src/components/index.d.ts.map +1 -1
  70. package/dist/types/src/edge/functions.d.ts +4 -1
  71. package/dist/types/src/edge/functions.d.ts.map +1 -1
  72. package/dist/types/src/meta.d.ts +2 -1
  73. package/dist/types/src/meta.d.ts.map +1 -1
  74. package/dist/types/src/translations.d.ts +5 -0
  75. package/dist/types/src/translations.d.ts.map +1 -1
  76. package/dist/types/src/types/script.d.ts +3 -1
  77. package/dist/types/src/types/script.d.ts.map +1 -1
  78. package/package.json +36 -36
  79. package/src/ScriptPlugin.tsx +10 -2
  80. package/src/bundler/bundler.ts +4 -0
  81. package/src/components/DebugPanel/DebugPanel.tsx +2 -29
  82. package/src/components/ScriptEditor.tsx +10 -18
  83. package/src/components/ScriptSettings/ScriptSettings.tsx +3 -3
  84. package/src/components/ScriptSettingsPanel.tsx +105 -0
  85. package/src/components/index.ts +1 -0
  86. package/src/edge/functions.ts +4 -1
  87. package/src/meta.ts +2 -1
  88. package/src/translations.ts +5 -0
  89. package/src/types/script.ts +2 -1
  90. package/dist/lib/browser/ScriptContainer-B3CPWXRE.mjs.map +0 -7
  91. package/dist/lib/browser/chunk-G66MXS4T.mjs.map +0 -7
  92. package/dist/lib/browser/chunk-G6H56WFS.mjs.map +0 -7
  93. package/dist/lib/browser/chunk-KXVQPS4Y.mjs.map +0 -7
  94. package/dist/lib/node/ScriptContainer-BV7HMUY5.cjs.map +0 -7
  95. package/dist/lib/node/chunk-25PQE7FL.cjs.map +0 -7
  96. package/dist/lib/node/chunk-ACLCRWDB.cjs.map +0 -7
  97. package/dist/lib/node/chunk-EJC55SDD.cjs.map +0 -7
  98. package/dist/lib/node/chunk-JWKMTYYH.cjs.map +0 -7
  99. package/dist/lib/node-esm/ScriptContainer-HSIOGVP3.mjs.map +0 -7
  100. package/dist/lib/node-esm/chunk-3QHVR4VV.mjs.map +0 -7
  101. package/dist/lib/node-esm/chunk-7EDYDVQH.mjs.map +0 -7
  102. package/dist/lib/node-esm/chunk-LDLNTVAK.mjs.map +0 -7
  103. /package/dist/lib/browser/{AutomationPanel-MDPZ5WAC.mjs.map → AutomationPanel-F2SAN67R.mjs.map} +0 -0
  104. /package/dist/lib/node/{AutomationPanel-SANUE5X4.cjs.map → AutomationPanel-M5UHEMPG.cjs.map} +0 -0
  105. /package/dist/lib/node-esm/{AutomationPanel-H2IKE53E.mjs.map → AutomationPanel-JQ2NLXYS.mjs.map} +0 -0
@@ -16,8 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_FY5KKL5N_exports = {};
20
- __export(chunk_FY5KKL5N_exports, {
19
+ var chunk_XS6GEYYH_exports = {};
20
+ __export(chunk_XS6GEYYH_exports, {
21
21
  HeaderCodec: () => HeaderCodec,
22
22
  USERFUNCTIONS_PRESET_META_KEY: () => USERFUNCTIONS_PRESET_META_KEY,
23
23
  codec: () => codec,
@@ -28,7 +28,7 @@ __export(chunk_FY5KKL5N_exports, {
28
28
  setUserFunctionUrlInMetadata: () => setUserFunctionUrlInMetadata,
29
29
  uploadWorkerFunction: () => uploadWorkerFunction
30
30
  });
31
- module.exports = __toCommonJS(chunk_FY5KKL5N_exports);
31
+ module.exports = __toCommonJS(chunk_XS6GEYYH_exports);
32
32
  var import_keys = require("@dxos/keys");
33
33
  var import_async = require("@dxos/async");
34
34
  var import_invariant = require("@dxos/invariant");
@@ -154,7 +154,7 @@ var uploadWorkerFunction = async ({ clientConfig, halo, name, source, ownerDid,
154
154
  uploadUrl: uploadUrl.toString()
155
155
  }, {
156
156
  F: __dxlog_file,
157
- L: 73,
157
+ L: 76,
158
158
  S: void 0,
159
159
  C: (f, a) => f(...a)
160
160
  });
@@ -178,7 +178,7 @@ var uploadWorkerFunction = async ({ clientConfig, halo, name, source, ownerDid,
178
178
  res
179
179
  }, {
180
180
  F: __dxlog_file,
181
- L: 84,
181
+ L: 87,
182
182
  S: void 0,
183
183
  C: (f, a) => f(...a)
184
184
  });
@@ -227,13 +227,13 @@ var presentationForIdentity = async ({ halo, timeout }) => {
227
227
  credential
228
228
  }, {
229
229
  F: __dxlog_file,
230
- L: 130,
230
+ L: 133,
231
231
  S: void 0,
232
232
  C: (f, a) => f(...a)
233
233
  });
234
234
  (0, import_invariant.invariant)(credential.id, "beta credential missing id", {
235
235
  F: __dxlog_file,
236
- L: 132,
236
+ L: 135,
237
237
  S: void 0,
238
238
  A: [
239
239
  "credential.id",
@@ -270,4 +270,4 @@ var getInvocationUrl = (functionUrl, edgeUrl, options = {}) => {
270
270
  setUserFunctionUrlInMetadata,
271
271
  uploadWorkerFunction
272
272
  });
273
- //# sourceMappingURL=chunk-FY5KKL5N.cjs.map
273
+ //# sourceMappingURL=chunk-XS6GEYYH.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/edge/codec.ts", "../../../src/edge/header-codec.ts", "../../../src/edge/functions.ts", "../../../src/edge/hub-protocol.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { HeaderCodec, type EncodedKey } from './header-codec';\n\nexport const codec = new HeaderCodec<PublicKey>({\n isKey: (value: any): value is PublicKey => value instanceof PublicKey,\n encode: (key: PublicKey): EncodedKey => ({ __k: key.toHex() }),\n decode: (value: EncodedKey): PublicKey => PublicKey.fromHex(value.__k),\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// TODO(burdon): Factor out from @dxos/hub-protocol\n\nconst ENCODING = 'base64';\n\nexport type EncodedKey = { __k: string };\n\nexport type EncodedBytes = { __b: string };\n\nexport type EncodedTimestamp = { __t: number };\n\nexport interface KeyCodec<KeyType> {\n isKey(value: any): value is KeyType;\n encode(key: KeyType): EncodedKey;\n decode(value: EncodedKey): KeyType;\n}\n\n// TODO(wittjosiah): Use deepMapValues from @dxos/util -- it handles recursion for you.\nexport class HeaderCodec<Key> {\n constructor(private readonly _keyCodec: KeyCodec<Key>) {}\n\n encode(obj: any): string {\n const objectToEncode = this._prepareForEncoding(obj);\n const encoded = Buffer.from(JSON.stringify(objectToEncode));\n return encoded.toString(ENCODING);\n }\n\n decode<Type>(buffer: string): Type {\n const json = JSON.parse(Buffer.from(buffer, ENCODING).toString());\n return this._decodeRecursive(json);\n }\n\n private _decodeRecursive(obj: any): any {\n return this._recurse(obj, (value) => {\n if (isEncodedBytes(value)) {\n return decodeBytes(value.__b);\n }\n if (isEncodedKey(value)) {\n return this._keyCodec.decode(value);\n }\n if (isEncodedDate(value)) {\n return decodeDate(value);\n }\n return null;\n });\n }\n\n private _prepareForEncoding(obj: any): any {\n return this._recurse(obj, (value) => {\n if (value instanceof Uint8Array) {\n return { __b: encodeBytes(value) };\n }\n if (this._keyCodec.isKey(value)) {\n return this._keyCodec.encode(value);\n }\n if (value instanceof Date) {\n return encodeDate(value);\n }\n return null;\n });\n }\n\n private _recurse(obj: any, handler: (obj: object) => any | null): any {\n if (typeof obj !== 'object') {\n return obj;\n }\n const handled = handler(obj);\n if (handled != null) {\n return handled;\n }\n if (Array.isArray(obj)) {\n const result = [];\n for (const elem of obj) {\n result.push(this._recurse(elem, handler));\n }\n return result;\n }\n const result: any = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = this._recurse(value, handler);\n }\n return result;\n }\n}\n\nconst isEncodedKey = (obj: object): obj is EncodedKey => '__k' in obj && typeof obj.__k === 'string';\nconst isEncodedBytes = (obj: object): obj is EncodedBytes => '__b' in obj && typeof obj.__b === 'string';\nconst isEncodedDate = (obj: object): obj is EncodedTimestamp => '__t' in obj && typeof obj.__t === 'number';\n\nconst encodeDate = (date: Date) => ({ __t: date.getTime() });\nconst decodeDate = (timestamp: EncodedTimestamp) => new Date(timestamp.__t);\n\nconst encodeBytes = (bytes: Uint8Array) => Buffer.from(bytes).toString(ENCODING);\nconst decodeBytes = (bytes: string) => Buffer.from(bytes, ENCODING);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { Trigger } from '@dxos/async';\nimport { type Config } from '@dxos/client';\nimport { type Halo } from '@dxos/client-protocol';\nimport { type ObjectMeta } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport type { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\n\nimport { codec } from './codec';\nimport { matchServiceCredential } from './hub-protocol';\n\n// TODO: use URL scheme for source?\nconst USERFUNCTIONS_META_KEY = 'dxos.org/service/function';\nexport const USERFUNCTIONS_PRESET_META_KEY = 'dxos.org/service/function-preset';\nconst USERFUNCTIONS_CREDENTIAL_CAPABILITY = 'composer:beta';\n\n// TODO: Synchronize API types with server\nexport type UserFunctionUploadResult = {\n result: 'success' | 'error';\n errorMessage?: string;\n functionId?: string;\n functionVersionNumber?: number;\n};\n\nexport type UploadWorkerProps = {\n clientConfig: Config;\n halo: Halo;\n name?: string;\n source: string;\n functionId?: string;\n ownerDid: DID;\n credentialLoadTimeout?: number; // ms to wait for credentials to load\n};\n\n// TODO(burdon): Config.\nconst defaultUserFunctionsBaseUrl = 'https://edge-main.dxos.workers.dev/functions'; // 'http://localhost:8600';\n\nconst getBaseUrl = (config: Config) => {\n if (config.values.runtime?.services?.edge?.url) {\n const url = new URL('/functions', config.values.runtime?.services?.edge?.url);\n url.protocol = 'https';\n return url.toString();\n } else {\n return defaultUserFunctionsBaseUrl;\n }\n};\n\nexport const uploadWorkerFunction = async ({\n clientConfig,\n halo,\n name,\n source,\n ownerDid,\n functionId,\n credentialLoadTimeout,\n}: UploadWorkerProps) => {\n const identity = halo.identity.get();\n if (!identity) {\n throw new Error('Identity not available');\n }\n const userFunctionsBaseUrl = getBaseUrl(clientConfig);\n\n // TODO: codify naming convention\n const uploadUrl = `${userFunctionsBaseUrl}/${ownerDid}` + (functionId ? `/${functionId}` : '');\n\n log('Upload', { functionId, source, name, identityKey: identity.identityKey, uploadUrl: uploadUrl.toString() });\n const response = await fetch(uploadUrl, {\n method: 'PUT',\n body: JSON.stringify({ script: source, name }),\n headers: await presentationForIdentity({ halo, timeout: credentialLoadTimeout }),\n });\n if (!response.ok) {\n return (await response.json()) as UserFunctionUploadResult;\n }\n\n const res = await response.json();\n log('Upload response', { status: response.status, res });\n\n return res as UserFunctionUploadResult;\n};\n\nexport const getUserFunctionUrlInMetadata = (meta: ObjectMeta) => {\n return meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;\n};\n\nexport const setUserFunctionUrlInMetadata = (meta: ObjectMeta, functionUrl: string) => {\n const key = meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY);\n if (key) {\n if (key.id !== functionUrl) {\n throw new Error('Metadata mismatch');\n }\n } else {\n meta.keys.push({ source: USERFUNCTIONS_META_KEY, id: functionUrl });\n }\n};\n\n// TODO: handle team owner\n\nconst presentationForIdentity = async ({ halo, timeout }: { halo: Halo; timeout?: number }) => {\n let credential: Credential | undefined;\n\n if (timeout) {\n const credentialsLoaded = new Trigger();\n halo.credentials.subscribe((c) => {\n credential = c.find(matchServiceCredential([USERFUNCTIONS_CREDENTIAL_CAPABILITY]));\n if (credential) {\n credentialsLoaded.wake();\n }\n });\n await credentialsLoaded.wait({\n timeout,\n });\n } else {\n credential = halo\n .queryCredentials()\n .toSorted((a, b) => b.issuanceDate.getTime() - a.issuanceDate.getTime())\n .find(matchServiceCredential([USERFUNCTIONS_CREDENTIAL_CAPABILITY]));\n }\n\n if (!credential) {\n throw new Error('No credential found');\n }\n log('credential found', { credential });\n // TODO(wittjosiah): If id is required to present credentials, then it should always be present for queried credentials.\n invariant(credential.id, 'beta credential missing id');\n const presentation = await halo.presentCredentials({ ids: [credential.id] });\n\n return { Authorization: `Bearer ${codec.encode(presentation)}` };\n};\n\nexport type InvocationOptions = {\n spaceId?: SpaceId;\n subjectId?: string;\n};\n\nexport const getInvocationUrl = (functionUrl: string, edgeUrl: string, options: InvocationOptions = {}) => {\n const baseUrl = new URL('functions/', edgeUrl);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = functionUrl.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n options.spaceId && url.searchParams.set('spaceId', options.spaceId);\n options.subjectId && url.searchParams.set('subjectId', options.subjectId);\n url.protocol = 'https';\n return url.toString();\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { type Credential } from '@dxos/client/halo';\nimport { type PublicKey } from '@dxos/keys';\n\n// TODO(burdon): Factor out to @dxos/hub-protocol.\n\nexport const matchServiceCredential =\n (capabilities: string[] = []) =>\n (credential: Credential) => {\n if (credential.subject.assertion['@type'] !== 'dxos.halo.credentials.ServiceAccess') {\n return false;\n }\n\n const { capabilities: credentialCapabilities } = credential.subject.assertion;\n return capabilities.every((capability) => credentialCapabilities.includes(capability));\n };\n\n// TODO: reconcile with @dxos/hub-protocol\n\nexport const publicKeyToDid = (key: PublicKey): DID => {\n return `did:key:${key.toHex()}`;\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { HeaderCodec, type EncodedKey } from './header-codec';\n\nexport const codec = new HeaderCodec<PublicKey>({\n isKey: (value: any): value is PublicKey => value instanceof PublicKey,\n encode: (key: PublicKey): EncodedKey => ({ __k: key.toHex() }),\n decode: (value: EncodedKey): PublicKey => PublicKey.fromHex(value.__k),\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// TODO(burdon): Factor out from @dxos/hub-protocol\n\nconst ENCODING = 'base64';\n\nexport type EncodedKey = { __k: string };\n\nexport type EncodedBytes = { __b: string };\n\nexport type EncodedTimestamp = { __t: number };\n\nexport interface KeyCodec<KeyType> {\n isKey(value: any): value is KeyType;\n encode(key: KeyType): EncodedKey;\n decode(value: EncodedKey): KeyType;\n}\n\n// TODO(wittjosiah): Use deepMapValues from @dxos/util -- it handles recursion for you.\nexport class HeaderCodec<Key> {\n constructor(private readonly _keyCodec: KeyCodec<Key>) {}\n\n encode(obj: any): string {\n const objectToEncode = this._prepareForEncoding(obj);\n const encoded = Buffer.from(JSON.stringify(objectToEncode));\n return encoded.toString(ENCODING);\n }\n\n decode<Type>(buffer: string): Type {\n const json = JSON.parse(Buffer.from(buffer, ENCODING).toString());\n return this._decodeRecursive(json);\n }\n\n private _decodeRecursive(obj: any): any {\n return this._recurse(obj, (value) => {\n if (isEncodedBytes(value)) {\n return decodeBytes(value.__b);\n }\n if (isEncodedKey(value)) {\n return this._keyCodec.decode(value);\n }\n if (isEncodedDate(value)) {\n return decodeDate(value);\n }\n return null;\n });\n }\n\n private _prepareForEncoding(obj: any): any {\n return this._recurse(obj, (value) => {\n if (value instanceof Uint8Array) {\n return { __b: encodeBytes(value) };\n }\n if (this._keyCodec.isKey(value)) {\n return this._keyCodec.encode(value);\n }\n if (value instanceof Date) {\n return encodeDate(value);\n }\n return null;\n });\n }\n\n private _recurse(obj: any, handler: (obj: object) => any | null): any {\n if (typeof obj !== 'object') {\n return obj;\n }\n const handled = handler(obj);\n if (handled != null) {\n return handled;\n }\n if (Array.isArray(obj)) {\n const result = [];\n for (const elem of obj) {\n result.push(this._recurse(elem, handler));\n }\n return result;\n }\n const result: any = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = this._recurse(value, handler);\n }\n return result;\n }\n}\n\nconst isEncodedKey = (obj: object): obj is EncodedKey => '__k' in obj && typeof obj.__k === 'string';\nconst isEncodedBytes = (obj: object): obj is EncodedBytes => '__b' in obj && typeof obj.__b === 'string';\nconst isEncodedDate = (obj: object): obj is EncodedTimestamp => '__t' in obj && typeof obj.__t === 'number';\n\nconst encodeDate = (date: Date) => ({ __t: date.getTime() });\nconst decodeDate = (timestamp: EncodedTimestamp) => new Date(timestamp.__t);\n\nconst encodeBytes = (bytes: Uint8Array) => Buffer.from(bytes).toString(ENCODING);\nconst decodeBytes = (bytes: string) => Buffer.from(bytes, ENCODING);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { Trigger } from '@dxos/async';\nimport { type Config } from '@dxos/client';\nimport { type Halo } from '@dxos/client-protocol';\nimport { type JsonSchemaType, type ObjectMeta } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport type { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\n\nimport { codec } from './codec';\nimport { matchServiceCredential } from './hub-protocol';\n\n// TODO: use URL scheme for source?\nconst USERFUNCTIONS_META_KEY = 'dxos.org/service/function';\nexport const USERFUNCTIONS_PRESET_META_KEY = 'dxos.org/service/function-preset';\nconst USERFUNCTIONS_CREDENTIAL_CAPABILITY = 'composer:beta';\n\n// TODO: Synchronize API types with server\nexport type UserFunctionUploadResult = {\n result: 'success' | 'error';\n errorMessage?: string;\n functionId?: string;\n functionVersionNumber?: number;\n meta: {\n inputSchema?: JsonSchemaType;\n };\n};\n\nexport type UploadWorkerProps = {\n clientConfig: Config;\n halo: Halo;\n name?: string;\n source: string;\n functionId?: string;\n ownerDid: DID;\n credentialLoadTimeout?: number; // ms to wait for credentials to load\n};\n\n// TODO(burdon): Config.\nconst defaultUserFunctionsBaseUrl = 'https://edge-main.dxos.workers.dev/functions'; // 'http://localhost:8600';\n\nconst getBaseUrl = (config: Config) => {\n if (config.values.runtime?.services?.edge?.url) {\n const url = new URL('/functions', config.values.runtime?.services?.edge?.url);\n url.protocol = 'https';\n return url.toString();\n } else {\n return defaultUserFunctionsBaseUrl;\n }\n};\n\nexport const uploadWorkerFunction = async ({\n clientConfig,\n halo,\n name,\n source,\n ownerDid,\n functionId,\n credentialLoadTimeout,\n}: UploadWorkerProps) => {\n const identity = halo.identity.get();\n if (!identity) {\n throw new Error('Identity not available');\n }\n const userFunctionsBaseUrl = getBaseUrl(clientConfig);\n\n // TODO: codify naming convention\n const uploadUrl = `${userFunctionsBaseUrl}/${ownerDid}` + (functionId ? `/${functionId}` : '');\n\n log('Upload', { functionId, source, name, identityKey: identity.identityKey, uploadUrl: uploadUrl.toString() });\n const response = await fetch(uploadUrl, {\n method: 'PUT',\n body: JSON.stringify({ script: source, name }),\n headers: await presentationForIdentity({ halo, timeout: credentialLoadTimeout }),\n });\n if (!response.ok) {\n return (await response.json()) as UserFunctionUploadResult;\n }\n\n const res = await response.json();\n log('Upload response', { status: response.status, res });\n\n return res as UserFunctionUploadResult;\n};\n\nexport const getUserFunctionUrlInMetadata = (meta: ObjectMeta) => {\n return meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;\n};\n\nexport const setUserFunctionUrlInMetadata = (meta: ObjectMeta, functionUrl: string) => {\n const key = meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY);\n if (key) {\n if (key.id !== functionUrl) {\n throw new Error('Metadata mismatch');\n }\n } else {\n meta.keys.push({ source: USERFUNCTIONS_META_KEY, id: functionUrl });\n }\n};\n\n// TODO: handle team owner\n\nconst presentationForIdentity = async ({ halo, timeout }: { halo: Halo; timeout?: number }) => {\n let credential: Credential | undefined;\n\n if (timeout) {\n const credentialsLoaded = new Trigger();\n halo.credentials.subscribe((c) => {\n credential = c.find(matchServiceCredential([USERFUNCTIONS_CREDENTIAL_CAPABILITY]));\n if (credential) {\n credentialsLoaded.wake();\n }\n });\n await credentialsLoaded.wait({\n timeout,\n });\n } else {\n credential = halo\n .queryCredentials()\n .toSorted((a, b) => b.issuanceDate.getTime() - a.issuanceDate.getTime())\n .find(matchServiceCredential([USERFUNCTIONS_CREDENTIAL_CAPABILITY]));\n }\n\n if (!credential) {\n throw new Error('No credential found');\n }\n log('credential found', { credential });\n // TODO(wittjosiah): If id is required to present credentials, then it should always be present for queried credentials.\n invariant(credential.id, 'beta credential missing id');\n const presentation = await halo.presentCredentials({ ids: [credential.id] });\n\n return { Authorization: `Bearer ${codec.encode(presentation)}` };\n};\n\nexport type InvocationOptions = {\n spaceId?: SpaceId;\n subjectId?: string;\n};\n\nexport const getInvocationUrl = (functionUrl: string, edgeUrl: string, options: InvocationOptions = {}) => {\n const baseUrl = new URL('functions/', edgeUrl);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = functionUrl.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n options.spaceId && url.searchParams.set('spaceId', options.spaceId);\n options.subjectId && url.searchParams.set('subjectId', options.subjectId);\n url.protocol = 'https';\n return url.toString();\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DID } from 'iso-did/types';\n\nimport { type Credential } from '@dxos/client/halo';\nimport { type PublicKey } from '@dxos/keys';\n\n// TODO(burdon): Factor out to @dxos/hub-protocol.\n\nexport const matchServiceCredential =\n (capabilities: string[] = []) =>\n (credential: Credential) => {\n if (credential.subject.assertion['@type'] !== 'dxos.halo.credentials.ServiceAccess') {\n return false;\n }\n\n const { capabilities: credentialCapabilities } = credential.subject.assertion;\n return capabilities.every((capability) => credentialCapabilities.includes(capability));\n };\n\n// TODO: reconcile with @dxos/hub-protocol\n\nexport const publicKeyToDid = (key: PublicKey): DID => {\n return `did:key:${key.toHex()}`;\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["ENCODING", "HeaderCodec", "constructor", "_keyCodec", "encode", "obj", "objectToEncode", "_prepareForEncoding", "encoded", "Buffer", "from", "JSON", "stringify", "toString", "decode", "buffer", "json", "parse", "_decodeRecursive", "_recurse", "value", "isEncodedBytes", "decodeBytes", "__b", "isEncodedKey", "isEncodedDate", "decodeDate", "Uint8Array", "encodeBytes", "isKey", "Date", "encodeDate", "handler", "handled", "Array", "isArray", "result", "elem", "push", "key", "Object", "entries", "__k", "__t", "date", "getTime", "timestamp", "bytes", "codec", "PublicKey", "toHex", "fromHex", "matchServiceCredential", "capabilities", "credential", "subject", "assertion", "credentialCapabilities", "every", "capability", "includes", "publicKeyToDid", "USERFUNCTIONS_META_KEY", "USERFUNCTIONS_PRESET_META_KEY", "USERFUNCTIONS_CREDENTIAL_CAPABILITY", "defaultUserFunctionsBaseUrl", "getBaseUrl", "config", "values", "runtime", "services", "edge", "url", "URL", "protocol", "uploadWorkerFunction", "clientConfig", "halo", "name", "source", "ownerDid", "functionId", "credentialLoadTimeout", "identity", "get", "Error", "userFunctionsBaseUrl", "uploadUrl", "log", "identityKey", "response", "fetch", "method", "body", "script", "headers", "presentationForIdentity", "timeout", "ok", "res", "status", "getUserFunctionUrlInMetadata", "meta", "keys", "find", "id", "setUserFunctionUrlInMetadata", "functionUrl", "credentialsLoaded", "Trigger", "credentials", "subscribe", "c", "wake", "wait", "queryCredentials", "toSorted", "a", "b", "issuanceDate", "invariant", "presentation", "presentCredentials", "ids", "Authorization", "getInvocationUrl", "edgeUrl", "options", "baseUrl", "relativeUrl", "replace", "spaceId", "searchParams", "set", "subjectId"]
7
7
  }
@@ -16,14 +16,14 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_25PQE7FL_exports = {};
20
- __export(chunk_25PQE7FL_exports, {
19
+ var chunk_ZTUFXDTH_exports = {};
20
+ __export(chunk_ZTUFXDTH_exports, {
21
21
  FunctionType: () => FunctionType,
22
22
  ScriptAction: () => ScriptAction,
23
23
  ScriptType: () => ScriptType
24
24
  });
25
- module.exports = __toCommonJS(chunk_25PQE7FL_exports);
26
- var import_chunk_EJC55SDD = require("./chunk-EJC55SDD.cjs");
25
+ module.exports = __toCommonJS(chunk_ZTUFXDTH_exports);
26
+ var import_chunk_6LYX73ZT = require("./chunk-6LYX73ZT.cjs");
27
27
  var import_echo_schema = require("@dxos/echo-schema");
28
28
  var import_types = require("@dxos/plugin-markdown/types");
29
29
  var ScriptType = class extends (0, import_echo_schema.TypedObject)({
@@ -49,12 +49,13 @@ var FunctionType = class extends (0, import_echo_schema.TypedObject)({
49
49
  // TODO(burdon): Move binding to inner type.
50
50
  binding: import_echo_schema.S.optional(import_echo_schema.S.String),
51
51
  // Reference to a source script if it exists within ECHO.
52
- source: import_echo_schema.S.optional((0, import_echo_schema.ref)(ScriptType))
52
+ source: import_echo_schema.S.optional((0, import_echo_schema.ref)(ScriptType)),
53
+ inputSchema: import_echo_schema.S.optional(import_echo_schema.JsonSchemaType)
53
54
  }) {
54
55
  };
55
56
  var ScriptAction;
56
57
  (function(ScriptAction2) {
57
- ScriptAction2[ScriptAction2["CREATE"] = `${import_chunk_EJC55SDD.SCRIPT_PLUGIN}/create`] = "CREATE";
58
+ ScriptAction2[ScriptAction2["CREATE"] = `${import_chunk_6LYX73ZT.SCRIPT_PLUGIN}/create`] = "CREATE";
58
59
  })(ScriptAction || (ScriptAction = {}));
59
60
  // Annotate the CommonJS export names for ESM import in node:
60
61
  0 && (module.exports = {
@@ -62,4 +63,4 @@ var ScriptAction;
62
63
  ScriptAction,
63
64
  ScriptType
64
65
  });
65
- //# sourceMappingURL=chunk-25PQE7FL.cjs.map
66
+ //# sourceMappingURL=chunk-ZTUFXDTH.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/script.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { JsonSchemaType, ref, S, TypedObject } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/plugin-markdown/types';\n\n// TODO(burdon): Which is the outer type? I.e., in the navbar?\n\n/**\n * Source script.\n */\nexport class ScriptType extends TypedObject({ typename: 'dxos.org/type/Script', version: '0.1.0' })({\n // TODO(burdon): Change to URI?\n name: S.optional(S.String),\n description: S.optional(S.String),\n source: ref(TextType),\n // TODO(burdon): Change to has of deployed content.\n // Whether source has changed since last deploy.\n changed: S.optional(S.Boolean),\n}) {}\n\n/**\n * Function deployment.\n */\nexport class FunctionType extends TypedObject({ typename: 'dxos.org/type/Function', version: '0.1.0' })({\n name: S.optional(S.String),\n version: S.Number,\n // Local binding to a function name.\n // TODO(burdon): Move binding to inner type.\n binding: S.optional(S.String),\n // Reference to a source script if it exists within ECHO.\n source: S.optional(ref(ScriptType)),\n inputSchema: S.optional(JsonSchemaType),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SettingsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { type SpaceInitProvides } from '@dxos/plugin-space';\n\nimport { SCRIPT_PLUGIN } from '../meta';\n\nexport enum ScriptAction {\n CREATE = `${SCRIPT_PLUGIN}/create`,\n}\n\nexport type ScriptSettingsProps = {};\n\nexport type ScriptPluginProvides = GraphBuilderProvides &\n IntentResolverProvides &\n MetadataRecordsProvides &\n SchemaProvides &\n SettingsProvides<ScriptSettingsProps> &\n SpaceInitProvides &\n SurfaceProvides &\n TranslationsProvides;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAoD;AACpD,mBAAyB;AAOlB,IAAMA,aAAN,kBAAyBC,gCAAY;EAAEC,UAAU;EAAwBC,SAAS;AAAQ,CAAA,EAAG;;EAElGC,MAAMC,qBAAEC,SAASD,qBAAEE,MAAM;EACzBC,aAAaH,qBAAEC,SAASD,qBAAEE,MAAM;EAChCE,YAAQC,wBAAIC,qBAAAA;;;EAGZC,SAASP,qBAAEC,SAASD,qBAAEQ,OAAO;AAC/B,CAAA,EAAA;AAAI;AAKG,IAAMC,eAAN,kBAA2Bb,gCAAY;EAAEC,UAAU;EAA0BC,SAAS;AAAQ,CAAA,EAAG;EACtGC,MAAMC,qBAAEC,SAASD,qBAAEE,MAAM;EACzBJ,SAASE,qBAAEU;;;EAGXC,SAASX,qBAAEC,SAASD,qBAAEE,MAAM;;EAE5BE,QAAQJ,qBAAEC,aAASI,wBAAIV,UAAAA,CAAAA;EACvBiB,aAAaZ,qBAAEC,SAASY,iCAAAA;AAC1B,CAAA,EAAA;AAAI;;UCjBQC,eAAAA;0CACD,GAAGC,mCAAAA,SAAsB,IAAA;GADxBD,iBAAAA,eAAAA,CAAAA,EAAAA;",
6
+ "names": ["ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "source", "ref", "TextType", "changed", "Boolean", "FunctionType", "Number", "binding", "inputSchema", "JsonSchemaType", "ScriptAction", "SCRIPT_PLUGIN"]
7
+ }
@@ -18,18 +18,18 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var edge_exports = {};
20
20
  __export(edge_exports, {
21
- HeaderCodec: () => import_chunk_FY5KKL5N.HeaderCodec,
22
- USERFUNCTIONS_PRESET_META_KEY: () => import_chunk_FY5KKL5N.USERFUNCTIONS_PRESET_META_KEY,
23
- codec: () => import_chunk_FY5KKL5N.codec,
24
- getInvocationUrl: () => import_chunk_FY5KKL5N.getInvocationUrl,
25
- getUserFunctionUrlInMetadata: () => import_chunk_FY5KKL5N.getUserFunctionUrlInMetadata,
26
- matchServiceCredential: () => import_chunk_FY5KKL5N.matchServiceCredential,
27
- publicKeyToDid: () => import_chunk_FY5KKL5N.publicKeyToDid,
28
- setUserFunctionUrlInMetadata: () => import_chunk_FY5KKL5N.setUserFunctionUrlInMetadata,
29
- uploadWorkerFunction: () => import_chunk_FY5KKL5N.uploadWorkerFunction
21
+ HeaderCodec: () => import_chunk_XS6GEYYH.HeaderCodec,
22
+ USERFUNCTIONS_PRESET_META_KEY: () => import_chunk_XS6GEYYH.USERFUNCTIONS_PRESET_META_KEY,
23
+ codec: () => import_chunk_XS6GEYYH.codec,
24
+ getInvocationUrl: () => import_chunk_XS6GEYYH.getInvocationUrl,
25
+ getUserFunctionUrlInMetadata: () => import_chunk_XS6GEYYH.getUserFunctionUrlInMetadata,
26
+ matchServiceCredential: () => import_chunk_XS6GEYYH.matchServiceCredential,
27
+ publicKeyToDid: () => import_chunk_XS6GEYYH.publicKeyToDid,
28
+ setUserFunctionUrlInMetadata: () => import_chunk_XS6GEYYH.setUserFunctionUrlInMetadata,
29
+ uploadWorkerFunction: () => import_chunk_XS6GEYYH.uploadWorkerFunction
30
30
  });
31
31
  module.exports = __toCommonJS(edge_exports);
32
- var import_chunk_FY5KKL5N = require("../chunk-FY5KKL5N.cjs");
32
+ var import_chunk_XS6GEYYH = require("../chunk-XS6GEYYH.cjs");
33
33
  // Annotate the CommonJS export names for ESM import in node:
34
34
  0 && (module.exports = {
35
35
  HeaderCodec,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n HeaderCodec,\n USERFUNCTIONS_PRESET_META_KEY,\n codec,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n matchServiceCredential,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction\n} from \"../chunk-FY5KKL5N.cjs\";\nexport {\n HeaderCodec,\n USERFUNCTIONS_PRESET_META_KEY,\n codec,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n matchServiceCredential,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n HeaderCodec,\n USERFUNCTIONS_PRESET_META_KEY,\n codec,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n matchServiceCredential,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction\n} from \"../chunk-XS6GEYYH.cjs\";\nexport {\n HeaderCodec,\n USERFUNCTIONS_PRESET_META_KEY,\n codec,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n matchServiceCredential,\n publicKeyToDid,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAUO;",
6
6
  "names": []
7
7
  }
@@ -29,21 +29,23 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var node_exports = {};
30
30
  __export(node_exports, {
31
31
  AutomationPanel: () => AutomationPanel,
32
- Bundler: () => import_chunk_ACLCRWDB.Bundler,
32
+ Bundler: () => import_chunk_WPP65EYS.Bundler,
33
33
  Compiler: () => Compiler,
34
- FunctionType: () => import_chunk_25PQE7FL.FunctionType,
35
- ScriptAction: () => import_chunk_25PQE7FL.ScriptAction,
34
+ FunctionType: () => import_chunk_ZTUFXDTH.FunctionType,
35
+ ScriptAction: () => import_chunk_ZTUFXDTH.ScriptAction,
36
36
  ScriptContainer: () => ScriptContainer,
37
37
  ScriptPlugin: () => ScriptPlugin,
38
38
  ScriptSettings: () => ScriptSettings,
39
- ScriptType: () => import_chunk_25PQE7FL.ScriptType,
39
+ ScriptSettingsPanel: () => ScriptSettingsPanel,
40
+ ScriptType: () => import_chunk_ZTUFXDTH.ScriptType,
40
41
  default: () => src_default,
41
- initializeBundler: () => import_chunk_ACLCRWDB.initializeBundler
42
+ initializeBundler: () => import_chunk_WPP65EYS.initializeBundler
42
43
  });
43
44
  module.exports = __toCommonJS(node_exports);
44
- var import_chunk_ACLCRWDB = require("./chunk-ACLCRWDB.cjs");
45
- var import_chunk_25PQE7FL = require("./chunk-25PQE7FL.cjs");
46
- var import_chunk_EJC55SDD = require("./chunk-EJC55SDD.cjs");
45
+ var import_chunk_WPP65EYS = require("./chunk-WPP65EYS.cjs");
46
+ var import_chunk_XS6GEYYH = require("./chunk-XS6GEYYH.cjs");
47
+ var import_chunk_ZTUFXDTH = require("./chunk-ZTUFXDTH.cjs");
48
+ var import_chunk_6LYX73ZT = require("./chunk-6LYX73ZT.cjs");
47
49
  var import_esbuild = __toESM(require("esbuild-wasm/esbuild.wasm?url"));
48
50
  var import_react = __toESM(require("react"));
49
51
  var import_app_framework = require("@dxos/app-framework");
@@ -61,6 +63,10 @@ var import_react3 = __toESM(require("react"));
61
63
  var import_react_client = require("@dxos/react-client");
62
64
  var import_react_ui = require("@dxos/react-ui");
63
65
  var import_react_ui_data = require("@dxos/react-ui-data");
66
+ var import_react4 = __toESM(require("react"));
67
+ var import_react_client2 = require("@dxos/react-client");
68
+ var import_echo2 = require("@dxos/react-client/echo");
69
+ var import_react_ui2 = require("@dxos/react-ui");
64
70
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/compiler/compiler.ts";
65
71
  var defaultOptions = {
66
72
  lib: [
@@ -110,7 +116,7 @@ var Compiler = class {
110
116
  }
111
117
  };
112
118
  var ScriptSettings = ({ settings }) => {
113
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_EJC55SDD.SCRIPT_PLUGIN);
119
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_6LYX73ZT.SCRIPT_PLUGIN);
114
120
  const client = (0, import_react_client.useClient)();
115
121
  const handleAuthenticate = async () => {
116
122
  const { identityKey } = client.halo.identity.get();
@@ -133,18 +139,86 @@ var ScriptSettings = ({ settings }) => {
133
139
  }
134
140
  ]);
135
141
  };
136
- return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_data.FormInput, {
142
+ return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_data.DeprecatedFormInput, {
137
143
  label: t("authenticate action label")
138
144
  }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui.Button, {
139
145
  onClick: handleAuthenticate
140
146
  }, t("authenticate button label"))));
141
147
  };
142
- var AutomationPanel = (0, import_react2.lazy)(() => import("./AutomationPanel-SANUE5X4.cjs"));
143
- var ScriptContainer = (0, import_react2.lazy)(() => import("./ScriptContainer-BV7HMUY5.cjs"));
148
+ var ScriptSettingsPanel = ({ script }) => {
149
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_6LYX73ZT.SCRIPT_PLUGIN);
150
+ const client = (0, import_react_client2.useClient)();
151
+ const space = (0, import_echo2.getSpace)(script);
152
+ const [fn] = (0, import_echo2.useQuery)(space, import_echo2.Filter.schema(import_chunk_ZTUFXDTH.FunctionType, (fn2) => fn2.source === script));
153
+ const handleNameChange = (0, import_react4.useCallback)((event) => {
154
+ script.name = event.target.value;
155
+ }, [
156
+ script
157
+ ]);
158
+ const [binding, setBinding] = (0, import_react_ui2.useControlledValue)(fn?.binding ?? "");
159
+ const handleBindingChange = (0, import_react4.useCallback)((event) => {
160
+ setBinding(event.target.value);
161
+ }, [
162
+ setBinding
163
+ ]);
164
+ const handleBindingBlur = (0, import_react4.useCallback)(() => {
165
+ fn.binding = binding;
166
+ }, [
167
+ fn,
168
+ binding
169
+ ]);
170
+ const functionPath = fn && (0, import_chunk_XS6GEYYH.getUserFunctionUrlInMetadata)((0, import_echo2.getMeta)(fn));
171
+ const functionUrl = functionPath && (0, import_chunk_XS6GEYYH.getInvocationUrl)(functionPath, client.config.values.runtime?.services?.edge?.url ?? "", {
172
+ spaceId: space?.id
173
+ });
174
+ const handleCopy = (0, import_react4.useCallback)(() => functionUrl && navigator.clipboard.writeText(functionUrl), [
175
+ functionUrl
176
+ ]);
177
+ return /* @__PURE__ */ import_react4.default.createElement("div", {
178
+ role: "form",
179
+ className: "flex flex-col w-full p-2 gap-4"
180
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement("div", {
181
+ role: "none",
182
+ className: "flex flex-col gap-1"
183
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, null, t("name label")), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.TextInput, {
184
+ placeholder: t("object title placeholder"),
185
+ value: script.name ?? "",
186
+ onChange: handleNameChange
187
+ }))), fn && /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement("hr", {
188
+ className: "border-separator"
189
+ }), /* @__PURE__ */ import_react4.default.createElement("h2", null, t("remote function settings heading")), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement("div", {
190
+ role: "none",
191
+ className: "flex flex-col gap-1"
192
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, null, t("function url label")), /* @__PURE__ */ import_react4.default.createElement("div", {
193
+ role: "none",
194
+ className: "flex gap-1"
195
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.TextInput, {
196
+ disabled: true,
197
+ value: functionUrl,
198
+ onChange: (event) => {
199
+ fn.name = event.target.value;
200
+ }
201
+ }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Button, {
202
+ onClick: handleCopy
203
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
204
+ icon: "ph--copy--regular",
205
+ size: 4
206
+ }))))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement("div", {
207
+ role: "none",
208
+ className: "flex flex-col gap-1"
209
+ }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.Label, null, t("function binding label")), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Input.TextInput, {
210
+ placeholder: t("function binding placeholder"),
211
+ value: binding,
212
+ onChange: handleBindingChange,
213
+ onBlur: handleBindingBlur
214
+ })))));
215
+ };
216
+ var AutomationPanel = (0, import_react2.lazy)(() => import("./AutomationPanel-M5UHEMPG.cjs"));
217
+ var ScriptContainer = (0, import_react2.lazy)(() => import("./ScriptContainer-X76C7OD2.cjs"));
144
218
  var translations_default = [
145
219
  {
146
220
  "en-US": {
147
- [import_chunk_EJC55SDD.SCRIPT_PLUGIN]: {
221
+ [import_chunk_6LYX73ZT.SCRIPT_PLUGIN]: {
148
222
  "plugin name": "Scripts",
149
223
  "object title placeholder": "New script",
150
224
  "create object label": "Create script",
@@ -158,7 +232,12 @@ var translations_default = [
158
232
  "format label": "Format",
159
233
  "toggle details label": "Toggle details panel",
160
234
  "authenticate action label": "Authenticate functions service",
161
- "authenticate button label": "Authenticate"
235
+ "authenticate button label": "Authenticate",
236
+ "name label": "Name",
237
+ "remote function settings heading": "Remote Function",
238
+ "function url label": "Invocation URL",
239
+ "function binding label": "Function binding",
240
+ "function binding placeholder": "BINDING"
162
241
  }
163
242
  }
164
243
  }
@@ -166,7 +245,7 @@ var translations_default = [
166
245
  var ScriptPlugin = () => {
167
246
  const compiler = new Compiler();
168
247
  return {
169
- meta: import_chunk_EJC55SDD.meta_default,
248
+ meta: import_chunk_6LYX73ZT.meta_default,
170
249
  initialize: async () => {
171
250
  await compiler.initialize();
172
251
  compiler.setFile("/src/typings.d.ts", "declare module 'https://*';");
@@ -175,7 +254,7 @@ var ScriptPlugin = () => {
175
254
  export type FunctionHandler = ({ event, context }: { event: any; context: any }) => Promise<Response>;
176
255
  export const functionHandler = (handler: FunctionHandler) => handler;
177
256
  `);
178
- await (0, import_chunk_ACLCRWDB.initializeBundler)({
257
+ await (0, import_chunk_WPP65EYS.initializeBundler)({
179
258
  wasmUrl: import_esbuild.default
180
259
  });
181
260
  },
@@ -183,11 +262,11 @@ var ScriptPlugin = () => {
183
262
  settings: {},
184
263
  metadata: {
185
264
  records: {
186
- [import_chunk_25PQE7FL.ScriptType.typename]: {
265
+ [import_chunk_ZTUFXDTH.ScriptType.typename]: {
187
266
  placeholder: [
188
267
  "object title placeholder",
189
268
  {
190
- ns: import_chunk_EJC55SDD.SCRIPT_PLUGIN
269
+ ns: import_chunk_6LYX73ZT.SCRIPT_PLUGIN
191
270
  }
192
271
  ],
193
272
  icon: "ph--code--regular",
@@ -201,8 +280,8 @@ var ScriptPlugin = () => {
201
280
  translations: translations_default,
202
281
  echo: {
203
282
  schema: [
204
- import_chunk_25PQE7FL.ScriptType,
205
- import_chunk_25PQE7FL.FunctionType
283
+ import_chunk_ZTUFXDTH.ScriptType,
284
+ import_chunk_ZTUFXDTH.FunctionType
206
285
  ]
207
286
  },
208
287
  space: {
@@ -210,10 +289,10 @@ var ScriptPlugin = () => {
210
289
  label: [
211
290
  "create object label",
212
291
  {
213
- ns: import_chunk_EJC55SDD.SCRIPT_PLUGIN
292
+ ns: import_chunk_6LYX73ZT.SCRIPT_PLUGIN
214
293
  }
215
294
  ],
216
- action: import_chunk_25PQE7FL.ScriptAction.CREATE
295
+ action: import_chunk_ZTUFXDTH.ScriptAction.CREATE
217
296
  }
218
297
  },
219
298
  graph: {
@@ -224,7 +303,7 @@ var ScriptPlugin = () => {
224
303
  return [];
225
304
  }
226
305
  return (0, import_plugin_graph.createExtension)({
227
- id: import_chunk_25PQE7FL.ScriptAction.CREATE,
306
+ id: import_chunk_ZTUFXDTH.ScriptAction.CREATE,
228
307
  filter: (node) => (0, import_plugin_graph.isActionGroup)(node) && node.id.startsWith(import_plugin_space.SpaceAction.ADD_OBJECT),
229
308
  actions: ({ node }) => {
230
309
  const id = node.id.split("/").at(-1);
@@ -237,12 +316,12 @@ var ScriptPlugin = () => {
237
316
  }
238
317
  return [
239
318
  {
240
- id: `${import_chunk_EJC55SDD.SCRIPT_PLUGIN}/create/${node.id}`,
319
+ id: `${import_chunk_6LYX73ZT.SCRIPT_PLUGIN}/create/${node.id}`,
241
320
  data: async () => {
242
321
  await dispatch([
243
322
  {
244
- plugin: import_chunk_EJC55SDD.SCRIPT_PLUGIN,
245
- action: import_chunk_25PQE7FL.ScriptAction.CREATE
323
+ plugin: import_chunk_6LYX73ZT.SCRIPT_PLUGIN,
324
+ action: import_chunk_ZTUFXDTH.ScriptAction.CREATE
246
325
  },
247
326
  {
248
327
  action: import_plugin_space.SpaceAction.ADD_OBJECT,
@@ -259,7 +338,7 @@ var ScriptPlugin = () => {
259
338
  label: [
260
339
  "create object label",
261
340
  {
262
- ns: import_chunk_EJC55SDD.SCRIPT_PLUGIN
341
+ ns: import_chunk_6LYX73ZT.SCRIPT_PLUGIN
263
342
  }
264
343
  ],
265
344
  icon: "ph--code--regular",
@@ -275,12 +354,12 @@ var ScriptPlugin = () => {
275
354
  component: ({ data, role }) => {
276
355
  switch (role) {
277
356
  case "settings": {
278
- return data.plugin === import_chunk_EJC55SDD.meta_default.id ? /* @__PURE__ */ import_react.default.createElement(ScriptSettings, {
357
+ return data.plugin === import_chunk_6LYX73ZT.meta_default.id ? /* @__PURE__ */ import_react.default.createElement(ScriptSettings, {
279
358
  settings: {}
280
359
  }) : null;
281
360
  }
282
361
  case "article": {
283
- if (data.object instanceof import_chunk_25PQE7FL.ScriptType) {
362
+ if (data.object instanceof import_chunk_ZTUFXDTH.ScriptType) {
284
363
  return /* @__PURE__ */ import_react.default.createElement(ScriptContainer, {
285
364
  script: data.object,
286
365
  env: compiler.environment
@@ -289,7 +368,7 @@ var ScriptPlugin = () => {
289
368
  break;
290
369
  }
291
370
  case "complementary--automation": {
292
- if (data.object instanceof import_chunk_25PQE7FL.ScriptType) {
371
+ if (data.subject instanceof import_chunk_ZTUFXDTH.ScriptType) {
293
372
  return {
294
373
  node: /* @__PURE__ */ import_react.default.createElement(AutomationPanel, {
295
374
  subject: data.subject
@@ -297,6 +376,15 @@ var ScriptPlugin = () => {
297
376
  disposition: "hoist"
298
377
  };
299
378
  }
379
+ break;
380
+ }
381
+ case "complementary--settings": {
382
+ if (data.subject instanceof import_chunk_ZTUFXDTH.ScriptType) {
383
+ return /* @__PURE__ */ import_react.default.createElement(ScriptSettingsPanel, {
384
+ script: data.subject
385
+ });
386
+ }
387
+ break;
300
388
  }
301
389
  }
302
390
  return null;
@@ -305,11 +393,11 @@ var ScriptPlugin = () => {
305
393
  intent: {
306
394
  resolver: (intent) => {
307
395
  switch (intent.action) {
308
- case import_chunk_25PQE7FL.ScriptAction.CREATE: {
396
+ case import_chunk_ZTUFXDTH.ScriptAction.CREATE: {
309
397
  return {
310
- data: (0, import_echo_schema.create)(import_chunk_25PQE7FL.ScriptType, {
398
+ data: (0, import_echo_schema.create)(import_chunk_ZTUFXDTH.ScriptType, {
311
399
  source: (0, import_echo_schema.create)(import_types.TextType, {
312
- content: import_chunk_ACLCRWDB.templates[0].source
400
+ content: import_chunk_WPP65EYS.templates[0].source
313
401
  })
314
402
  })
315
403
  };
@@ -331,6 +419,7 @@ var src_default = ScriptPlugin;
331
419
  ScriptContainer,
332
420
  ScriptPlugin,
333
421
  ScriptSettings,
422
+ ScriptSettingsPanel,
334
423
  ScriptType,
335
424
  initializeBundler
336
425
  });