@dxos/plugin-automation 0.7.0 → 0.7.1-staging.8709ba7

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 (63) hide show
  1. package/dist/lib/browser/{PromptContainer-3GUENQHE.mjs → PromptContainer-6CBNCUKQ.mjs} +3 -3
  2. package/dist/lib/browser/{chunk-J4SYTP4Y.mjs → chunk-B3Z4NQC2.mjs} +2 -2
  3. package/dist/lib/browser/{chunk-J4SYTP4Y.mjs.map → chunk-B3Z4NQC2.mjs.map} +1 -1
  4. package/dist/lib/browser/{chunk-2FOJUVYG.mjs → chunk-CJMV64XO.mjs} +2 -2
  5. package/dist/lib/browser/index.mjs +299 -213
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/types/index.mjs +1 -1
  9. package/dist/lib/node/{PromptContainer-74ZRO4HK.cjs → PromptContainer-7RCGCU3K.cjs} +7 -7
  10. package/dist/lib/node/{chunk-XS53UP75.cjs → chunk-SUMUWFZA.cjs} +4 -4
  11. package/dist/lib/node/{chunk-XS53UP75.cjs.map → chunk-SUMUWFZA.cjs.map} +1 -1
  12. package/dist/lib/node/{chunk-4TMTUB4X.cjs → chunk-YGRHTCOX.cjs} +16 -16
  13. package/dist/lib/node/index.cjs +322 -240
  14. package/dist/lib/node/index.cjs.map +4 -4
  15. package/dist/lib/node/meta.json +1 -1
  16. package/dist/lib/node/types/index.cjs +6 -6
  17. package/dist/lib/node/types/index.cjs.map +1 -1
  18. package/dist/lib/node-esm/{PromptContainer-5OK4GWIR.mjs → PromptContainer-4SCHQV5C.mjs} +3 -3
  19. package/dist/lib/node-esm/{chunk-FN6DOJZP.mjs → chunk-62AB5HXX.mjs} +2 -2
  20. package/dist/lib/node-esm/{chunk-AAUSG7OA.mjs → chunk-PYT2WY4B.mjs} +2 -2
  21. package/dist/lib/node-esm/{chunk-AAUSG7OA.mjs.map → chunk-PYT2WY4B.mjs.map} +1 -1
  22. package/dist/lib/node-esm/index.mjs +299 -213
  23. package/dist/lib/node-esm/index.mjs.map +4 -4
  24. package/dist/lib/node-esm/meta.json +1 -1
  25. package/dist/lib/node-esm/types/index.mjs +1 -1
  26. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  27. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +4 -3
  28. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  29. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +1 -0
  30. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/TriggerEditor/meta.d.ts.map +1 -1
  32. package/dist/types/src/hooks/email.d.ts.map +1 -0
  33. package/dist/types/src/hooks/index.d.ts +2 -0
  34. package/dist/types/src/hooks/index.d.ts.map +1 -0
  35. package/dist/types/src/{components/TriggerEditor/invokation-handler.d.ts → hooks/invocation-handler.d.ts} +1 -1
  36. package/dist/types/src/hooks/invocation-handler.d.ts.map +1 -0
  37. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +3 -0
  38. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +1 -0
  39. package/dist/types/src/types/index.d.ts +1 -1
  40. package/dist/types/src/types/index.d.ts.map +1 -1
  41. package/dist/types/src/types/{chain.d.ts → schema.d.ts} +1 -1
  42. package/dist/types/src/types/schema.d.ts.map +1 -0
  43. package/package.json +35 -34
  44. package/src/AutomationPlugin.tsx +0 -3
  45. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +4 -3
  46. package/src/components/TriggerEditor/TriggerEditor.tsx +69 -86
  47. package/src/components/TriggerEditor/meta.tsx +1 -0
  48. package/src/hooks/index.ts +5 -0
  49. package/src/{components/TriggerEditor/invokation-handler.ts → hooks/invocation-handler.ts} +4 -2
  50. package/src/hooks/useLocalTriggerManager.ts +84 -0
  51. package/src/types/index.ts +1 -1
  52. package/dist/types/src/components/TriggerEditor/email.d.ts.map +0 -1
  53. package/dist/types/src/components/TriggerEditor/invokation-handler.d.ts.map +0 -1
  54. package/dist/types/src/types/chain.d.ts.map +0 -1
  55. /package/dist/lib/browser/{PromptContainer-3GUENQHE.mjs.map → PromptContainer-6CBNCUKQ.mjs.map} +0 -0
  56. /package/dist/lib/browser/{chunk-2FOJUVYG.mjs.map → chunk-CJMV64XO.mjs.map} +0 -0
  57. /package/dist/lib/node/{PromptContainer-74ZRO4HK.cjs.map → PromptContainer-7RCGCU3K.cjs.map} +0 -0
  58. /package/dist/lib/node/{chunk-4TMTUB4X.cjs.map → chunk-YGRHTCOX.cjs.map} +0 -0
  59. /package/dist/lib/node-esm/{PromptContainer-5OK4GWIR.mjs.map → PromptContainer-4SCHQV5C.mjs.map} +0 -0
  60. /package/dist/lib/node-esm/{chunk-FN6DOJZP.mjs.map → chunk-62AB5HXX.mjs.map} +0 -0
  61. /package/dist/types/src/{components/TriggerEditor → hooks}/email.d.ts +0 -0
  62. /package/src/{components/TriggerEditor → hooks}/email.ts +0 -0
  63. /package/src/types/{chain.ts → schema.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/AutomationPlugin.tsx", "../../../src/components/index.ts", "../../../src/components/AutomationPanel.tsx", "../../../src/components/Chain.tsx", "../../../src/presets.ts", "../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/Form.tsx", "../../../src/components/TriggerEditor/invokation-handler.ts", "../../../src/components/TriggerEditor/email.ts", "../../../src/components/TriggerEditor/meta.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type PluginDefinition, parseMetadataResolverPlugin, resolvePlugin } from '@dxos/app-framework';\nimport { FunctionDef, FunctionTrigger } from '@dxos/functions/types';\nimport { invariant } from '@dxos/invariant';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { createExtension, toSignal } from '@dxos/plugin-graph';\nimport { getTypename, loadObjectReferences, parseId } from '@dxos/react-client/echo';\n\nimport { AutomationPanel } from './components';\nimport meta, { AUTOMATION_PLUGIN } from './meta';\nimport translations from './translations';\nimport { AutomationAction, type AutomationPluginProvides, ChainPromptType, ChainType } from './types';\n\n// TODO(burdon): Prompt article.\n// TODO(burdon): Trigger panel.\n\nexport const AutomationPlugin = (): PluginDefinition<AutomationPluginProvides> => {\n return {\n meta,\n provides: {\n metadata: {\n records: {\n [ChainType.typename]: {\n placeholder: ['object placeholder', { ns: AUTOMATION_PLUGIN }],\n icon: 'ph--magic-wand--regular',\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (chain: ChainType) => loadObjectReferences(chain, (chain) => chain.prompts),\n },\n },\n },\n translations,\n echo: {\n schema: [ChainType, ChainPromptType, FunctionDef, FunctionTrigger],\n },\n complementary: {\n panels: [\n {\n id: 'automation',\n label: ['open automation panel label', { ns: AUTOMATION_PLUGIN }],\n icon: 'ph--flow-arrow--regular',\n },\n ],\n },\n graph: {\n builder: (plugins) => {\n const clientPlugin = resolvePlugin(plugins, parseClientPlugin);\n const metadataPlugin = resolvePlugin(plugins, parseMetadataResolverPlugin);\n const resolve = metadataPlugin?.provides.metadata.resolver;\n const client = clientPlugin?.provides.client;\n invariant(resolve);\n invariant(client);\n\n return [\n // Create nodes for object settings.\n createExtension({\n id: `${AUTOMATION_PLUGIN}/automation-for-subject`,\n resolver: ({ id }) => {\n if (!id.endsWith('~automation')) {\n return;\n }\n\n const type = 'orphan-settings-for-subject';\n const icon = 'ph--flow-arrow--regular';\n\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const space = client.spaces.get().find((space) => space.id === spaceId);\n if (!objectId) {\n // TODO(burdon): Ref SPACE_PLUGIN ns.\n const label = space\n ? space.properties.name || ['unnamed space label', { ns: AUTOMATION_PLUGIN }]\n : ['unnamed object settings label', { ns: AUTOMATION_PLUGIN }];\n\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n showResolvedThreads: false,\n object: null,\n space,\n },\n };\n }\n\n const object = toSignal(\n (onChange) => {\n const timeout = setTimeout(async () => {\n await space?.db.loadObjectById(objectId);\n onChange();\n });\n\n return () => clearTimeout(timeout);\n },\n () => space?.db.getObjectById(objectId),\n subjectId,\n );\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolve(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object settings label', { ns: AUTOMATION_PLUGIN }];\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n object,\n },\n };\n },\n }),\n ];\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (role) {\n // case 'article':\n // return data.object instanceof ChainType ? <ChainArticle chain={data.object} /> : null;\n\n case 'complementary--automation':\n return <AutomationPanel />;\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case AutomationAction.CREATE: {\n return {\n // data: create(ChainType, { prompts: [] }),\n // data: create(FunctionTrigger, { function: '', spec: { type: 'timer', cron: '' } }),\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const PromptContainer = lazy(() => import('./PromptContainer'));\n\nexport * from './AutomationPanel';\nexport * from './Chain';\nexport * from './PromptEditor';\nexport * from './TriggerEditor';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Button, Icon, Toolbar } from '@dxos/react-ui';\n\n// TODO(burdon): Form components.\n\nexport const AutomationPanel = () => {\n const handleCreate = () => {};\n\n return (\n <div className='flex flex-col'>\n <Toolbar.Root classNames='p-2'>\n <Button onClick={handleCreate}>\n <Icon icon='ph--plus--regular' />\n </Button>\n </Toolbar.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Select, useTranslation } from '@dxos/react-ui';\nimport { nonNullable } from '@dxos/util';\n\nimport { PromptEditor } from './PromptEditor';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { chainPresets, type Preset } from '../presets';\nimport { type ChainType } from '../types';\n\nexport type ChainProps = {\n chain: ChainType;\n};\n\nexport const Chain = ({ chain }: ChainProps) => {\n const space = getSpace(chain);\n if (!space) {\n return null;\n }\n\n const handleSelectPreset = (preset: Preset) => {\n chain.name = preset.title;\n // TODO(burdon): API issue.\n chain.prompts?.filter(nonNullable).forEach((prompt) => space.db.remove(prompt));\n chain.prompts = [preset.createPrompt()];\n };\n\n return (\n <div className='flex flex-col my-2 gap-4'>\n {chain.prompts?.filter(nonNullable).map((prompt, i) => <PromptEditor key={i} prompt={prompt} />)}\n <div className='p-2'>\n <ChainPresets presets={chainPresets} onSelect={handleSelectPreset} />\n </div>\n </div>\n );\n};\n\nexport const ChainPresets: FC<{ presets: Preset[]; onSelect: (preset: Preset) => void }> = ({ presets, onSelect }) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n return (\n <Select.Root\n onValueChange={(value) => {\n onSelect(presets.find(({ id }) => id === value)!);\n }}\n >\n <Select.TriggerButton classNames='w-full' placeholder={t('select preset template placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {presets.map(({ id, title }) => (\n <Select.Option key={id} value={id}>\n {title}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { create } from '@dxos/echo-schema';\n\nimport { ChainInputType, ChainPromptType } from './types';\n\nexport const str = (...text: (string | undefined | boolean)[]): string =>\n text\n .filter((value) => value !== undefined && value !== false)\n .flat()\n .join('\\n');\n\nexport type Preset = {\n id: string;\n title: string;\n createPrompt: () => ChainPromptType;\n};\n\nexport const chainPresets: Preset[] = [\n {\n id: 'dxos.org/prompt/translate',\n title: 'Translate',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'say',\n template: str(\n // prettier-ignore\n 'Translate the following into {language}:',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.VALUE,\n name: 'language',\n value: 'japanese',\n },\n {\n type: ChainInputType.PASS_THROUGH,\n name: 'input',\n },\n // TODO(burdon): Message.\n // {\n // type: ChainInputType.CONTEXT,\n // name: 'input',\n // value: 'object.text',\n // },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/chess',\n title: 'Chess',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'hint',\n template: str(\n // prettier-ignore\n 'You are a machine that is an expert chess player.',\n '',\n 'The move history of the current game is: {history}',\n '',\n 'Suggest the next move and very briefly explain your strategy in a couple of sentences.',\n ),\n inputs: [\n {\n type: ChainInputType.CONTEXT,\n name: 'history',\n value: 'object.pgn',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/mermaid',\n title: 'Mermaid',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'draw',\n template: str(\n // prettier-ignore\n 'Create a simplified mermaid graph representing the text below.',\n 'Do not explain anything.',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.PASS_THROUGH,\n name: 'input',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/list',\n title: 'List',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'list',\n template: str(\n // prettier-ignore\n 'You are a machine that only replies with valid, iterable RFC8259 compliant JSON in your responses.',\n 'Your entire response should be a single array of JSON objects.',\n '',\n 'Your entire response should be a map where the key is the type and the value is a single array of JSON objects conforming to the following types:',\n '',\n '{schema}',\n '',\n '---',\n '',\n '{question}',\n ),\n inputs: [\n {\n type: ChainInputType.SCHEMA,\n name: 'schema',\n value: 'example.com/type/project',\n },\n {\n type: ChainInputType.PASS_THROUGH,\n name: 'question',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/base',\n title: 'RAG',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'rag',\n template: str(\n // prettier-ignore\n \"Very briefly answer the question based only on the following context and say if you don't know the answer.\",\n // 'answer the question using the following context as well as your training data:',\n '',\n '{context}',\n '',\n '---',\n '',\n 'question: {question}',\n ),\n inputs: [\n {\n type: ChainInputType.RETRIEVER,\n name: 'context',\n },\n {\n type: ChainInputType.CONTEXT,\n name: 'question',\n value: 'object.text',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/lookup',\n title: 'Lookup',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'lookup',\n template: str(\n // prettier-ignore\n 'Lookup and very briefly summarize the following topic in one or two sentences:',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.CONTEXT,\n name: 'input',\n value: 'text',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/extract',\n title: 'Extract',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'extract',\n template: str(\n // prettier-ignore\n 'List all people and companies mentioned in the text below.',\n '',\n 'You are a machine that only replies with valid, iterable RFC8259 compliant JSON in your responses.',\n 'Your entire response should be a map where the key is the type and the value is a single array of JSON objects conforming to the following types:',\n '',\n '{contact}',\n '{company}',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.SCHEMA,\n name: 'contact',\n value: 'example.com/type/contact',\n },\n {\n type: ChainInputType.SCHEMA,\n name: 'company',\n value: 'example.com/type/organization',\n },\n {\n type: ChainInputType.CONTEXT,\n name: 'input',\n value: 'text',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/discord',\n title: 'Summarize',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'summarize',\n template: str(\n // prettier-ignore\n 'Summarize what the team is working on and format it as a markdown table without any explanation.',\n '',\n '---',\n '',\n '{context}',\n ),\n inputs: [\n {\n type: ChainInputType.RESOLVER,\n name: 'context',\n value: 'discord.messages.recent',\n },\n ],\n }),\n },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ChangeEventHandler, type FC, useEffect, useMemo, useState } from 'react';\n\nimport { Mutex } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { createSubscriptionTrigger, createWebsocketTrigger, type TriggerFactory } from '@dxos/functions';\nimport {\n FunctionTrigger,\n type FunctionTriggerType,\n type SubscriptionTrigger,\n type TimerTrigger,\n type TriggerSpec,\n type WebhookTrigger,\n type WebsocketTrigger,\n} from '@dxos/functions/types';\nimport { log } from '@dxos/log';\nimport { ScriptType } from '@dxos/plugin-script/types';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { distinctBy } from '@dxos/util';\n\nimport { InputRow } from './Form';\nimport { invokeFunction } from './invokation-handler';\nimport { getFunctionMetaExtension, state } from './meta';\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nconst triggerTypes: FunctionTriggerType[] = ['subscription', 'timer', 'webhook', 'websocket'];\n\nconst registerTriggersMutex = new Mutex();\n\nexport const TriggerEditor = ({ space, trigger }: { space: Space; trigger: FunctionTrigger }) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const client = useClient();\n const scripts = useQuery(space, Filter.schema(ScriptType));\n const script = useMemo(() => scripts.find((script) => script.id === trigger.function), [trigger.function, scripts]);\n\n const triggerLabels: Record<FunctionTriggerType, string> = {\n subscription: t('trigger type subscription'),\n timer: t('trigger type timer'),\n webhook: t('trigger type webhook'),\n websocket: t('trigger type websocket'),\n };\n\n // TODO(burdon): Factor out, creating context for plugin (runs outside of component).\n const [registry] = useState(new Map<string, Context>());\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n useEffect(() => {\n setTimeout(async () => {\n // Mark-and-sweep removing disabled triggers.\n await registerTriggersMutex.executeSynchronized(async () => {\n const deprecated = new Set(Array.from(registry.keys()));\n log.info('triggers', {\n deprecated,\n all: triggers.map((t) => t.id),\n enabled: triggers.filter((t) => t.enabled).map((t) => t.id),\n });\n\n for (const trigger of triggers) {\n if (trigger.enabled) {\n if (registry.has(trigger.id)) {\n deprecated.delete(trigger.id);\n continue;\n }\n log.info('activating trigger', trigger.id);\n\n const ctx = new Context();\n registry.set(trigger.id, ctx);\n const triggerSpec = trigger.spec;\n\n let triggerFactory: TriggerFactory<any>;\n if (triggerSpec.type === 'subscription') {\n triggerFactory = createSubscriptionTrigger;\n } else if (triggerSpec.type === 'websocket') {\n triggerFactory = createWebsocketTrigger;\n } else {\n log.info('unsupported trigger', { type: triggerSpec.type });\n continue;\n }\n\n await triggerFactory(ctx, space, trigger.spec, (data: any) => {\n return invokeFunction(client, space, trigger, data);\n });\n }\n }\n\n for (const id of deprecated) {\n const ctx = registry.get(id);\n if (ctx) {\n await ctx.dispose();\n registry.delete(id);\n }\n }\n });\n });\n }, [JSON.stringify(triggers)]);\n\n useEffect(() => {\n return () => {\n for (const ctx of registry.values()) {\n void ctx.dispose();\n }\n };\n }, []);\n\n useEffect(() => {\n void space.db.schemaRegistry\n .query()\n .then((schemas) => {\n // TODO(zan): We should solve double adding of stored schemas in the schema registry.\n state.schemas = distinctBy([...state.schemas, ...schemas], (schema) => schema.typename).sort((a, b) =>\n a.typename < b.typename ? -1 : 1,\n );\n })\n .catch(() => {});\n }, [space]);\n\n // Keen an enriched version of the schema in memory so we can share it with prompt editor.\n useEffect(() => {\n const spec = trigger.spec;\n if (spec.type === 'subscription') {\n if (spec.filter && spec.filter.length > 0) {\n const type = spec.filter[0].type;\n const foundSchema = state.schemas.find((schema) => schema.typename === type);\n if (foundSchema) {\n state.selectedSchema[trigger.id] = foundSchema;\n }\n }\n }\n // TODO(burdon): API issue.\n }, [JSON.stringify(trigger.spec), state.schemas]);\n\n useEffect(() => {\n if (!trigger.meta) {\n const extension = getFunctionMetaExtension(trigger, script);\n trigger.meta = extension?.initialValue?.();\n }\n }, [trigger.function, trigger.meta]);\n\n const handleSelectFunction = (value: string) => {\n const match = scripts.find((fn) => fn.id === value);\n if (match) {\n trigger.function = match.id;\n }\n };\n\n const handleSelectTriggerType = (triggerType: string) => {\n switch (triggerType as FunctionTriggerType) {\n case 'subscription': {\n trigger.spec = { type: 'subscription', filter: [] };\n break;\n }\n case 'timer': {\n trigger.spec = { type: 'timer', cron: '0 0 * * *' };\n break;\n }\n case 'webhook': {\n trigger.spec = { type: 'webhook', method: 'GET' };\n break;\n }\n case 'websocket': {\n // TODO(burdon): The `init` property is currently mail worker specific.\n trigger.spec = { type: 'websocket', url: '', init: { type: 'sync' } };\n break;\n }\n }\n };\n\n const TriggerMeta = getFunctionMetaExtension(trigger, script)?.component;\n\n return (\n <div className='flex flex-col py-1'>\n <table className='is-full table-fixed'>\n <tbody>\n <InputRow label={t('function select label')}>\n <Select.Root value={script?.id} onValueChange={handleSelectFunction}>\n <Select.TriggerButton classNames='w-full' placeholder={t('function select placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {scripts.map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n {script?.description?.length && (\n <InputRow>\n <div className='px-2'>\n <p className='text-sm text-description'>{script?.description?.length}</p>\n </div>\n </InputRow>\n )}\n <InputRow label={t('trigger select label')}>\n <Select.Root value={trigger.spec?.type} onValueChange={handleSelectTriggerType}>\n <Select.TriggerButton placeholder={t('trigger select placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {triggerTypes.map((trigger) => (\n <Select.Option key={trigger} value={trigger}>\n {triggerLabels[trigger]}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n </tbody>\n <tbody>\n {trigger.spec && <TriggerSpec space={space} spec={trigger.spec} />}\n <InputRow label={t('function enabled')}>\n {/* TODO(burdon): Hack to make the switch the same height as other controls. */}\n <div className='flex items-center h-8'>\n <Input.Switch checked={trigger.enabled} onCheckedChange={(checked) => (trigger.enabled = !!checked)} />\n </div>\n </InputRow>\n </tbody>\n {TriggerMeta && (\n <tbody>\n <tr>\n <td />\n <td className='py-2'>\n <div className='border-b border-separator' />\n </td>\n </tr>\n <TriggerMeta meta={trigger.meta} />\n </tbody>\n )}\n </table>\n </div>\n );\n};\n\n//\n// Trigger specs\n//\n\nconst TriggerSpecSubscription = ({ spec }: TriggerSpecProps<SubscriptionTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n if (!spec.filter) {\n return null;\n }\n\n const handleValueChange = (typename: string) => {\n spec.filter = [{ type: typename }];\n };\n\n return (\n <>\n <InputRow label={t('trigger filter')}>\n <Select.Root value={spec.filter.length > 0 ? spec.filter[0].type : undefined} onValueChange={handleValueChange}>\n <Select.TriggerButton classNames='w-full' placeholder={'Select type'} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {state.schemas.map(({ typename }: any) => (\n <Select.Option key={typename} value={typename}>\n {typename}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n </>\n );\n};\n\nconst TriggerSpecTimer = ({ spec }: TriggerSpecProps<TimerTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n return (\n <>\n <InputRow label={t('trigger cron')}>\n <Input.TextInput value={spec.cron} onChange={(event) => (spec.cron = event.target.value)} />\n </InputRow>\n </>\n );\n};\n\nconst methods = ['GET', 'POST'];\n\nconst TriggerSpecWebhook = ({ spec }: TriggerSpecProps<WebhookTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n return (\n <>\n <InputRow label={t('trigger method')}>\n <Select.Root value={spec.method} onValueChange={(value) => (spec.method = value)}>\n <Select.TriggerButton placeholder={'type'} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {methods.map((method) => (\n <Select.Option key={method} value={method}>\n {method}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n </>\n );\n};\n\nconst TriggerSpecWebsocket = ({ spec }: TriggerSpecProps<WebsocketTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const handleChangeInit: ChangeEventHandler<HTMLInputElement> = (event) => {\n try {\n spec.init = JSON.parse(event.target.value);\n } catch (err) {\n // Ignore.\n }\n };\n\n return (\n <>\n <InputRow label={t('trigger method')}>\n <Input.TextInput\n value={spec.url}\n onChange={(event) => (spec.url = event.target.value)}\n placeholder='https://'\n />\n </InputRow>\n <InputRow label='Init'>\n <Input.TextInput value={JSON.stringify(spec.init)} onChange={handleChangeInit} placeholder='Initial message.' />\n </InputRow>\n </>\n );\n};\n\n//\n// Trigger spec.\n//\n\ntype TriggerSpecProps<T = TriggerSpec> = { space: Space; spec: T };\n\nconst triggerRenderers: {\n [key in FunctionTriggerType]: FC<TriggerSpecProps<any>>;\n} = {\n subscription: TriggerSpecSubscription,\n timer: TriggerSpecTimer,\n webhook: TriggerSpecWebhook,\n websocket: TriggerSpecWebsocket,\n};\n\nconst TriggerSpec = ({ space, spec }: TriggerSpecProps) => {\n const Component = triggerRenderers[spec.type];\n return Component ? <Component space={space} spec={spec} /> : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Input } from '@dxos/react-ui';\n\nexport const InputRow = ({ label, children }: PropsWithChildren<{ label?: string }>) => (\n <Input.Root>\n <tr>\n <td className='w-[80px] px-2 text-right align-top pt-3 overflow-hidden'>\n <Input.Label classNames='truncate text-xs'>{label}</Input.Label>\n </td>\n <td className='p-1 pr-2'>{children}</td>\n </tr>\n </Input.Root>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { sleep } from '@dxos/async';\nimport { getObjectCore } from '@dxos/echo-db';\nimport type { AnyObjectData } from '@dxos/echo-schema';\nimport { type FunctionTrigger } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, LOCAL_SPACE_TAG } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { FunctionType } from '@dxos/plugin-script';\nimport { type Client, type Config } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { handleEmail } from './email';\n\nconst MAX_RETRIES = 3;\nconst RETRY_DELAY = 1_000;\n\nconst callFunction = async (funcUrl: string, trigger: any, data: any) => {\n const body = { event: 'trigger', trigger, data };\n\n let retryCount = 0;\n while (retryCount < MAX_RETRIES) {\n log.info('exec', { funcUrl, body, retryCount });\n const response = await fetch(funcUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n const data = await response.text();\n log.info('response', { status: response.status, body: data });\n if (response.status === 409) {\n retryCount++;\n await sleep(RETRY_DELAY * Math.min(retryCount, 2));\n continue;\n }\n\n return { status: response.status, data };\n }\n return { status: 500 };\n};\n\nexport const invokeFunction = async (client: Client, space: Space, trigger: FunctionTrigger, data: any) => {\n try {\n if (trigger.spec.type === 'websocket') {\n return handleEmail(space, data.data);\n }\n\n const script = await space.crud.query({ id: trigger.function }).first();\n const { objects: functions } = await space.crud.query({ __typename: FunctionType.typename }).run();\n const func = functions.find((fn) => referenceEquals(fn.source, trigger.function)) as AnyObjectData | undefined;\n const funcSlug = func?.__meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;\n if (!funcSlug) {\n log.warn('function not deployed', { scriptId: script.id, name: script.name });\n return 404;\n }\n\n const funcUrl = getFunctionUrl(client.config, funcSlug, space.id);\n const triggerData: AnyObjectData = {\n ...getObjectCore(trigger).toPlainObject(),\n // TODO: Remove when functions can query by DXN.\n promptId: trigger.meta?.prompt?.id,\n };\n // TODO: Remove when functions can add objects and easily modify collections (push, splice).\n return (await callFunction(funcUrl, triggerData, data)).status;\n } catch (err) {\n return 400;\n }\n};\n\nconst USERFUNCTIONS_META_KEY = 'dxos.org/service/function';\n\nconst getFunctionUrl = (config: Config, slug: string, spaceId?: string) => {\n const baseUrl = new URL('functions/', config.values.runtime?.services?.edge?.url);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = slug.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n spaceId && url.searchParams.set('spaceId', spaceId);\n url.protocol = 'https';\n return url.toString();\n};\n\n// TODO(dmaretskyi): Factor out.\n\ntype ReferenceLike = { '/': string } | string;\n\nconst referenceEquals = (a: ReferenceLike, b: ReferenceLike): boolean => {\n const aDXN = toDXN(a);\n const bDXN = toDXN(b);\n return aDXN.toString() === bDXN.toString();\n};\n\nconst toDXN = (ref: ReferenceLike): DXN => {\n if (typeof ref === 'string') {\n if (ref.startsWith('dxn:')) {\n return DXN.parse(ref);\n } else {\n return new DXN(DXN.kind.ECHO, [LOCAL_SPACE_TAG, ref]);\n }\n }\n\n invariant(typeof ref['/'] === 'string');\n return DXN.parse(ref['/']);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { findObjectWithForeignKey } from '@dxos/echo-db';\nimport { create, foreignKey } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\nimport { MailboxType } from '@dxos/plugin-inbox/types';\nimport { MessageType } from '@dxos/plugin-space/types';\nimport { type Space, Filter } from '@dxos/react-client/echo';\n\nexport const SOURCE_ID = 'hub.dxos.network/api/mailbox';\n\nexport const handleEmail = async (space: Space, data: any) => {\n const { messages } = data;\n\n // Create mailbox if doesn't exist.\n const { objects: mailboxes } = await space.db.query(Filter.schema(MailboxType)).run();\n const mailbox = mailboxes[0] ?? space.db.add(create(MailboxType, { messages: [] }));\n\n log.info('messages', { count: messages.length, existingMailbox: mailboxes.length > 0 });\n\n const { objects } = await space.db.query(Filter.schema(MessageType)).run();\n for (const message of messages) {\n let object = findObjectWithForeignKey(objects, { source: SOURCE_ID, id: String(message.id) });\n if (!object) {\n object = space.db.add(\n create(\n MessageType,\n {\n sender: { email: message.from },\n timestamp: new Date(message.created).toISOString(),\n text: message.body,\n properties: {\n subject: message.subject,\n to: [{ email: message.to }],\n },\n },\n {\n keys: [foreignKey(SOURCE_ID, String(message.id))],\n },\n ),\n );\n mailbox.messages?.push(object);\n }\n }\n\n return 200;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { create, getMeta as getEchoMeta } from '@dxos/echo-schema';\nimport { type FunctionTrigger } from '@dxos/functions/types';\nimport { GameType } from '@dxos/plugin-chess/types';\nimport { FileType } from '@dxos/plugin-ipfs/types';\nimport { DocumentType } from '@dxos/plugin-markdown';\nimport { type ScriptType } from '@dxos/plugin-script';\nimport { DiagramType } from '@dxos/plugin-sketch/types';\nimport { CollectionType, MessageType } from '@dxos/plugin-space';\nimport { Input } from '@dxos/react-ui';\nimport { safeParseInt } from '@dxos/util';\n\nimport { InputRow } from './Form';\nimport { chainPresets } from '../../presets';\nimport { type ChainPromptType } from '../../types';\nimport { ChainPresets } from '../Chain';\nimport { PromptEditor } from '../PromptEditor';\n\n// TODO(burdon): Factor out deps (remove from package.json). Provide via plugins.\n\ntype TriggerId = string;\n\nconst stateInitialValues = {\n schemas: [\n // TODO(burdon): Get all schema from API.\n DocumentType,\n FileType,\n GameType,\n MessageType,\n DiagramType,\n CollectionType,\n ] as any[],\n selectedSchema: {} as Record<TriggerId, any>,\n};\n\n// TODO(burdon): What is this for?\nexport const state = create<typeof stateInitialValues>(stateInitialValues);\n\n//\n// Trigger meta.\n// TODO(burdon): Custom/generated UX to provide values to functions from types/other metadata.\n//\n\ntype MetaProps<T> = { meta: T } & { triggerId?: string };\n\ntype MetaExtension<T> = {\n initialValue?: () => T;\n component: FC<MetaProps<T>>;\n};\n\nconst USERFUNCTIONS_PRESET_META_KEY = 'dxos.org/service/function-preset';\n\n/**\n * Create meta type from function.\n * @param trigger - function trigger.\n * @param script - function script.\n */\nexport const getFunctionMetaExtension = (\n trigger: FunctionTrigger,\n script?: ScriptType,\n): MetaExtension<any> | undefined => {\n if (script) {\n const meta = getEchoMeta(script).keys.find((key) => key.source === USERFUNCTIONS_PRESET_META_KEY);\n const extension = meta && metaExtensions[meta.id];\n if (extension) {\n return extension;\n }\n }\n // TODO: try to infer by spec type?\n return trigger?.function ? metaExtensions[trigger.function] : metaExtensions['dxos.org/function/gpt'];\n};\n\n//\n// Default (generic).\n// TODO(burdon): Create property editor.\n//\n\ntype DefaultMeta = {};\n\nconst DefaultMetaProps = ({ meta }: MetaProps<DefaultMeta>) => {\n return <></>;\n};\n\n//\n// Chess\n//\n\ntype ChessMeta = { level?: number };\n\nconst ChessMetaProps = ({ meta }: MetaProps<ChessMeta>) => {\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Level'>\n <Input.TextInput\n type='number'\n value={meta.level ?? 1}\n onChange={(event) => (meta.level = safeParseInt(event.target.value))}\n placeholder='Engine strength.'\n />\n </InputRow>\n </>\n );\n};\n\n//\n// Email\n//\n\ntype EmailWorkerMeta = { account?: string };\n\nconst EmailWorkerMetaProps = ({ meta }: MetaProps<EmailWorkerMeta>) => {\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Account'>\n <Input.TextInput\n value={meta.account ?? ''}\n onChange={(event) => (meta.account = event.target.value)}\n placeholder='https://'\n />\n </InputRow>\n </>\n );\n};\n\n//\n// Chain\n//\n\ntype ChainPromptMeta = { model?: string; prompt?: ChainPromptType };\n\nconst ChainPromptMetaProps = ({ meta, triggerId }: MetaProps<ChainPromptMeta>) => {\n const schema = triggerId ? state.selectedSchema[triggerId] : undefined;\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Model'>\n <Input.TextInput\n value={meta.model ?? ''}\n onChange={(event) => (meta.model = event.target.value)}\n placeholder='llama2'\n />\n </InputRow>\n <InputRow label='Presets'>\n <ChainPresets\n presets={chainPresets}\n onSelect={(preset) => {\n meta.prompt = preset.createPrompt();\n }}\n />\n </InputRow>\n {meta.prompt && (\n <InputRow label='Prompt'>\n <PromptEditor prompt={meta.prompt} schema={schema} />\n </InputRow>\n )}\n </>\n );\n};\n\n//\n// Embedding\n//\n\ntype EmbeddingMeta = { model?: string; prompt?: ChainPromptType };\n\nconst EmbeddingMetaProps = ({ meta }: MetaProps<EmbeddingMeta>) => {\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Model'>\n <Input.TextInput\n value={meta.model ?? ''}\n onChange={(event) => (meta.model = event.target.value)}\n placeholder='llama2'\n />\n </InputRow>\n </>\n );\n};\n\nconst metaExtensions: Record<string, MetaExtension<any>> = {\n __DEFAULT__: {\n initialValue: () => ({}),\n component: DefaultMetaProps,\n } satisfies MetaExtension<DefaultMeta>,\n\n 'dxos.org/function/chess': {\n initialValue: () => ({ level: 2 }),\n component: ChessMetaProps,\n } satisfies MetaExtension<ChessMeta>,\n\n 'dxos.org/function/email-worker': {\n initialValue: () => ({ account: 'hello@dxos.network' }),\n component: EmailWorkerMetaProps,\n } satisfies MetaExtension<EmailWorkerMeta>,\n\n 'dxos.org/function/gpt': {\n initialValue: () => ({ model: 'llama2' }),\n component: ChainPromptMetaProps,\n } satisfies MetaExtension<ChainPromptMeta>,\n\n 'dxos.org/function/embedding': {\n initialValue: () => ({ model: 'llama2' }),\n component: EmbeddingMetaProps,\n } satisfies MetaExtension<EmbeddingMeta>,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AUTOMATION_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [AUTOMATION_PLUGIN]: {\n 'plugin name': 'Automation',\n 'object placeholder': 'New prompt',\n 'create object label': 'Create prompt',\n 'create trigger label': 'Create trigger',\n 'create stack section label': 'Create prompt',\n 'command placeholder': 'Enter slash command...',\n 'template placeholder': 'Enter template...',\n 'value placeholder': 'Enter value...',\n 'select preset template placeholder': 'Select preset',\n 'open automation panel label': 'Show Automations',\n\n 'function select label': 'Function',\n 'function select placeholder': 'Select function',\n 'function enabled': 'Enabled',\n 'trigger select label': 'Trigger',\n 'trigger select placeholder': 'Trigger type',\n\n 'trigger type subscription': 'Subscription',\n 'trigger type timer': 'Timer',\n 'trigger type webhook': 'Webhook',\n 'trigger type websocket': 'Websocket',\n\n 'trigger filter': 'Filter',\n 'trigger cron': 'Cron',\n 'trigger method': 'Method',\n 'trigger endpoint': 'Endpoint',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AutomationPlugin } from './AutomationPlugin';\n\nexport default AutomationPlugin;\n\nexport * from './AutomationPlugin';\nexport * from './components';\nexport * from './presets';\nexport * from './types';\n"],
5
- "mappings": "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",
6
- "names": ["React", "parseMetadataResolverPlugin", "resolvePlugin", "FunctionDef", "FunctionTrigger", "invariant", "parseClientPlugin", "createExtension", "toSignal", "getTypename", "loadObjectReferences", "parseId", "lazy", "React", "Button", "Icon", "Toolbar", "AutomationPanel", "handleCreate", "div", "className", "Toolbar", "Root", "classNames", "Button", "onClick", "Icon", "icon", "React", "getSpace", "Select", "useTranslation", "nonNullable", "create", "str", "text", "filter", "value", "undefined", "flat", "join", "chainPresets", "id", "title", "createPrompt", "create", "ChainPromptType", "command", "template", "inputs", "type", "ChainInputType", "VALUE", "name", "PASS_THROUGH", "CONTEXT", "SCHEMA", "RETRIEVER", "RESOLVER", "Chain", "chain", "space", "getSpace", "handleSelectPreset", "preset", "name", "title", "prompts", "filter", "nonNullable", "forEach", "prompt", "db", "remove", "createPrompt", "React", "div", "className", "map", "i", "PromptEditor", "key", "ChainPresets", "presets", "chainPresets", "onSelect", "t", "useTranslation", "AUTOMATION_PLUGIN", "Select", "Root", "onValueChange", "value", "find", "id", "TriggerButton", "classNames", "placeholder", "Portal", "Content", "Viewport", "Option", "React", "useEffect", "useMemo", "useState", "Mutex", "Context", "createSubscriptionTrigger", "createWebsocketTrigger", "FunctionTrigger", "log", "ScriptType", "useClient", "Filter", "useQuery", "Input", "Select", "useTranslation", "distinctBy", "React", "Input", "InputRow", "label", "children", "React", "Input", "Root", "tr", "td", "className", "Label", "classNames", "sleep", "getObjectCore", "invariant", "DXN", "LOCAL_SPACE_TAG", "log", "FunctionType", "findObjectWithForeignKey", "create", "foreignKey", "log", "MailboxType", "MessageType", "Filter", "SOURCE_ID", "handleEmail", "space", "data", "messages", "objects", "mailboxes", "db", "query", "schema", "run", "mailbox", "add", "info", "count", "length", "existingMailbox", "message", "object", "source", "id", "String", "sender", "email", "from", "timestamp", "Date", "created", "toISOString", "text", "body", "properties", "subject", "to", "keys", "push", "MAX_RETRIES", "RETRY_DELAY", "callFunction", "funcUrl", "trigger", "data", "body", "event", "retryCount", "log", "info", "response", "fetch", "method", "headers", "JSON", "stringify", "text", "status", "sleep", "Math", "min", "invokeFunction", "client", "space", "spec", "type", "handleEmail", "script", "crud", "query", "id", "function", "first", "objects", "functions", "__typename", "FunctionType", "typename", "run", "func", "find", "fn", "referenceEquals", "source", "funcSlug", "__meta", "keys", "key", "USERFUNCTIONS_META_KEY", "warn", "scriptId", "name", "getFunctionUrl", "config", "triggerData", "getObjectCore", "toPlainObject", "promptId", "meta", "prompt", "err", "slug", "spaceId", "baseUrl", "URL", "values", "runtime", "services", "edge", "url", "relativeUrl", "replace", "toString", "searchParams", "set", "protocol", "a", "b", "aDXN", "toDXN", "bDXN", "ref", "startsWith", "DXN", "parse", "kind", "ECHO", "LOCAL_SPACE_TAG", "invariant", "React", "create", "getMeta", "getEchoMeta", "GameType", "FileType", "DocumentType", "DiagramType", "CollectionType", "MessageType", "Input", "safeParseInt", "stateInitialValues", "schemas", "DocumentType", "FileType", "GameType", "MessageType", "DiagramType", "CollectionType", "selectedSchema", "state", "create", "USERFUNCTIONS_PRESET_META_KEY", "getFunctionMetaExtension", "trigger", "script", "meta", "getEchoMeta", "keys", "find", "key", "source", "extension", "metaExtensions", "id", "function", "DefaultMetaProps", "React", "ChessMetaProps", "InputRow", "label", "Input", "TextInput", "type", "value", "level", "onChange", "event", "safeParseInt", "target", "placeholder", "EmailWorkerMetaProps", "account", "ChainPromptMetaProps", "triggerId", "schema", "undefined", "model", "ChainPresets", "presets", "chainPresets", "onSelect", "preset", "prompt", "createPrompt", "PromptEditor", "EmbeddingMetaProps", "__DEFAULT__", "initialValue", "component", "triggerTypes", "registerTriggersMutex", "Mutex", "TriggerEditor", "space", "trigger", "t", "useTranslation", "AUTOMATION_PLUGIN", "client", "useClient", "scripts", "useQuery", "Filter", "schema", "ScriptType", "script", "useMemo", "find", "id", "function", "triggerLabels", "subscription", "timer", "webhook", "websocket", "registry", "useState", "Map", "triggers", "FunctionTrigger", "useEffect", "setTimeout", "executeSynchronized", "deprecated", "Set", "Array", "from", "keys", "log", "info", "all", "map", "enabled", "filter", "has", "delete", "ctx", "Context", "set", "triggerSpec", "spec", "triggerFactory", "type", "createSubscriptionTrigger", "createWebsocketTrigger", "data", "invokeFunction", "get", "dispose", "JSON", "stringify", "values", "db", "schemaRegistry", "query", "then", "schemas", "state", "distinctBy", "typename", "sort", "a", "b", "catch", "length", "foundSchema", "selectedSchema", "meta", "extension", "getFunctionMetaExtension", "initialValue", "handleSelectFunction", "value", "match", "fn", "handleSelectTriggerType", "triggerType", "cron", "method", "url", "init", "TriggerMeta", "component", "React", "div", "className", "table", "tbody", "InputRow", "label", "Select", "Root", "onValueChange", "TriggerButton", "classNames", "placeholder", "Portal", "Content", "Viewport", "name", "Option", "key", "description", "p", "TriggerSpec", "Input", "Switch", "checked", "onCheckedChange", "tr", "td", "TriggerSpecSubscription", "handleValueChange", "undefined", "TriggerSpecTimer", "TextInput", "onChange", "event", "target", "methods", "TriggerSpecWebhook", "TriggerSpecWebsocket", "handleChangeInit", "parse", "err", "triggerRenderers", "Component", "PromptContainer", "lazy", "AUTOMATION_PLUGIN", "AutomationPlugin", "meta", "provides", "metadata", "records", "ChainType", "typename", "placeholder", "ns", "AUTOMATION_PLUGIN", "icon", "loadReferences", "chain", "loadObjectReferences", "prompts", "translations", "echo", "schema", "ChainPromptType", "FunctionDef", "FunctionTrigger", "complementary", "panels", "id", "label", "graph", "builder", "plugins", "clientPlugin", "resolvePlugin", "parseClientPlugin", "metadataPlugin", "parseMetadataResolverPlugin", "resolve", "resolver", "client", "invariant", "createExtension", "endsWith", "type", "subjectId", "split", "spaceId", "objectId", "parseId", "space", "spaces", "get", "find", "properties", "name", "data", "showResolvedThreads", "object", "toSignal", "onChange", "timeout", "setTimeout", "db", "loadObjectById", "clearTimeout", "getObjectById", "getTypename", "surface", "component", "role", "React", "AutomationPanel", "intent", "action", "AutomationAction", "CREATE", "AutomationPlugin"]
3
+ "sources": ["../../../src/AutomationPlugin.tsx", "../../../src/components/index.ts", "../../../src/components/AutomationPanel.tsx", "../../../src/components/Chain.tsx", "../../../src/presets.ts", "../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/Form.tsx", "../../../src/components/TriggerEditor/meta.tsx", "../../../src/hooks/useLocalTriggerManager.ts", "../../../src/hooks/invocation-handler.ts", "../../../src/hooks/email.ts", "../../../src/translations.ts", "../../../src/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type PluginDefinition, parseMetadataResolverPlugin, resolvePlugin } from '@dxos/app-framework';\nimport { FunctionDef, FunctionTrigger } from '@dxos/functions/types';\nimport { invariant } from '@dxos/invariant';\nimport { parseClientPlugin } from '@dxos/plugin-client';\nimport { createExtension, toSignal } from '@dxos/plugin-graph';\nimport { getTypename, loadObjectReferences, parseId } from '@dxos/react-client/echo';\n\nimport { AutomationPanel } from './components';\nimport meta, { AUTOMATION_PLUGIN } from './meta';\nimport translations from './translations';\nimport { AutomationAction, type AutomationPluginProvides, ChainPromptType, ChainType } from './types';\n\nexport const AutomationPlugin = (): PluginDefinition<AutomationPluginProvides> => {\n return {\n meta,\n provides: {\n metadata: {\n records: {\n [ChainType.typename]: {\n placeholder: ['object placeholder', { ns: AUTOMATION_PLUGIN }],\n icon: 'ph--magic-wand--regular',\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (chain: ChainType) => loadObjectReferences(chain, (chain) => chain.prompts),\n },\n },\n },\n translations,\n echo: {\n schema: [ChainType, ChainPromptType, FunctionDef, FunctionTrigger],\n },\n complementary: {\n panels: [\n {\n id: 'automation',\n label: ['open automation panel label', { ns: AUTOMATION_PLUGIN }],\n icon: 'ph--flow-arrow--regular',\n },\n ],\n },\n graph: {\n builder: (plugins) => {\n const clientPlugin = resolvePlugin(plugins, parseClientPlugin);\n const metadataPlugin = resolvePlugin(plugins, parseMetadataResolverPlugin);\n const resolve = metadataPlugin?.provides.metadata.resolver;\n const client = clientPlugin?.provides.client;\n invariant(resolve);\n invariant(client);\n\n return [\n // Create nodes for object settings.\n createExtension({\n id: `${AUTOMATION_PLUGIN}/automation-for-subject`,\n resolver: ({ id }) => {\n if (!id.endsWith('~automation')) {\n return;\n }\n\n const type = 'orphan-settings-for-subject';\n const icon = 'ph--flow-arrow--regular';\n\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const space = client.spaces.get().find((space) => space.id === spaceId);\n if (!objectId) {\n // TODO(burdon): Ref SPACE_PLUGIN ns.\n const label = space\n ? space.properties.name || ['unnamed space label', { ns: AUTOMATION_PLUGIN }]\n : ['unnamed object settings label', { ns: AUTOMATION_PLUGIN }];\n\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n showResolvedThreads: false,\n object: null,\n space,\n },\n };\n }\n\n const object = toSignal(\n (onChange) => {\n const timeout = setTimeout(async () => {\n await space?.db.loadObjectById(objectId);\n onChange();\n });\n\n return () => clearTimeout(timeout);\n },\n () => space?.db.getObjectById(objectId),\n subjectId,\n );\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolve(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object settings label', { ns: AUTOMATION_PLUGIN }];\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n object,\n },\n };\n },\n }),\n ];\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (role) {\n // case 'article':\n // return data.object instanceof ChainType ? <ChainArticle chain={data.object} /> : null;\n\n case 'complementary--automation':\n return <AutomationPanel />;\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case AutomationAction.CREATE: {\n return {\n // data: create(ChainType, { prompts: [] }),\n // data: create(FunctionTrigger, { function: '', spec: { type: 'timer', cron: '' } }),\n };\n }\n }\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const PromptContainer = lazy(() => import('./PromptContainer'));\n\nexport * from './AutomationPanel';\nexport * from './Chain';\nexport * from './PromptEditor';\nexport * from './TriggerEditor';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Button, Icon, Toolbar } from '@dxos/react-ui';\n\n// TODO(burdon): Form components.\n\nexport const AutomationPanel = () => {\n const handleCreate = () => {};\n\n return (\n <div className='flex flex-col'>\n <Toolbar.Root classNames='p-2'>\n <Button onClick={handleCreate}>\n <Icon icon='ph--plus--regular' />\n </Button>\n </Toolbar.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Select, useTranslation } from '@dxos/react-ui';\nimport { nonNullable } from '@dxos/util';\n\nimport { PromptEditor } from './PromptEditor';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { chainPresets, type Preset } from '../presets';\nimport { type ChainType } from '../types';\n\nexport type ChainProps = {\n chain: ChainType;\n};\n\nexport const Chain = ({ chain }: ChainProps) => {\n const space = getSpace(chain);\n if (!space) {\n return null;\n }\n\n const handleSelectPreset = (preset: Preset) => {\n chain.name = preset.title;\n // TODO(burdon): API issue.\n chain.prompts?.filter(nonNullable).forEach((prompt) => space.db.remove(prompt));\n chain.prompts = [preset.createPrompt()];\n };\n\n return (\n <div className='flex flex-col my-2 gap-4'>\n {chain.prompts?.filter(nonNullable).map((prompt, i) => <PromptEditor key={i} prompt={prompt} />)}\n <div className='p-2'>\n <ChainPresets presets={chainPresets} onSelect={handleSelectPreset} />\n </div>\n </div>\n );\n};\n\nexport const ChainPresets: FC<{ presets: Preset[]; onSelect: (preset: Preset) => void }> = ({ presets, onSelect }) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n return (\n <Select.Root\n onValueChange={(value) => {\n onSelect(presets.find(({ id }) => id === value)!);\n }}\n >\n <Select.TriggerButton classNames='w-full' placeholder={t('select preset template placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {presets.map(({ id, title }) => (\n <Select.Option key={id} value={id}>\n {title}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { create } from '@dxos/echo-schema';\n\nimport { ChainInputType, ChainPromptType } from './types';\n\nexport const str = (...text: (string | undefined | boolean)[]): string =>\n text\n .filter((value) => value !== undefined && value !== false)\n .flat()\n .join('\\n');\n\nexport type Preset = {\n id: string;\n title: string;\n createPrompt: () => ChainPromptType;\n};\n\nexport const chainPresets: Preset[] = [\n {\n id: 'dxos.org/prompt/translate',\n title: 'Translate',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'say',\n template: str(\n // prettier-ignore\n 'Translate the following into {language}:',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.VALUE,\n name: 'language',\n value: 'japanese',\n },\n {\n type: ChainInputType.PASS_THROUGH,\n name: 'input',\n },\n // TODO(burdon): Message.\n // {\n // type: ChainInputType.CONTEXT,\n // name: 'input',\n // value: 'object.text',\n // },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/chess',\n title: 'Chess',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'hint',\n template: str(\n // prettier-ignore\n 'You are a machine that is an expert chess player.',\n '',\n 'The move history of the current game is: {history}',\n '',\n 'Suggest the next move and very briefly explain your strategy in a couple of sentences.',\n ),\n inputs: [\n {\n type: ChainInputType.CONTEXT,\n name: 'history',\n value: 'object.pgn',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/mermaid',\n title: 'Mermaid',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'draw',\n template: str(\n // prettier-ignore\n 'Create a simplified mermaid graph representing the text below.',\n 'Do not explain anything.',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.PASS_THROUGH,\n name: 'input',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/list',\n title: 'List',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'list',\n template: str(\n // prettier-ignore\n 'You are a machine that only replies with valid, iterable RFC8259 compliant JSON in your responses.',\n 'Your entire response should be a single array of JSON objects.',\n '',\n 'Your entire response should be a map where the key is the type and the value is a single array of JSON objects conforming to the following types:',\n '',\n '{schema}',\n '',\n '---',\n '',\n '{question}',\n ),\n inputs: [\n {\n type: ChainInputType.SCHEMA,\n name: 'schema',\n value: 'example.com/type/project',\n },\n {\n type: ChainInputType.PASS_THROUGH,\n name: 'question',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/base',\n title: 'RAG',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'rag',\n template: str(\n // prettier-ignore\n \"Very briefly answer the question based only on the following context and say if you don't know the answer.\",\n // 'answer the question using the following context as well as your training data:',\n '',\n '{context}',\n '',\n '---',\n '',\n 'question: {question}',\n ),\n inputs: [\n {\n type: ChainInputType.RETRIEVER,\n name: 'context',\n },\n {\n type: ChainInputType.CONTEXT,\n name: 'question',\n value: 'object.text',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/lookup',\n title: 'Lookup',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'lookup',\n template: str(\n // prettier-ignore\n 'Lookup and very briefly summarize the following topic in one or two sentences:',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.CONTEXT,\n name: 'input',\n value: 'text',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/extract',\n title: 'Extract',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'extract',\n template: str(\n // prettier-ignore\n 'List all people and companies mentioned in the text below.',\n '',\n 'You are a machine that only replies with valid, iterable RFC8259 compliant JSON in your responses.',\n 'Your entire response should be a map where the key is the type and the value is a single array of JSON objects conforming to the following types:',\n '',\n '{contact}',\n '{company}',\n '',\n '---',\n '',\n '{input}',\n ),\n inputs: [\n {\n type: ChainInputType.SCHEMA,\n name: 'contact',\n value: 'example.com/type/contact',\n },\n {\n type: ChainInputType.SCHEMA,\n name: 'company',\n value: 'example.com/type/organization',\n },\n {\n type: ChainInputType.CONTEXT,\n name: 'input',\n value: 'text',\n },\n ],\n }),\n },\n {\n id: 'dxos.org/prompt/discord',\n title: 'Summarize',\n createPrompt: () =>\n create(ChainPromptType, {\n command: 'summarize',\n template: str(\n // prettier-ignore\n 'Summarize what the team is working on and format it as a markdown table without any explanation.',\n '',\n '---',\n '',\n '{context}',\n ),\n inputs: [\n {\n type: ChainInputType.RESOLVER,\n name: 'context',\n value: 'discord.messages.recent',\n },\n ],\n }),\n },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ChangeEventHandler, type FC, useEffect, useMemo } from 'react';\n\nimport {\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n type SubscriptionTrigger,\n type TimerTrigger,\n type TriggerType,\n type TriggerKind,\n type WebhookTrigger,\n type WebsocketTrigger,\n} from '@dxos/functions/types';\nimport { invariant } from '@dxos/invariant';\nimport { ScriptType } from '@dxos/plugin-script/types';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { Form, SelectInput } from '@dxos/react-ui-form';\nimport { distinctBy } from '@dxos/util';\n\nimport { InputRow } from './Form';\nimport { getFunctionMetaExtension, state } from './meta';\nimport { useLocalTriggerManager } from '../../hooks';\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nconst triggerTypes: TriggerKind[] = ['timer', 'webhook', 'websocket', 'subscription'];\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTrigger;\n};\n\nexport const TriggerEditor = ({ space, trigger }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const scripts = useQuery(space, Filter.schema(ScriptType));\n const script = useMemo(() => scripts.find((script) => script.id === trigger.function), [trigger.function, scripts]);\n useLocalTriggerManager(space);\n\n const triggerLabels: Record<TriggerKind, string> = {\n subscription: t('trigger type subscription'),\n timer: t('trigger type timer'),\n webhook: t('trigger type webhook'),\n websocket: t('trigger type websocket'),\n };\n\n useEffect(() => {\n void space.db.schemaRegistry\n .query()\n .then((schemas) => {\n // TODO(zan): We should solve double adding of stored schemas in the schema registry.\n state.schemas = distinctBy([...state.schemas, ...schemas], (schema) => schema.typename).sort((a, b) =>\n a.typename < b.typename ? -1 : 1,\n );\n })\n .catch(() => {});\n }, [space]);\n\n // Keen an enriched version of the schema in memory so we can share it with prompt editor.\n useEffect(() => {\n const spec = trigger.spec;\n invariant(spec);\n if (spec.type === 'subscription') {\n if (spec.filter) {\n const type = spec.filter.type;\n const foundSchema = state.schemas.find((schema) => schema.typename === type);\n if (foundSchema) {\n state.selectedSchema[trigger.id] = foundSchema;\n }\n }\n }\n // TODO(burdon): API issue.\n }, [JSON.stringify(trigger.spec), state.schemas]);\n\n useEffect(() => {\n if (!trigger.meta) {\n const extension = getFunctionMetaExtension(trigger, script);\n trigger.meta = extension?.initialValue?.();\n }\n }, [trigger.function, trigger.meta]);\n\n const handleSelectFunction = (value: string) => {\n const match = scripts.find((fn) => fn.id === value);\n if (match) {\n trigger.function = match.id;\n }\n };\n\n const handleSelectTriggerType = (triggerType: string) => {\n switch (triggerType as TriggerKind) {\n case 'subscription': {\n trigger.spec = { type: 'subscription', filter: {} };\n break;\n }\n case 'timer': {\n trigger.spec = { type: 'timer', cron: '0 0 * * *' };\n break;\n }\n case 'webhook': {\n trigger.spec = { type: 'webhook', method: 'GET' };\n break;\n }\n case 'websocket': {\n // TODO(burdon): The `init` property is currently mail worker specific.\n trigger.spec = { type: 'websocket', url: '', init: { type: 'sync' } };\n break;\n }\n }\n };\n\n const TriggerMeta = getFunctionMetaExtension(trigger, script)?.component;\n\n const test = true;\n if (test) {\n const object: FunctionTriggerType = {\n spec: {\n // type: 'timer',\n type: 'subscription',\n // cron: '0 0 * * *'\n filter: { type: 'dxos.org/type/Event' },\n },\n };\n\n return (\n <Form<FunctionTriggerType>\n schema={FunctionTriggerSchema}\n values={object}\n filter={(props) => props.filter((p) => p.name !== 'meta')}\n Custom={{\n ['function' satisfies keyof FunctionTriggerType]: (props) => (\n <SelectInput<FunctionTriggerType>\n {...props}\n // TODO(burdon): Query for functions.\n options={[].map((value) => ({\n value,\n label: value,\n }))}\n />\n ),\n ['spec.type' as const]: (props) => (\n <SelectInput<FunctionTriggerType>\n {...props}\n options={['timer', 'subscription'].map((value) => ({\n value,\n label: value,\n }))}\n />\n ),\n }}\n />\n );\n }\n\n return (\n <div className='flex flex-col py-1'>\n <table className='is-full table-fixed'>\n <tbody>\n <InputRow label={t('function select label')}>\n <Select.Root value={script?.id} onValueChange={handleSelectFunction}>\n <Select.TriggerButton classNames='w-full' placeholder={t('function select placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {scripts.map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n {script?.description?.length && (\n <InputRow>\n <div className='px-2'>\n <p className='text-sm text-description'>{script?.description?.length}</p>\n </div>\n </InputRow>\n )}\n <InputRow label={t('trigger select label')}>\n <Select.Root value={trigger.spec?.type} onValueChange={handleSelectTriggerType}>\n <Select.TriggerButton placeholder={t('trigger select placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {triggerTypes.map((trigger) => (\n <Select.Option key={trigger} value={trigger}>\n {triggerLabels[trigger]}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n </tbody>\n <tbody>\n {trigger.spec && <TriggerType space={space} spec={trigger.spec} />}\n <InputRow label={t('function enabled')}>\n {/* TODO(burdon): Hack to make the switch the same height as other controls. */}\n <div className='flex items-center h-8'>\n <Input.Switch checked={trigger.enabled} onCheckedChange={(checked) => (trigger.enabled = !!checked)} />\n </div>\n </InputRow>\n </tbody>\n {TriggerMeta && trigger.meta && (\n <tbody>\n <tr>\n <td />\n <td className='py-2'>\n <div className='border-b border-separator' />\n </td>\n </tr>\n <TriggerMeta meta={trigger.meta} />\n </tbody>\n )}\n </table>\n </div>\n );\n};\n\n//\n// Trigger specs\n//\n\nconst TriggerSpecSubscription = ({ spec }: TriggerSpecProps<SubscriptionTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n if (!spec.filter) {\n return null;\n }\n\n const handleValueChange = (typename: string) => {\n spec.filter = { type: typename };\n };\n\n return (\n <>\n <InputRow label={t('trigger filter')}>\n <Select.Root value={spec.filter?.type} onValueChange={handleValueChange}>\n <Select.TriggerButton classNames='w-full' placeholder={'Select type'} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {state.schemas.map(({ typename }: any) => (\n <Select.Option key={typename} value={typename}>\n {typename}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n </>\n );\n};\n\nconst TriggerSpecTimer = ({ spec }: TriggerSpecProps<TimerTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n return (\n <>\n <InputRow label={t('trigger cron')}>\n <Input.TextInput value={spec.cron} onChange={(event) => (spec.cron = event.target.value)} />\n </InputRow>\n </>\n );\n};\n\nconst methods = ['GET', 'POST'];\n\nconst TriggerSpecWebhook = ({ spec }: TriggerSpecProps<WebhookTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n return (\n <>\n <InputRow label={t('trigger method')}>\n <Select.Root value={spec.method} onValueChange={(value) => (spec.method = value)}>\n <Select.TriggerButton placeholder={'type'} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {methods.map((method) => (\n <Select.Option key={method} value={method}>\n {method}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </InputRow>\n </>\n );\n};\n\nconst TriggerSpecWebsocket = ({ spec }: TriggerSpecProps<WebsocketTrigger>) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const handleChangeInit: ChangeEventHandler<HTMLInputElement> = (event) => {\n try {\n spec.init = JSON.parse(event.target.value);\n } catch (err) {\n // Ignore.\n }\n };\n\n return (\n <>\n <InputRow label={t('trigger method')}>\n <Input.TextInput\n value={spec.url}\n onChange={(event) => (spec.url = event.target.value)}\n placeholder='https://'\n />\n </InputRow>\n <InputRow label='Init'>\n <Input.TextInput value={JSON.stringify(spec.init)} onChange={handleChangeInit} placeholder='Initial message.' />\n </InputRow>\n </>\n );\n};\n\n//\n// Trigger spec.\n//\n\ntype TriggerSpecProps<T = TriggerType> = { space: Space; spec: T };\n\nconst triggerRenderers: {\n [key in TriggerKind]: FC<TriggerSpecProps<any>>;\n} = {\n subscription: TriggerSpecSubscription,\n timer: TriggerSpecTimer,\n webhook: TriggerSpecWebhook,\n websocket: TriggerSpecWebsocket,\n};\n\nconst TriggerType = ({ space, spec }: TriggerSpecProps) => {\n const Component = triggerRenderers[spec.type];\n return Component ? <Component space={space} spec={spec} /> : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Input } from '@dxos/react-ui';\n\nexport const InputRow = ({ label, children }: PropsWithChildren<{ label?: string }>) => (\n <Input.Root>\n <tr>\n <td className='w-[80px] px-2 text-right align-top pt-3 overflow-hidden'>\n <Input.Label classNames='truncate text-xs'>{label}</Input.Label>\n </td>\n <td className='p-1 pr-2'>{children}</td>\n </tr>\n </Input.Root>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { create, getMeta as getEchoMeta } from '@dxos/echo-schema';\nimport { type FunctionTrigger } from '@dxos/functions/types';\nimport { GameType } from '@dxos/plugin-chess/types';\nimport { FileType } from '@dxos/plugin-ipfs/types';\nimport { DocumentType } from '@dxos/plugin-markdown';\nimport { type ScriptType } from '@dxos/plugin-script';\nimport { DiagramType } from '@dxos/plugin-sketch/types';\nimport { CollectionType, MessageType } from '@dxos/plugin-space';\nimport { Input } from '@dxos/react-ui';\nimport { safeParseInt } from '@dxos/util';\n\nimport { InputRow } from './Form';\nimport { chainPresets } from '../../presets';\nimport { type ChainPromptType } from '../../types';\nimport { ChainPresets } from '../Chain';\nimport { PromptEditor } from '../PromptEditor';\n\n// TODO(burdon): Factor out deps (remove from package.json). Provide via plugins.\n\ntype TriggerId = string;\n\nconst stateInitialValues = {\n schemas: [\n // TODO(burdon): Get all schema from API.\n DocumentType,\n FileType,\n GameType,\n MessageType,\n DiagramType,\n CollectionType,\n ] as any[],\n selectedSchema: {} as Record<TriggerId, any>,\n};\n\n// TODO(burdon): What is this for?\nexport const state = create<typeof stateInitialValues>(stateInitialValues);\n\n//\n// Trigger meta.\n// TODO(burdon): Custom/generated UX to provide values to functions from types/other metadata.\n//\n\ntype MetaProps<T> = { meta: T } & { triggerId?: string };\n\ntype MetaExtension<T> = {\n initialValue?: () => T;\n component: FC<MetaProps<T>>;\n};\n\nconst USERFUNCTIONS_PRESET_META_KEY = 'dxos.org/service/function-preset';\n\n/**\n * Create meta type from function.\n * @param trigger - function trigger.\n * @param script - function script.\n */\nexport const getFunctionMetaExtension = (\n trigger: FunctionTrigger,\n script?: ScriptType,\n): MetaExtension<any> | undefined => {\n if (script) {\n const meta = getEchoMeta(script).keys.find((key) => key.source === USERFUNCTIONS_PRESET_META_KEY);\n const extension = meta && metaExtensions[meta.id];\n if (extension) {\n return extension;\n }\n }\n\n // TODO: try to infer by spec type?\n return trigger?.function ? metaExtensions[trigger.function] : metaExtensions['dxos.org/function/gpt'];\n};\n\n//\n// Default (generic).\n// TODO(burdon): Create property editor.\n//\n\ntype DefaultMeta = {};\n\nconst DefaultMetaProps = ({ meta }: MetaProps<DefaultMeta>) => {\n return <></>;\n};\n\n//\n// Chess\n//\n\ntype ChessMeta = { level?: number };\n\nconst ChessMetaProps = ({ meta }: MetaProps<ChessMeta>) => {\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Level'>\n <Input.TextInput\n type='number'\n value={meta.level ?? 1}\n onChange={(event) => (meta.level = safeParseInt(event.target.value))}\n placeholder='Engine strength.'\n />\n </InputRow>\n </>\n );\n};\n\n//\n// Email\n//\n\ntype EmailWorkerMeta = { account?: string };\n\nconst EmailWorkerMetaProps = ({ meta }: MetaProps<EmailWorkerMeta>) => {\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Account'>\n <Input.TextInput\n value={meta.account ?? ''}\n onChange={(event) => (meta.account = event.target.value)}\n placeholder='https://'\n />\n </InputRow>\n </>\n );\n};\n\n//\n// Chain\n//\n\ntype ChainPromptMeta = { model?: string; prompt?: ChainPromptType };\n\nconst ChainPromptMetaProps = ({ meta, triggerId }: MetaProps<ChainPromptMeta>) => {\n const schema = triggerId ? state.selectedSchema[triggerId] : undefined;\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Model'>\n <Input.TextInput\n value={meta.model ?? ''}\n onChange={(event) => (meta.model = event.target.value)}\n placeholder='llama2'\n />\n </InputRow>\n <InputRow label='Presets'>\n <ChainPresets\n presets={chainPresets}\n onSelect={(preset) => {\n meta.prompt = preset.createPrompt();\n }}\n />\n </InputRow>\n {meta.prompt && (\n <InputRow label='Prompt'>\n <PromptEditor prompt={meta.prompt} schema={schema} />\n </InputRow>\n )}\n </>\n );\n};\n\n//\n// Embedding\n//\n\ntype EmbeddingMeta = { model?: string; prompt?: ChainPromptType };\n\nconst EmbeddingMetaProps = ({ meta }: MetaProps<EmbeddingMeta>) => {\n if (!meta) {\n return null;\n }\n\n return (\n <>\n <InputRow label='Model'>\n <Input.TextInput\n value={meta.model ?? ''}\n onChange={(event) => (meta.model = event.target.value)}\n placeholder='llama2'\n />\n </InputRow>\n </>\n );\n};\n\nconst metaExtensions: Record<string, MetaExtension<any>> = {\n __DEFAULT__: {\n initialValue: () => ({}),\n component: DefaultMetaProps,\n } satisfies MetaExtension<DefaultMeta>,\n\n 'dxos.org/function/chess': {\n initialValue: () => ({ level: 2 }),\n component: ChessMetaProps,\n } satisfies MetaExtension<ChessMeta>,\n\n 'dxos.org/function/email-worker': {\n initialValue: () => ({ account: 'hello@dxos.network' }),\n component: EmailWorkerMetaProps,\n } satisfies MetaExtension<EmailWorkerMeta>,\n\n 'dxos.org/function/gpt': {\n initialValue: () => ({ model: 'llama2' }),\n component: ChainPromptMetaProps,\n } satisfies MetaExtension<ChainPromptMeta>,\n\n 'dxos.org/function/embedding': {\n initialValue: () => ({ model: 'llama2' }),\n component: EmbeddingMetaProps,\n } satisfies MetaExtension<EmbeddingMeta>,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { Mutex } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { createSubscriptionTrigger, createWebsocketTrigger, type TriggerFactory } from '@dxos/functions';\nimport { FunctionTrigger } from '@dxos/functions/types';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\n\nimport { invokeFunction } from './invocation-handler';\n\nconst registerTriggersMutex = new Mutex();\n\nexport const useLocalTriggerManager = (space: Space) => {\n const client = useClient();\n\n // TODO(burdon): Factor out, creating context for plugin (runs outside of component).\n const [registry] = useState(new Map<string, Context>());\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n useEffect(() => {\n setTimeout(async () => {\n // Mark-and-sweep removing disabled triggers.\n await registerTriggersMutex.executeSynchronized(async () => {\n const deprecated = new Set(Array.from(registry.keys()));\n log('triggers', {\n deprecated,\n all: triggers.map((t) => t.id),\n enabled: triggers.filter((t) => t.enabled).map((t) => t.id),\n });\n\n for (const trigger of triggers) {\n if (trigger.enabled) {\n if (registry.has(trigger.id)) {\n deprecated.delete(trigger.id);\n continue;\n }\n log.info('activating trigger', trigger.id);\n\n const ctx = new Context();\n registry.set(trigger.id, ctx);\n const triggerSpec = trigger.spec;\n invariant(triggerSpec);\n\n let triggerFactory: TriggerFactory<any>;\n if (triggerSpec.type === 'subscription') {\n triggerFactory = createSubscriptionTrigger;\n } else if (triggerSpec.type === 'websocket') {\n triggerFactory = createWebsocketTrigger;\n } else {\n log.info('unsupported trigger', { type: triggerSpec.type });\n continue;\n }\n\n await triggerFactory(ctx, space, trigger.spec, (data: any) => {\n return invokeFunction(client, space, trigger, data);\n });\n }\n }\n\n for (const id of deprecated) {\n const ctx = registry.get(id);\n if (ctx) {\n await ctx.dispose();\n registry.delete(id);\n }\n }\n });\n });\n }, [JSON.stringify(triggers)]);\n\n useEffect(() => {\n return () => {\n for (const ctx of registry.values()) {\n void ctx.dispose();\n }\n };\n }, []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { sleep } from '@dxos/async';\nimport { getObjectCore } from '@dxos/echo-db';\nimport { type AnyObjectData } from '@dxos/echo-schema';\nimport { type FunctionTrigger } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, LOCAL_SPACE_TAG } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { FunctionType } from '@dxos/plugin-script';\nimport { type Client, type Config } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { handleEmail } from './email';\n\nconst MAX_RETRIES = 3;\nconst RETRY_DELAY = 1_000;\n\nconst callFunction = async (funcUrl: string, trigger: any, data: any) => {\n const body = { event: 'trigger', trigger, data };\n\n let retryCount = 0;\n while (retryCount < MAX_RETRIES) {\n log.info('exec', { funcUrl, body, retryCount });\n const response = await fetch(funcUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n const data = await response.text();\n log.info('response', { status: response.status, body: data });\n if (response.status === 409) {\n retryCount++;\n await sleep(RETRY_DELAY * Math.min(retryCount, 2));\n continue;\n }\n\n return { status: response.status, data };\n }\n return { status: 500 };\n};\n\nexport const invokeFunction = async (client: Client, space: Space, trigger: FunctionTrigger, data: any) => {\n try {\n invariant(trigger.spec);\n invariant(trigger.function);\n if (trigger.spec.type === 'websocket') {\n return handleEmail(space, data.data);\n }\n\n const script = await space.crud.query({ id: trigger.function }).first();\n const { objects: functions } = await space.crud.query({ __typename: FunctionType.typename }).run();\n const func = functions.find((fn) => referenceEquals(fn.source, trigger.function!)) as AnyObjectData | undefined;\n const funcSlug = func?.__meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;\n if (!funcSlug) {\n log.warn('function not deployed', { scriptId: script.id, name: script.name });\n return 404;\n }\n\n const funcUrl = getFunctionUrl(client.config, funcSlug, space.id);\n const triggerData: AnyObjectData = {\n ...getObjectCore(trigger).toPlainObject(),\n // TODO: Remove when functions can query by DXN.\n promptId: trigger.meta?.prompt?.id,\n };\n // TODO: Remove when functions can add objects and easily modify collections (push, splice).\n return (await callFunction(funcUrl, triggerData, data)).status;\n } catch (err) {\n return 400;\n }\n};\n\nconst USERFUNCTIONS_META_KEY = 'dxos.org/service/function';\n\nconst getFunctionUrl = (config: Config, slug: string, spaceId?: string) => {\n const baseUrl = new URL('functions/', config.values.runtime?.services?.edge?.url);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = slug.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n spaceId && url.searchParams.set('spaceId', spaceId);\n url.protocol = 'https';\n return url.toString();\n};\n\n// TODO(dmaretskyi): Factor out.\n\ntype ReferenceLike = { '/': string } | string;\n\nconst referenceEquals = (a: ReferenceLike, b: ReferenceLike): boolean => {\n const aDXN = toDXN(a);\n const bDXN = toDXN(b);\n return aDXN.toString() === bDXN.toString();\n};\n\nconst toDXN = (ref: ReferenceLike): DXN => {\n if (typeof ref === 'string') {\n if (ref.startsWith('dxn:')) {\n return DXN.parse(ref);\n } else {\n return new DXN(DXN.kind.ECHO, [LOCAL_SPACE_TAG, ref]);\n }\n }\n\n invariant(typeof ref['/'] === 'string');\n return DXN.parse(ref['/']);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { findObjectWithForeignKey } from '@dxos/echo-db';\nimport { create, foreignKey } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\nimport { MailboxType } from '@dxos/plugin-inbox/types';\nimport { MessageType } from '@dxos/plugin-space/types';\nimport { type Space, Filter } from '@dxos/react-client/echo';\n\nexport const SOURCE_ID = 'hub.dxos.network/api/mailbox';\n\nexport const handleEmail = async (space: Space, data: any) => {\n const { messages } = data;\n\n // Create mailbox if doesn't exist.\n const { objects: mailboxes } = await space.db.query(Filter.schema(MailboxType)).run();\n const mailbox = mailboxes[0] ?? space.db.add(create(MailboxType, { messages: [] }));\n\n log.info('messages', { count: messages.length, existingMailbox: mailboxes.length > 0 });\n\n const { objects } = await space.db.query(Filter.schema(MessageType)).run();\n for (const message of messages) {\n let object = findObjectWithForeignKey(objects, { source: SOURCE_ID, id: String(message.id) });\n if (!object) {\n object = space.db.add(\n create(\n MessageType,\n {\n sender: { email: message.from },\n timestamp: new Date(message.created).toISOString(),\n text: message.body,\n properties: {\n subject: message.subject,\n to: [{ email: message.to }],\n },\n },\n {\n keys: [foreignKey(SOURCE_ID, String(message.id))],\n },\n ),\n );\n mailbox.messages?.push(object);\n }\n }\n\n return 200;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AUTOMATION_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [AUTOMATION_PLUGIN]: {\n 'plugin name': 'Automation',\n 'object placeholder': 'New prompt',\n 'create object label': 'Create prompt',\n 'create trigger label': 'Create trigger',\n 'create stack section label': 'Create prompt',\n 'command placeholder': 'Enter slash command...',\n 'template placeholder': 'Enter template...',\n 'value placeholder': 'Enter value...',\n 'select preset template placeholder': 'Select preset',\n 'open automation panel label': 'Show Automations',\n\n 'function select label': 'Function',\n 'function select placeholder': 'Select function',\n 'function enabled': 'Enabled',\n 'trigger select label': 'Trigger',\n 'trigger select placeholder': 'Trigger type',\n\n 'trigger type subscription': 'Subscription',\n 'trigger type timer': 'Timer',\n 'trigger type webhook': 'Webhook',\n 'trigger type websocket': 'Websocket',\n\n 'trigger filter': 'Filter',\n 'trigger cron': 'Cron',\n 'trigger method': 'Method',\n 'trigger endpoint': 'Endpoint',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AutomationPlugin } from './AutomationPlugin';\n\nexport default AutomationPlugin;\n\nexport * from './AutomationPlugin';\nexport * from './components';\nexport * from './presets';\nexport * from './types';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "parseMetadataResolverPlugin", "resolvePlugin", "FunctionDef", "FunctionTrigger", "invariant", "parseClientPlugin", "createExtension", "toSignal", "getTypename", "loadObjectReferences", "parseId", "lazy", "React", "Button", "Icon", "Toolbar", "AutomationPanel", "handleCreate", "div", "className", "Toolbar", "Root", "classNames", "Button", "onClick", "Icon", "icon", "React", "getSpace", "Select", "useTranslation", "nonNullable", "create", "str", "text", "filter", "value", "undefined", "flat", "join", "chainPresets", "id", "title", "createPrompt", "create", "ChainPromptType", "command", "template", "inputs", "type", "ChainInputType", "VALUE", "name", "PASS_THROUGH", "CONTEXT", "SCHEMA", "RETRIEVER", "RESOLVER", "Chain", "chain", "space", "getSpace", "handleSelectPreset", "preset", "name", "title", "prompts", "filter", "nonNullable", "forEach", "prompt", "db", "remove", "createPrompt", "React", "div", "className", "map", "i", "PromptEditor", "key", "ChainPresets", "presets", "chainPresets", "onSelect", "t", "useTranslation", "AUTOMATION_PLUGIN", "Select", "Root", "onValueChange", "value", "find", "id", "TriggerButton", "classNames", "placeholder", "Portal", "Content", "Viewport", "Option", "React", "useEffect", "useMemo", "FunctionTriggerSchema", "invariant", "ScriptType", "Filter", "useQuery", "Input", "Select", "useTranslation", "Form", "SelectInput", "distinctBy", "React", "Input", "InputRow", "label", "children", "React", "Input", "Root", "tr", "td", "className", "Label", "classNames", "React", "create", "getMeta", "getEchoMeta", "GameType", "FileType", "DocumentType", "DiagramType", "CollectionType", "MessageType", "Input", "safeParseInt", "stateInitialValues", "schemas", "DocumentType", "FileType", "GameType", "MessageType", "DiagramType", "CollectionType", "selectedSchema", "state", "create", "USERFUNCTIONS_PRESET_META_KEY", "getFunctionMetaExtension", "trigger", "script", "meta", "getEchoMeta", "keys", "find", "key", "source", "extension", "metaExtensions", "id", "function", "DefaultMetaProps", "React", "ChessMetaProps", "InputRow", "label", "Input", "TextInput", "type", "value", "level", "onChange", "event", "safeParseInt", "target", "placeholder", "EmailWorkerMetaProps", "account", "ChainPromptMetaProps", "triggerId", "schema", "undefined", "model", "ChainPresets", "presets", "chainPresets", "onSelect", "preset", "prompt", "createPrompt", "PromptEditor", "EmbeddingMetaProps", "__DEFAULT__", "initialValue", "component", "useEffect", "useState", "Mutex", "Context", "createSubscriptionTrigger", "createWebsocketTrigger", "FunctionTrigger", "invariant", "log", "useClient", "Filter", "useQuery", "sleep", "getObjectCore", "invariant", "DXN", "LOCAL_SPACE_TAG", "log", "FunctionType", "findObjectWithForeignKey", "create", "foreignKey", "log", "MailboxType", "MessageType", "Filter", "SOURCE_ID", "handleEmail", "space", "data", "messages", "objects", "mailboxes", "db", "query", "schema", "run", "mailbox", "add", "info", "count", "length", "existingMailbox", "message", "object", "source", "id", "String", "sender", "email", "from", "timestamp", "Date", "created", "toISOString", "text", "body", "properties", "subject", "to", "keys", "push", "MAX_RETRIES", "RETRY_DELAY", "callFunction", "funcUrl", "trigger", "data", "body", "event", "retryCount", "log", "info", "response", "fetch", "method", "headers", "JSON", "stringify", "text", "status", "sleep", "Math", "min", "invokeFunction", "client", "space", "invariant", "spec", "function", "type", "handleEmail", "script", "crud", "query", "id", "first", "objects", "functions", "__typename", "FunctionType", "typename", "run", "func", "find", "fn", "referenceEquals", "source", "funcSlug", "__meta", "keys", "key", "USERFUNCTIONS_META_KEY", "warn", "scriptId", "name", "getFunctionUrl", "config", "triggerData", "getObjectCore", "toPlainObject", "promptId", "meta", "prompt", "err", "slug", "spaceId", "baseUrl", "URL", "values", "runtime", "services", "edge", "url", "relativeUrl", "replace", "toString", "searchParams", "set", "protocol", "a", "b", "aDXN", "toDXN", "bDXN", "ref", "startsWith", "DXN", "parse", "kind", "ECHO", "LOCAL_SPACE_TAG", "registerTriggersMutex", "Mutex", "useLocalTriggerManager", "space", "client", "useClient", "registry", "useState", "Map", "triggers", "useQuery", "Filter", "schema", "FunctionTrigger", "useEffect", "setTimeout", "executeSynchronized", "deprecated", "Set", "Array", "from", "keys", "log", "all", "map", "t", "id", "enabled", "filter", "trigger", "has", "delete", "info", "ctx", "Context", "set", "triggerSpec", "spec", "invariant", "triggerFactory", "type", "createSubscriptionTrigger", "createWebsocketTrigger", "data", "invokeFunction", "get", "dispose", "JSON", "stringify", "values", "triggerTypes", "TriggerEditor", "space", "trigger", "t", "useTranslation", "AUTOMATION_PLUGIN", "scripts", "useQuery", "Filter", "schema", "ScriptType", "script", "useMemo", "find", "id", "function", "useLocalTriggerManager", "triggerLabels", "subscription", "timer", "webhook", "websocket", "useEffect", "db", "schemaRegistry", "query", "then", "schemas", "state", "distinctBy", "typename", "sort", "a", "b", "catch", "spec", "invariant", "type", "filter", "foundSchema", "selectedSchema", "JSON", "stringify", "meta", "extension", "getFunctionMetaExtension", "initialValue", "handleSelectFunction", "value", "match", "fn", "handleSelectTriggerType", "triggerType", "cron", "method", "url", "init", "TriggerMeta", "component", "test", "object", "React", "Form", "FunctionTriggerSchema", "values", "props", "p", "name", "Custom", "SelectInput", "options", "map", "label", "div", "className", "table", "tbody", "InputRow", "Select", "Root", "onValueChange", "TriggerButton", "classNames", "placeholder", "Portal", "Content", "Viewport", "Option", "key", "description", "length", "TriggerType", "Input", "Switch", "checked", "enabled", "onCheckedChange", "tr", "td", "TriggerSpecSubscription", "handleValueChange", "TriggerSpecTimer", "TextInput", "onChange", "event", "target", "methods", "TriggerSpecWebhook", "TriggerSpecWebsocket", "handleChangeInit", "parse", "err", "triggerRenderers", "Component", "PromptContainer", "lazy", "AUTOMATION_PLUGIN", "AutomationPlugin", "meta", "provides", "metadata", "records", "ChainType", "typename", "placeholder", "ns", "AUTOMATION_PLUGIN", "icon", "loadReferences", "chain", "loadObjectReferences", "prompts", "translations", "echo", "schema", "ChainPromptType", "FunctionDef", "FunctionTrigger", "complementary", "panels", "id", "label", "graph", "builder", "plugins", "clientPlugin", "resolvePlugin", "parseClientPlugin", "metadataPlugin", "parseMetadataResolverPlugin", "resolve", "resolver", "client", "invariant", "createExtension", "endsWith", "type", "subjectId", "split", "spaceId", "objectId", "parseId", "space", "spaces", "get", "find", "properties", "name", "data", "showResolvedThreads", "object", "toSignal", "onChange", "timeout", "setTimeout", "db", "loadObjectById", "clearTimeout", "getObjectById", "getTypename", "surface", "component", "role", "React", "AutomationPanel", "intent", "action", "AutomationAction", "CREATE", "AutomationPlugin"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/experimental/plugin-automation/src/components/AutomationPanel.tsx":{"bytes":2118,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/prompt-extension.ts":{"bytes":4002,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/meta.ts":{"bytes":1626,"imports":[],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/types/chain.ts":{"bytes":4247,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/types/types.ts":{"bytes":1920,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/types/index.ts":{"bytes":599,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/types/chain.ts","kind":"import-statement","original":"./chain"},{"path":"packages/plugins/experimental/plugin-automation/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/PromptEditor.tsx":{"bytes":23894,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/prompt-extension.ts","kind":"import-statement","original":"./prompt-extension"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts":{"bytes":555,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/PromptEditor.tsx","kind":"import-statement","original":"./PromptEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/presets.ts":{"bytes":19268,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx":{"bytes":7176,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"./PromptEditor"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/experimental/plugin-automation/src/presets.ts","kind":"import-statement","original":"../presets"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx":{"bytes":2078,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/email.ts":{"bytes":6682,"imports":[{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-inbox/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/invokation-handler.ts":{"bytes":14280,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-script","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/email.ts","kind":"import-statement","original":"./email"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/meta.tsx":{"bytes":17556,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-chess/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-ipfs/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"@dxos/plugin-sketch/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx","kind":"import-statement","original":"./Form"},{"path":"packages/plugins/experimental/plugin-automation/src/presets.ts","kind":"import-statement","original":"../../presets"},{"path":"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx","kind":"import-statement","original":"../Chain"},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"../PromptEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx":{"bytes":42861,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-script/types","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx","kind":"import-statement","original":"./Form"},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/invokation-handler.ts","kind":"import-statement","original":"./invokation-handler"},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/meta.tsx","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/index.ts":{"bytes":557,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx","kind":"import-statement","original":"./TriggerEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx":{"bytes":1607,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"./PromptEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/index.ts":{"bytes":1219,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/AutomationPanel.tsx","kind":"import-statement","original":"./AutomationPanel"},{"path":"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx","kind":"import-statement","original":"./Chain"},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"./PromptEditor"},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/index.ts","kind":"import-statement","original":"./TriggerEditor"},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx","kind":"dynamic-import","original":"./PromptContainer"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/translations.ts":{"bytes":4161,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx":{"bytes":20618,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/experimental/plugin-automation/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/index.ts":{"bytes":1109,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx","kind":"import-statement","original":"./AutomationPlugin"},{"path":"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx","kind":"import-statement","original":"./AutomationPlugin"},{"path":"packages/plugins/experimental/plugin-automation/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/experimental/plugin-automation/src/presets.ts","kind":"import-statement","original":"./presets"},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/plugins/experimental/plugin-automation/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":67677},"packages/plugins/experimental/plugin-automation/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-2FOJUVYG.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-J4SYTP4Y.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-script/types","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-script","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-inbox/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-chess/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-ipfs/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"@dxos/plugin-sketch/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/PromptContainer-3GUENQHE.mjs","kind":"dynamic-import"}],"exports":["AutomationAction","AutomationPanel","AutomationPlugin","Chain","ChainInputSchema","ChainInputType","ChainPresets","ChainPromptType","ChainType","PromptContainer","PromptEditor","TriggerEditor","chainPresets","default","str"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/index.ts","inputs":{"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx":{"bytesInOutput":5445},"packages/plugins/experimental/plugin-automation/src/components/index.ts":{"bytesInOutput":106},"packages/plugins/experimental/plugin-automation/src/components/AutomationPanel.tsx":{"bytesInOutput":481},"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx":{"bytesInOutput":1653},"packages/plugins/experimental/plugin-automation/src/presets.ts":{"bytesInOutput":5489},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx":{"bytesInOutput":11844},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx":{"bytesInOutput":513},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/invokation-handler.ts":{"bytesInOutput":3584},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/email.ts":{"bytesInOutput":1706},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/meta.tsx":{"bytesInOutput":4119},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-automation/src/translations.ts":{"bytesInOutput":1175},"packages/plugins/experimental/plugin-automation/src/index.ts":{"bytesInOutput":36}},"bytes":38137},"packages/plugins/experimental/plugin-automation/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/experimental/plugin-automation/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"}],"exports":["AUTOMATION_PLUGIN","default"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/meta.ts","inputs":{},"bytes":169},"packages/plugins/experimental/plugin-automation/dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/experimental/plugin-automation/dist/lib/browser/types/index.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-J4SYTP4Y.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"}],"exports":["AutomationAction","ChainInputSchema","ChainInputType","ChainPromptType","ChainType"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/types/index.ts","inputs":{},"bytes":298},"packages/plugins/experimental/plugin-automation/dist/lib/browser/PromptContainer-3GUENQHE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":792},"packages/plugins/experimental/plugin-automation/dist/lib/browser/PromptContainer-3GUENQHE.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-2FOJUVYG.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-J4SYTP4Y.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx","inputs":{"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx":{"bytesInOutput":282}},"bytes":589},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-2FOJUVYG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14359},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-2FOJUVYG.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-J4SYTP4Y.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["PromptEditor"],"inputs":{"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/PromptEditor.tsx":{"bytesInOutput":5699},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/prompt-extension.ts":{"bytesInOutput":825},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts":{"bytesInOutput":0}},"bytes":7007},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-J4SYTP4Y.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3020},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-J4SYTP4Y.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["AutomationAction","ChainInputSchema","ChainInputType","ChainPromptType","ChainType"],"inputs":{"packages/plugins/experimental/plugin-automation/src/types/chain.ts":{"bytesInOutput":1247},"packages/plugins/experimental/plugin-automation/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-automation/src/types/types.ts":{"bytesInOutput":250}},"bytes":1845},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":763},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs":{"imports":[],"exports":["AUTOMATION_PLUGIN","meta_default"],"inputs":{"packages/plugins/experimental/plugin-automation/src/meta.ts":{"bytesInOutput":333}},"bytes":489}}}
1
+ {"inputs":{"packages/plugins/experimental/plugin-automation/src/components/AutomationPanel.tsx":{"bytes":2118,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/prompt-extension.ts":{"bytes":4002,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/meta.ts":{"bytes":1626,"imports":[],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/types/schema.ts":{"bytes":4248,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/types/types.ts":{"bytes":1920,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/types/index.ts":{"bytes":604,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/types/schema.ts","kind":"import-statement","original":"./schema"},{"path":"packages/plugins/experimental/plugin-automation/src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/PromptEditor.tsx":{"bytes":23894,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/prompt-extension.ts","kind":"import-statement","original":"./prompt-extension"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../../meta"},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"../../types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts":{"bytes":555,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/PromptEditor.tsx","kind":"import-statement","original":"./PromptEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/presets.ts":{"bytes":19268,"imports":[{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx":{"bytes":7176,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"./PromptEditor"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/experimental/plugin-automation/src/presets.ts","kind":"import-statement","original":"../presets"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx":{"bytes":2078,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/meta.tsx":{"bytes":17560,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-chess/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-ipfs/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"@dxos/plugin-sketch/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx","kind":"import-statement","original":"./Form"},{"path":"packages/plugins/experimental/plugin-automation/src/presets.ts","kind":"import-statement","original":"../../presets"},{"path":"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx","kind":"import-statement","original":"../Chain"},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"../PromptEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/hooks/email.ts":{"bytes":6663,"imports":[{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-inbox/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/hooks/invocation-handler.ts":{"bytes":14883,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-script","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/hooks/email.ts","kind":"import-statement","original":"./email"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts":{"bytes":11522,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/hooks/invocation-handler.ts","kind":"import-statement","original":"./invocation-handler"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/hooks/index.ts":{"bytes":559,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts","kind":"import-statement","original":"./useLocalTriggerManager"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx":{"bytes":37816,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-script/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx","kind":"import-statement","original":"./Form"},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/meta.tsx","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/experimental/plugin-automation/src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"../../meta"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/index.ts":{"bytes":557,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx","kind":"import-statement","original":"./TriggerEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx":{"bytes":1607,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"./PromptEditor"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/components/index.ts":{"bytes":1219,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/AutomationPanel.tsx","kind":"import-statement","original":"./AutomationPanel"},{"path":"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx","kind":"import-statement","original":"./Chain"},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts","kind":"import-statement","original":"./PromptEditor"},{"path":"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/index.ts","kind":"import-statement","original":"./TriggerEditor"},{"path":"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx","kind":"dynamic-import","original":"./PromptContainer"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/translations.ts":{"bytes":4161,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx":{"bytes":20421,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/experimental/plugin-automation/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/experimental/plugin-automation/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/experimental/plugin-automation/src/index.ts":{"bytes":1109,"imports":[{"path":"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx","kind":"import-statement","original":"./AutomationPlugin"},{"path":"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx","kind":"import-statement","original":"./AutomationPlugin"},{"path":"packages/plugins/experimental/plugin-automation/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/experimental/plugin-automation/src/presets.ts","kind":"import-statement","original":"./presets"},{"path":"packages/plugins/experimental/plugin-automation/src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/plugins/experimental/plugin-automation/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":70715},"packages/plugins/experimental/plugin-automation/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-CJMV64XO.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-B3Z4NQC2.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-script/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-chess/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-ipfs/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"@dxos/plugin-sketch/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/functions","kind":"import-statement","external":true},{"path":"@dxos/functions/types","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-script","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-inbox/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/PromptContainer-6CBNCUKQ.mjs","kind":"dynamic-import"}],"exports":["AutomationAction","AutomationPanel","AutomationPlugin","Chain","ChainInputSchema","ChainInputType","ChainPresets","ChainPromptType","ChainType","PromptContainer","PromptEditor","TriggerEditor","chainPresets","default","str"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/index.ts","inputs":{"packages/plugins/experimental/plugin-automation/src/AutomationPlugin.tsx":{"bytesInOutput":5445},"packages/plugins/experimental/plugin-automation/src/components/index.ts":{"bytesInOutput":106},"packages/plugins/experimental/plugin-automation/src/components/AutomationPanel.tsx":{"bytesInOutput":481},"packages/plugins/experimental/plugin-automation/src/components/Chain.tsx":{"bytesInOutput":1653},"packages/plugins/experimental/plugin-automation/src/presets.ts":{"bytesInOutput":5489},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx":{"bytesInOutput":10429},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/Form.tsx":{"bytesInOutput":513},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/meta.tsx":{"bytesInOutput":4102},"packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts":{"bytesInOutput":3269},"packages/plugins/experimental/plugin-automation/src/hooks/invocation-handler.ts":{"bytesInOutput":3881},"packages/plugins/experimental/plugin-automation/src/hooks/email.ts":{"bytesInOutput":1705},"packages/plugins/experimental/plugin-automation/src/hooks/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-automation/src/translations.ts":{"bytesInOutput":1175},"packages/plugins/experimental/plugin-automation/src/index.ts":{"bytesInOutput":36}},"bytes":40389},"packages/plugins/experimental/plugin-automation/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/experimental/plugin-automation/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"}],"exports":["AUTOMATION_PLUGIN","default"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/meta.ts","inputs":{},"bytes":169},"packages/plugins/experimental/plugin-automation/dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/experimental/plugin-automation/dist/lib/browser/types/index.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-B3Z4NQC2.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"}],"exports":["AutomationAction","ChainInputSchema","ChainInputType","ChainPromptType","ChainType"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/types/index.ts","inputs":{},"bytes":298},"packages/plugins/experimental/plugin-automation/dist/lib/browser/PromptContainer-6CBNCUKQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":792},"packages/plugins/experimental/plugin-automation/dist/lib/browser/PromptContainer-6CBNCUKQ.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-CJMV64XO.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-B3Z4NQC2.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx","inputs":{"packages/plugins/experimental/plugin-automation/src/components/PromptContainer.tsx":{"bytesInOutput":282}},"bytes":589},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-CJMV64XO.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14359},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-CJMV64XO.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-B3Z4NQC2.mjs","kind":"import-statement"},{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@dxos/react-ui-editor","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["PromptEditor"],"inputs":{"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/PromptEditor.tsx":{"bytesInOutput":5699},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/prompt-extension.ts":{"bytesInOutput":825},"packages/plugins/experimental/plugin-automation/src/components/PromptEditor/index.ts":{"bytesInOutput":0}},"bytes":7007},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-B3Z4NQC2.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3021},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-B3Z4NQC2.mjs":{"imports":[{"path":"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs","kind":"import-statement"},{"path":"@dxos/echo-schema","kind":"import-statement","external":true}],"exports":["AutomationAction","ChainInputSchema","ChainInputType","ChainPromptType","ChainType"],"inputs":{"packages/plugins/experimental/plugin-automation/src/types/schema.ts":{"bytesInOutput":1247},"packages/plugins/experimental/plugin-automation/src/types/index.ts":{"bytesInOutput":0},"packages/plugins/experimental/plugin-automation/src/types/types.ts":{"bytesInOutput":250}},"bytes":1846},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":763},"packages/plugins/experimental/plugin-automation/dist/lib/browser/chunk-PQLGYMNY.mjs":{"imports":[],"exports":["AUTOMATION_PLUGIN","meta_default"],"inputs":{"packages/plugins/experimental/plugin-automation/src/meta.ts":{"bytesInOutput":333}},"bytes":489}}}