@dxos/plugin-automation 0.7.5-labs.071a3e2 → 0.7.5-labs.8a82073

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 (104) hide show
  1. package/dist/lib/browser/{AutomationPanel-YPD3AGQN.mjs → AutomationPanel-CL2TWZT5.mjs} +2 -2
  2. package/dist/lib/browser/{ChatContainer-ODZECATM.mjs → ChatContainer-EJ3IWL7Y.mjs} +2 -2
  3. package/dist/lib/browser/{chunk-PQGFC2ZO.mjs → chunk-4M74P6YW.mjs} +4 -4
  4. package/dist/lib/browser/{chunk-Z54KIF6H.mjs → chunk-6KJRL5KV.mjs} +2 -1
  5. package/dist/lib/browser/{chunk-Z54KIF6H.mjs.map → chunk-6KJRL5KV.mjs.map} +2 -2
  6. package/dist/lib/browser/{chunk-DL7XA62G.mjs → chunk-N4SSCQ7P.mjs} +218 -147
  7. package/dist/lib/browser/{chunk-DL7XA62G.mjs.map → chunk-N4SSCQ7P.mjs.map} +4 -4
  8. package/dist/lib/browser/index.mjs +9 -8
  9. package/dist/lib/browser/index.mjs.map +3 -3
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/{react-surface-WRHRCEV5.mjs → react-surface-RRTZFTKR.mjs} +4 -4
  12. package/dist/lib/node/{AutomationPanel-CO26O75P.cjs → AutomationPanel-BCEY3YXO.cjs} +6 -6
  13. package/dist/lib/node/{AutomationPanel-CO26O75P.cjs.map → AutomationPanel-BCEY3YXO.cjs.map} +2 -2
  14. package/dist/lib/node/{ChatContainer-5URBEXQD.cjs → ChatContainer-QUWFEBTI.cjs} +7 -7
  15. package/dist/lib/node/{ChatContainer-5URBEXQD.cjs.map → ChatContainer-QUWFEBTI.cjs.map} +2 -2
  16. package/dist/lib/node/{chunk-NH7STAX6.cjs → chunk-DKGNORZK.cjs} +230 -159
  17. package/dist/lib/node/chunk-DKGNORZK.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-OCW5GAVZ.cjs → chunk-IPCNJYQL.cjs} +5 -4
  19. package/dist/lib/node/{chunk-OCW5GAVZ.cjs.map → chunk-IPCNJYQL.cjs.map} +2 -2
  20. package/dist/lib/node/{chunk-D2QQXWOY.cjs → chunk-LC6KNDPQ.cjs} +8 -8
  21. package/dist/lib/node/index.cjs +19 -18
  22. package/dist/lib/node/index.cjs.map +3 -3
  23. package/dist/lib/node/meta.json +1 -1
  24. package/dist/lib/node/{react-surface-HDAVE6NU.cjs → react-surface-BVZ63QP4.cjs} +10 -10
  25. package/dist/lib/node-esm/{AutomationPanel-VQZUKPK2.mjs → AutomationPanel-YTIZ74RI.mjs} +2 -2
  26. package/dist/lib/node-esm/{ChatContainer-23QIVDG5.mjs → ChatContainer-QSMDZRDU.mjs} +2 -2
  27. package/dist/lib/node-esm/{chunk-VN2AFV25.mjs → chunk-CQPQXIJP.mjs} +4 -4
  28. package/dist/lib/node-esm/{chunk-NSVQZ3EH.mjs → chunk-CZXU4CFK.mjs} +2 -1
  29. package/dist/lib/node-esm/{chunk-NSVQZ3EH.mjs.map → chunk-CZXU4CFK.mjs.map} +2 -2
  30. package/dist/lib/node-esm/{chunk-JJFWFS6P.mjs → chunk-D7RARVTS.mjs} +218 -147
  31. package/dist/lib/node-esm/{chunk-JJFWFS6P.mjs.map → chunk-D7RARVTS.mjs.map} +4 -4
  32. package/dist/lib/node-esm/index.mjs +9 -8
  33. package/dist/lib/node-esm/index.mjs.map +3 -3
  34. package/dist/lib/node-esm/meta.json +1 -1
  35. package/dist/lib/node-esm/{react-surface-FZ5OFRDE.mjs → react-surface-Y5LQHUQN.mjs} +4 -4
  36. package/dist/types/src/components/Box/StatusLine.d.ts.map +1 -0
  37. package/dist/types/src/components/Box/StatusLine.stories.d.ts.map +1 -0
  38. package/dist/types/src/components/Box/Tabbed.d.ts +15 -0
  39. package/dist/types/src/components/Box/Tabbed.d.ts.map +1 -0
  40. package/dist/types/src/components/Box/Tabbed.stories.d.ts.map +1 -0
  41. package/dist/types/src/components/{Thread → Box}/ToggleContainer.d.ts +3 -3
  42. package/dist/types/src/components/Box/ToggleContainer.d.ts.map +1 -0
  43. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts.map +1 -0
  44. package/dist/types/src/components/Box/index.d.ts +4 -0
  45. package/dist/types/src/components/Box/index.d.ts.map +1 -0
  46. package/dist/types/src/components/Prompt/Prompt.d.ts +7 -0
  47. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -0
  48. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +8 -0
  49. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -0
  50. package/dist/types/src/components/Prompt/index.d.ts +2 -0
  51. package/dist/types/src/components/Prompt/index.d.ts.map +1 -0
  52. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +20 -0
  53. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +1 -0
  54. package/dist/types/src/components/Thread/Thread.stories.d.ts +1 -0
  55. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  57. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  58. package/dist/types/src/translations.d.ts +3 -0
  59. package/dist/types/src/translations.d.ts.map +1 -1
  60. package/package.json +52 -50
  61. package/src/AutomationPlugin.tsx +5 -5
  62. package/src/components/{Thread → Box}/Tabbed.stories.tsx +1 -2
  63. package/src/components/Box/Tabbed.tsx +89 -0
  64. package/src/components/{Thread → Box}/ToggleContainer.stories.tsx +0 -1
  65. package/src/components/{Thread → Box}/ToggleContainer.tsx +28 -23
  66. package/src/components/Box/index.ts +7 -0
  67. package/src/components/Prompt/Prompt.stories.tsx +50 -0
  68. package/src/components/Prompt/Prompt.tsx +36 -0
  69. package/src/components/Prompt/index.ts +5 -0
  70. package/src/components/Prompt/prompt-autocomplete.ts +200 -0
  71. package/src/components/PromptEditor/PromptEditor.stories.tsx +3 -3
  72. package/src/components/Thread/Thread.stories.tsx +8 -1
  73. package/src/components/Thread/Thread.tsx +1 -1
  74. package/src/components/Thread/ThreadMessage.tsx +41 -19
  75. package/src/components/TriggerEditor/TriggerEditor.tsx +6 -1
  76. package/src/translations.ts +1 -0
  77. package/dist/lib/node/chunk-NH7STAX6.cjs.map +0 -7
  78. package/dist/types/src/components/Thread/ScrollContainer.d.ts +0 -15
  79. package/dist/types/src/components/Thread/ScrollContainer.d.ts.map +0 -1
  80. package/dist/types/src/components/Thread/StatusLine.d.ts.map +0 -1
  81. package/dist/types/src/components/Thread/StatusLine.stories.d.ts.map +0 -1
  82. package/dist/types/src/components/Thread/Tabbed.d.ts +0 -9
  83. package/dist/types/src/components/Thread/Tabbed.d.ts.map +0 -1
  84. package/dist/types/src/components/Thread/Tabbed.stories.d.ts.map +0 -1
  85. package/dist/types/src/components/Thread/ToggleContainer.d.ts.map +0 -1
  86. package/dist/types/src/components/Thread/ToggleContainer.stories.d.ts.map +0 -1
  87. package/src/components/Thread/ScrollContainer.tsx +0 -92
  88. package/src/components/Thread/Tabbed.tsx +0 -72
  89. /package/dist/lib/browser/{AutomationPanel-YPD3AGQN.mjs.map → AutomationPanel-CL2TWZT5.mjs.map} +0 -0
  90. /package/dist/lib/browser/{ChatContainer-ODZECATM.mjs.map → ChatContainer-EJ3IWL7Y.mjs.map} +0 -0
  91. /package/dist/lib/browser/{chunk-PQGFC2ZO.mjs.map → chunk-4M74P6YW.mjs.map} +0 -0
  92. /package/dist/lib/browser/{react-surface-WRHRCEV5.mjs.map → react-surface-RRTZFTKR.mjs.map} +0 -0
  93. /package/dist/lib/node/{chunk-D2QQXWOY.cjs.map → chunk-LC6KNDPQ.cjs.map} +0 -0
  94. /package/dist/lib/node/{react-surface-HDAVE6NU.cjs.map → react-surface-BVZ63QP4.cjs.map} +0 -0
  95. /package/dist/lib/node-esm/{AutomationPanel-VQZUKPK2.mjs.map → AutomationPanel-YTIZ74RI.mjs.map} +0 -0
  96. /package/dist/lib/node-esm/{ChatContainer-23QIVDG5.mjs.map → ChatContainer-QSMDZRDU.mjs.map} +0 -0
  97. /package/dist/lib/node-esm/{chunk-VN2AFV25.mjs.map → chunk-CQPQXIJP.mjs.map} +0 -0
  98. /package/dist/lib/node-esm/{react-surface-FZ5OFRDE.mjs.map → react-surface-Y5LQHUQN.mjs.map} +0 -0
  99. /package/dist/types/src/components/{Thread → Box}/StatusLine.d.ts +0 -0
  100. /package/dist/types/src/components/{Thread → Box}/StatusLine.stories.d.ts +0 -0
  101. /package/dist/types/src/components/{Thread → Box}/Tabbed.stories.d.ts +0 -0
  102. /package/dist/types/src/components/{Thread → Box}/ToggleContainer.stories.d.ts +0 -0
  103. /package/src/components/{Thread → Box}/StatusLine.stories.tsx +0 -0
  104. /package/src/components/{Thread → Box}/StatusLine.tsx +0 -0
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { type ThemedClassName } from '@dxos/react-ui';
3
+ import { type UseTextEditorProps } from '@dxos/react-ui-editor';
4
+ import { type AutocompleteOptions } from './prompt-autocomplete';
5
+ export type PromptProps = ThemedClassName<AutocompleteOptions & Pick<UseTextEditorProps, 'autoFocus'>>;
6
+ export declare const Prompt: ({ classNames, autoFocus, onEnter, onSuggest }: PromptProps) => React.JSX.Element;
7
+ //# sourceMappingURL=Prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../../../src/components/Prompt/Prompt.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;AAEvG,eAAO,MAAM,MAAM,kDAAmD,WAAW,sBAgBhF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import '@dxos-theme';
2
+ import { type StoryObj, type Meta } from '@storybook/react';
3
+ import { Prompt } from './Prompt';
4
+ declare const meta: Meta<typeof Prompt>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof Prompt>;
7
+ export declare const Default: Story;
8
+ //# sourceMappingURL=Prompt.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Prompt/Prompt.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAO7B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAwBrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './Prompt';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Prompt/index.ts"],"names":[],"mappings":"AAIA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type Extension } from '@codemirror/state';
2
+ export type AutocompleteOptions = {
3
+ /**
4
+ * Callback triggered when Enter is pressed.
5
+ * @param text The current text in the editor
6
+ */
7
+ onEnter?: (text: string) => void;
8
+ /**
9
+ * Function that returns a list of suggestions based on the current text.
10
+ * @param text The current text before the cursor
11
+ * @returns Array of suggestion strings
12
+ */
13
+ onSuggest: (text: string) => string[];
14
+ };
15
+ /**
16
+ * Creates an autocomplete extension that shows inline suggestions.
17
+ * Pressing Tab will complete the suggestion.
18
+ */
19
+ export declare const createAutocompleteExtension: ({ onEnter, onSuggest }: AutocompleteOptions) => Extension;
20
+ //# sourceMappingURL=prompt-autocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-autocomplete.d.ts","sourceRoot":"","sources":["../../../../../src/components/Prompt/prompt-autocomplete.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWzD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACvC,CAAC;AAmBF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,2BAA4B,mBAAmB,KAAG,SAoJzF,CAAC"}
@@ -6,5 +6,6 @@ export default meta;
6
6
  type Story = StoryObj<ThreadProps>;
7
7
  export declare const Default: Story;
8
8
  export declare const Input: Story;
9
+ export declare const Collapse: Story;
9
10
  export declare const Incremental: Story;
10
11
  //# sourceMappingURL=Thread.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Thread.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Thread/Thread.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQ5D,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAiDpD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAQ3B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAoFnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAC"}
1
+ {"version":3,"file":"Thread.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Thread/Thread.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQ5D,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAiDpD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAQ3B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAoFnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadMessage.d.ts","sourceRoot":"","sources":["../../../../../src/components/Thread/ThreadMessage.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASjF,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA2EhD,CAAC"}
1
+ {"version":3,"file":"ThreadMessage.d.ts","sourceRoot":"","sources":["../../../../../src/components/Thread/ThreadMessage.tsx"],"names":[],"mappings":"AAIA,OAAc,EAA+B,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQjF,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAsEhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/TriggerEditor/TriggerEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAMvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,aAAa,yCAA0C,kBAAkB,sBA4FrF,CAAC"}
1
+ {"version":3,"file":"TriggerEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/TriggerEditor/TriggerEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAMvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,aAAa,yCAA0C,kBAAkB,sBAiGrF,CAAC"}
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  'trigger type websocket'?: undefined;
27
27
  'trigger type subscription'?: undefined;
28
28
  'trigger type email'?: undefined;
29
+ 'trigger type queue'?: undefined;
29
30
  'trigger filter'?: undefined;
30
31
  'trigger cron'?: undefined;
31
32
  'trigger method'?: undefined;
@@ -60,6 +61,7 @@ declare const _default: {
60
61
  'trigger type websocket': string;
61
62
  'trigger type subscription': string;
62
63
  'trigger type email': string;
64
+ 'trigger type queue': string;
63
65
  'trigger filter': string;
64
66
  'trigger cron': string;
65
67
  'trigger method': string;
@@ -96,6 +98,7 @@ declare const _default: {
96
98
  'trigger type websocket': string;
97
99
  'trigger type subscription': string;
98
100
  'trigger type email': string;
101
+ 'trigger type queue': string;
99
102
  'trigger filter': string;
100
103
  'trigger cron': string;
101
104
  'trigger method': string;
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAkDE"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAmDE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-automation",
3
- "version": "0.7.5-labs.071a3e2",
3
+ "version": "0.7.5-labs.8a82073",
4
4
  "description": "Prompt chain plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -32,6 +32,7 @@
32
32
  "src"
33
33
  ],
34
34
  "dependencies": {
35
+ "@codemirror/autocomplete": "^6.18.1",
35
36
  "@codemirror/language": "^6.10.3",
36
37
  "@codemirror/search": "^6.5.6",
37
38
  "@codemirror/state": "^6.4.1",
@@ -42,44 +43,45 @@
42
43
  "lodash.get": "^4.4.2",
43
44
  "react-markdown": "^8.0.5",
44
45
  "unified": "^11.0.0",
45
- "@dxos/assistant": "0.7.5-labs.071a3e2",
46
- "@dxos/async": "0.7.5-labs.071a3e2",
47
- "@dxos/compute": "0.7.5-labs.071a3e2",
48
- "@dxos/artifact": "0.7.5-labs.071a3e2",
49
- "@dxos/app-framework": "0.7.5-labs.071a3e2",
50
- "@dxos/conductor": "0.7.5-labs.071a3e2",
51
- "@dxos/context": "0.7.5-labs.071a3e2",
52
- "@dxos/client": "0.7.5-labs.071a3e2",
53
- "@dxos/echo-db": "0.7.5-labs.071a3e2",
54
- "@dxos/echo-schema": "0.7.5-labs.071a3e2",
55
- "@dxos/edge-client": "0.7.5-labs.071a3e2",
56
- "@dxos/functions": "0.7.5-labs.071a3e2",
57
- "@dxos/invariant": "0.7.5-labs.071a3e2",
58
- "@dxos/keys": "0.7.5-labs.071a3e2",
59
- "@dxos/live-object": "0.7.5-labs.071a3e2",
60
- "@dxos/log": "0.7.5-labs.071a3e2",
61
- "@dxos/plugin-client": "0.7.5-labs.071a3e2",
62
- "@dxos/plugin-deck": "0.7.5-labs.071a3e2",
63
- "@dxos/plugin-graph": "0.7.5-labs.071a3e2",
64
- "@dxos/plugin-inbox": "0.7.5-labs.071a3e2",
65
- "@dxos/plugin-markdown": "0.7.5-labs.071a3e2",
66
- "@dxos/plugin-script": "0.7.5-labs.071a3e2",
67
- "@dxos/plugin-sketch": "0.7.5-labs.071a3e2",
68
- "@dxos/plugin-space": "0.7.5-labs.071a3e2",
69
- "@dxos/plugin-wnfs": "0.7.5-labs.071a3e2",
70
- "@dxos/react-edge-client": "0.7.5-labs.071a3e2",
71
- "@dxos/plugin-stack": "0.7.5-labs.071a3e2",
72
- "@dxos/react-client": "0.7.5-labs.071a3e2",
73
- "@dxos/react-ui-canvas-compute": "0.7.5-labs.071a3e2",
74
- "@dxos/react-ui-canvas-editor": "0.7.5-labs.071a3e2",
75
- "@dxos/react-ui-editor": "0.7.5-labs.071a3e2",
76
- "@dxos/react-ui-form": "0.7.5-labs.071a3e2",
77
- "@dxos/react-ui-sfx": "0.7.5-labs.071a3e2",
78
- "@dxos/react-ui-syntax-highlighter": "0.7.5-labs.071a3e2",
79
- "@dxos/schema": "0.7.5-labs.071a3e2",
80
- "@dxos/react-ui-stack": "0.7.5-labs.071a3e2",
81
- "@dxos/util": "0.7.5-labs.071a3e2",
82
- "@dxos/react-ui-list": "0.7.5-labs.071a3e2"
46
+ "@dxos/assistant": "0.7.5-labs.8a82073",
47
+ "@dxos/app-framework": "0.7.5-labs.8a82073",
48
+ "@dxos/async": "0.7.5-labs.8a82073",
49
+ "@dxos/client": "0.7.5-labs.8a82073",
50
+ "@dxos/compute": "0.7.5-labs.8a82073",
51
+ "@dxos/artifact": "0.7.5-labs.8a82073",
52
+ "@dxos/conductor": "0.7.5-labs.8a82073",
53
+ "@dxos/context": "0.7.5-labs.8a82073",
54
+ "@dxos/echo-db": "0.7.5-labs.8a82073",
55
+ "@dxos/edge-client": "0.7.5-labs.8a82073",
56
+ "@dxos/functions": "0.7.5-labs.8a82073",
57
+ "@dxos/echo-schema": "0.7.5-labs.8a82073",
58
+ "@dxos/invariant": "0.7.5-labs.8a82073",
59
+ "@dxos/keys": "0.7.5-labs.8a82073",
60
+ "@dxos/live-object": "0.7.5-labs.8a82073",
61
+ "@dxos/log": "0.7.5-labs.8a82073",
62
+ "@dxos/plugin-client": "0.7.5-labs.8a82073",
63
+ "@dxos/plugin-graph": "0.7.5-labs.8a82073",
64
+ "@dxos/plugin-inbox": "0.7.5-labs.8a82073",
65
+ "@dxos/plugin-deck": "0.7.5-labs.8a82073",
66
+ "@dxos/plugin-sketch": "0.7.5-labs.8a82073",
67
+ "@dxos/plugin-markdown": "0.7.5-labs.8a82073",
68
+ "@dxos/plugin-script": "0.7.5-labs.8a82073",
69
+ "@dxos/plugin-space": "0.7.5-labs.8a82073",
70
+ "@dxos/plugin-stack": "0.7.5-labs.8a82073",
71
+ "@dxos/plugin-wnfs": "0.7.5-labs.8a82073",
72
+ "@dxos/react-client": "0.7.5-labs.8a82073",
73
+ "@dxos/react-edge-client": "0.7.5-labs.8a82073",
74
+ "@dxos/react-ui-canvas-compute": "0.7.5-labs.8a82073",
75
+ "@dxos/react-ui-components": "0.7.5-labs.8a82073",
76
+ "@dxos/react-ui-canvas-editor": "0.7.5-labs.8a82073",
77
+ "@dxos/react-ui-editor": "0.7.5-labs.8a82073",
78
+ "@dxos/react-ui-form": "0.7.5-labs.8a82073",
79
+ "@dxos/react-ui-list": "0.7.5-labs.8a82073",
80
+ "@dxos/react-ui-stack": "0.7.5-labs.8a82073",
81
+ "@dxos/react-ui-syntax-highlighter": "0.7.5-labs.8a82073",
82
+ "@dxos/react-ui-sfx": "0.7.5-labs.8a82073",
83
+ "@dxos/util": "0.7.5-labs.8a82073",
84
+ "@dxos/schema": "0.7.5-labs.8a82073"
83
85
  },
84
86
  "devDependencies": {
85
87
  "@types/lodash.get": "^4.4.7",
@@ -89,21 +91,21 @@
89
91
  "react": "~18.2.0",
90
92
  "react-dom": "~18.2.0",
91
93
  "vite": "5.4.7",
92
- "@dxos/echo-db": "0.7.5-labs.071a3e2",
93
- "@dxos/artifact-testing": "0.7.5-labs.071a3e2",
94
- "@dxos/plugin-chess": "0.7.5-labs.071a3e2",
95
- "@dxos/plugin-map": "0.7.5-labs.071a3e2",
96
- "@dxos/random": "0.7.5-labs.071a3e2",
97
- "@dxos/plugin-table": "0.7.5-labs.071a3e2",
98
- "@dxos/react-ui": "0.7.5-labs.071a3e2",
99
- "@dxos/react-ui-theme": "0.7.5-labs.071a3e2",
100
- "@dxos/storybook-utils": "0.7.5-labs.071a3e2"
94
+ "@dxos/artifact-testing": "0.7.5-labs.8a82073",
95
+ "@dxos/echo-db": "0.7.5-labs.8a82073",
96
+ "@dxos/plugin-chess": "0.7.5-labs.8a82073",
97
+ "@dxos/plugin-table": "0.7.5-labs.8a82073",
98
+ "@dxos/plugin-map": "0.7.5-labs.8a82073",
99
+ "@dxos/random": "0.7.5-labs.8a82073",
100
+ "@dxos/react-ui-theme": "0.7.5-labs.8a82073",
101
+ "@dxos/react-ui": "0.7.5-labs.8a82073",
102
+ "@dxos/storybook-utils": "0.7.5-labs.8a82073"
101
103
  },
102
104
  "peerDependencies": {
103
105
  "react": "~18.2.0",
104
106
  "react-dom": "~18.2.0",
105
- "@dxos/react-ui": "0.7.5-labs.071a3e2",
106
- "@dxos/react-ui-theme": "0.7.5-labs.071a3e2"
107
+ "@dxos/react-ui": "0.7.5-labs.8a82073",
108
+ "@dxos/react-ui-theme": "0.7.5-labs.8a82073"
107
109
  },
108
110
  "publishConfig": {
109
111
  "access": "public"
@@ -16,11 +16,6 @@ import { AutomationAction, ChainPromptType, ChainType, AIChatType, ServiceType }
16
16
  // TODO(wittjosiah): Rename to AssistantPlugin?
17
17
  export const AutomationPlugin = () =>
18
18
  definePlugin(meta, [
19
- defineModule({
20
- id: `${meta.id}/module/ai-client`,
21
- activatesOn: ClientEvents.ClientReady,
22
- activate: AiClient,
23
- }),
24
19
  defineModule({
25
20
  id: `${meta.id}/module/translations`,
26
21
  activatesOn: Events.SetupTranslations,
@@ -88,4 +83,9 @@ export const AutomationPlugin = () =>
88
83
  activatesOn: Events.SetupIntents,
89
84
  activate: IntentResolver,
90
85
  }),
86
+ defineModule({
87
+ id: `${meta.id}/module/ai-client`,
88
+ activatesOn: ClientEvents.ClientReady,
89
+ activate: AiClient,
90
+ }),
91
91
  ]);
@@ -34,10 +34,9 @@ export const Default: Story = {
34
34
  return (
35
35
  <div className='flex flex-col w-[500px] p-4 bg-attention'>
36
36
  <ToggleContainer
37
+ open
37
38
  title={content[selected].title}
38
39
  classNames='p-1 rounded-lg bg-baseSurface border border-neutral-500'
39
- toggle
40
- defaultOpen
41
40
  >
42
41
  <div className='flex w-full overflow-hidden'>
43
42
  <Tabs length={content.length} selected={selected} onSelect={setSelected} />
@@ -0,0 +1,89 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React, { forwardRef } from 'react';
6
+
7
+ import { Icon, type ThemedClassName } from '@dxos/react-ui';
8
+ import { mx } from '@dxos/react-ui-theme';
9
+
10
+ const numbers = [
11
+ { regular: 'ph--number-circle-zero--thin', active: 'ph--number-circle-zero--duotone' },
12
+ { regular: 'ph--number-circle-one--thin', active: 'ph--number-circle-one--duotone' },
13
+ { regular: 'ph--number-circle-two--thin', active: 'ph--number-circle-two--duotone' },
14
+ { regular: 'ph--number-circle-three--thin', active: 'ph--number-circle-three--duotone' },
15
+ { regular: 'ph--number-circle-four--thin', active: 'ph--number-circle-four--duotone' },
16
+ { regular: 'ph--number-circle-five--thin', active: 'ph--number-circle-five--duotone' },
17
+ { regular: 'ph--number-circle-six--thin', active: 'ph--number-circle-six--duotone' },
18
+ { regular: 'ph--number-circle-seven--thin', active: 'ph--number-circle-seven--duotone' },
19
+ { regular: 'ph--number-circle-eight--thin', active: 'ph--number-circle-eight--duotone' },
20
+ { regular: 'ph--number-circle-nine--thin', active: 'ph--number-circle-nine--duotone' },
21
+ ];
22
+
23
+ export type TabsProps = ThemedClassName<{
24
+ length: number;
25
+ selected?: number;
26
+ onSelect?: (index: number) => void;
27
+ }>;
28
+
29
+ export const Tabs = forwardRef<HTMLDivElement, TabsProps>(
30
+ ({ classNames, length, selected = 0, onSelect }, forwardedRef) => {
31
+ return (
32
+ <div
33
+ ref={forwardedRef}
34
+ className={mx('flex flex-col overflow-hidden outline-none', classNames)}
35
+ tabIndex={-1}
36
+ onKeyDown={(ev) => {
37
+ // TODO(burdon): Focus when open Toggle.
38
+ switch (ev.key) {
39
+ case 'ArrowDown':
40
+ case 'ArrowRight': {
41
+ ev.preventDefault();
42
+ ev.stopPropagation();
43
+ if (selected < length - 1) {
44
+ onSelect?.(selected + 1);
45
+ }
46
+ break;
47
+ }
48
+ case 'ArrowUp':
49
+ case 'ArrowLeft': {
50
+ ev.preventDefault();
51
+ ev.stopPropagation();
52
+ if (selected > 0) {
53
+ onSelect?.(selected - 1);
54
+ }
55
+ break;
56
+ }
57
+
58
+ case 'Enter': {
59
+ ev.preventDefault();
60
+ ev.stopPropagation();
61
+ onSelect?.(selected);
62
+ break;
63
+ }
64
+ }
65
+ }}
66
+ >
67
+ {Array.from({ length }).map((_, i) => {
68
+ const icon = numbers[i + 1];
69
+ return (
70
+ <div
71
+ key={i}
72
+ className={mx(
73
+ 'relative flex w-[24px] h-[28px] justify-center cursor-pointer text-subdued',
74
+ selected === i && '!text-cyan-550 !dark:text-cyan-300',
75
+ )}
76
+ >
77
+ {i < length - 1 && <div className='absolute left-[11.5px] top-[21px] w-[1px] h-[10px] bg-neutral-400' />}
78
+ <Icon
79
+ icon={selected === i ? icon.regular : icon.regular}
80
+ classNames='z-10 !p-0 !w-[24px] !h-[24px] outline-none'
81
+ onClick={() => onSelect?.(i)}
82
+ />
83
+ </div>
84
+ );
85
+ })}
86
+ </div>
87
+ );
88
+ },
89
+ );
@@ -71,7 +71,6 @@ const Render = ({ shrinkX, ...props }: ToggleContainerProps) => {
71
71
  <ToggleContainer
72
72
  {...props}
73
73
  shrinkX={shrinkX}
74
- toggle
75
74
  icon={
76
75
  running ? (
77
76
  <Icon icon={'ph--circle-notch--regular'} classNames='text-subdued ml-2 animate-spin' size={4} />
@@ -4,39 +4,38 @@
4
4
 
5
5
  import React, { type JSX, type PropsWithChildren, useEffect, useState } from 'react';
6
6
 
7
- import { Icon, type ThemedClassName } from '@dxos/react-ui';
7
+ import { Icon, useControlledState, type ThemedClassName } from '@dxos/react-ui';
8
8
  import { mx } from '@dxos/react-ui-theme';
9
9
 
10
10
  export type ToggleContainerProps = ThemedClassName<
11
11
  PropsWithChildren<{
12
12
  title?: string | JSX.Element;
13
13
  icon?: JSX.Element;
14
- toggle?: boolean;
15
- defaultOpen?: boolean;
14
+ open?: boolean;
16
15
  duration?: number;
17
16
  /** Should shrink the width when closed. */
18
17
  shrinkX?: boolean;
18
+ onChangeOpen?: (open: boolean) => void;
19
19
  }>
20
20
  >;
21
21
 
22
- // TODO(burdon): Externalize toggle state.
23
22
  export const ToggleContainer = ({
23
+ classNames,
24
24
  title,
25
25
  icon,
26
- toggle,
27
- defaultOpen,
26
+ open: _open,
28
27
  duration = 400,
29
28
  shrinkX = false,
30
29
  children,
31
- classNames,
30
+ onChangeOpen,
32
31
  }: ToggleContainerProps) => {
33
- const [expand, setExpand] = useState(defaultOpen || !toggle);
34
- const [expandX, setExpandX] = useState(shrinkX ? expand : true);
35
- const [expandY, setExpandY] = useState(expand);
32
+ const [open, setOpen] = useControlledState(_open);
33
+ const [expandX, setExpandX] = useState(shrinkX ? open : true);
34
+ const [expandY, setExpandY] = useState(open);
36
35
 
37
36
  useEffect(() => {
38
37
  let t: NodeJS.Timeout;
39
- if (expand) {
38
+ if (open) {
40
39
  if (shrinkX) {
41
40
  setExpandX(true);
42
41
  }
@@ -56,25 +55,31 @@ export const ToggleContainer = ({
56
55
  }
57
56
 
58
57
  return () => clearTimeout(t);
59
- }, [expand]);
58
+ }, [open]);
59
+
60
+ const handleToggle = () => {
61
+ if (onChangeOpen) {
62
+ onChangeOpen(!open);
63
+ } else {
64
+ setOpen((open) => !open);
65
+ }
66
+ };
60
67
 
61
68
  return (
62
69
  <div className={mx('overflow-hidden', classNames)}>
63
70
  {title && (
64
71
  <div
65
72
  className='flex gap-1 py-1 items-center text-sm text-subdued cursor-pointer select-none'
66
- onClick={toggle ? () => setExpand((open) => !open) : undefined}
73
+ onClick={handleToggle}
67
74
  >
68
- {toggle && (
69
- <div className='flex w-[24px] h-[24px] items-center justify-center'>
70
- <Icon
71
- size={4}
72
- icon={'ph--caret-right--regular'}
73
- style={{ transitionDuration: `${shrinkX ? duration * 2 : duration}ms` }}
74
- classNames={['transition transition-transform ease-in-out', expand ? 'rotate-90' : 'transform-none']}
75
- />
76
- </div>
77
- )}
75
+ <div className='flex w-[24px] h-[24px] items-center justify-center'>
76
+ <Icon
77
+ size={4}
78
+ icon={'ph--caret-right--regular'}
79
+ style={{ transitionDuration: `${shrinkX ? duration * 2 : duration}ms` }}
80
+ classNames={['transition transition-transform ease-in-out', open ? 'rotate-90' : 'transform-none']}
81
+ />
82
+ </div>
78
83
  <div className='flex-1 pis-1 pie-1 truncate'>{title}</div>
79
84
  {icon}
80
85
  </div>
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './StatusLine';
6
+ export * from './Tabbed';
7
+ export * from './ToggleContainer';
@@ -0,0 +1,50 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import '@dxos-theme';
6
+
7
+ import { type StoryObj, type Meta } from '@storybook/react';
8
+
9
+ import { withTheme } from '@dxos/storybook-utils';
10
+
11
+ import { Prompt } from './Prompt';
12
+
13
+ const meta: Meta<typeof Prompt> = {
14
+ title: 'plugins/plugin-automation/Prompt',
15
+ component: Prompt,
16
+ decorators: [withTheme],
17
+ parameters: {
18
+ layout: 'centered',
19
+ },
20
+ };
21
+
22
+ export default meta;
23
+
24
+ type Story = StoryObj<typeof Prompt>;
25
+
26
+ export const Default: Story = {
27
+ args: {
28
+ classNames: 'w-96 p-4 rounded outline outline-gray-200',
29
+ autoFocus: true,
30
+ onEnter: (text) => {
31
+ console.log('onEnter', text);
32
+ },
33
+ onSuggest: (text) => {
34
+ const trimmed = text.trim().toLowerCase();
35
+ if (trimmed.length < 2) {
36
+ return [];
37
+ }
38
+
39
+ const suggestions = [
40
+ 'Create a CRM',
41
+ 'Create a new project',
42
+ 'Find flights to Tokyo',
43
+ "Let's play chess",
44
+ 'Show me Paris on a map',
45
+ ];
46
+
47
+ return suggestions.filter((s) => s.toLowerCase().startsWith(text));
48
+ },
49
+ },
50
+ };
@@ -0,0 +1,36 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { type ThemedClassName, useThemeContext } from '@dxos/react-ui';
8
+ import {
9
+ createBasicExtensions,
10
+ createThemeExtensions,
11
+ useTextEditor,
12
+ type UseTextEditorProps,
13
+ } from '@dxos/react-ui-editor';
14
+ import { mx } from '@dxos/react-ui-theme';
15
+
16
+ import { createAutocompleteExtension, type AutocompleteOptions } from './prompt-autocomplete';
17
+
18
+ export type PromptProps = ThemedClassName<AutocompleteOptions & Pick<UseTextEditorProps, 'autoFocus'>>;
19
+
20
+ export const Prompt = ({ classNames, autoFocus, onEnter, onSuggest }: PromptProps) => {
21
+ const { themeMode } = useThemeContext();
22
+ const { parentRef } = useTextEditor({
23
+ autoFocus,
24
+ extensions: [
25
+ createBasicExtensions({
26
+ bracketMatching: false,
27
+ lineWrapping: false,
28
+ placeholder: 'Ask a question...',
29
+ }),
30
+ createThemeExtensions({ themeMode }),
31
+ createAutocompleteExtension({ onEnter, onSuggest }),
32
+ ],
33
+ });
34
+
35
+ return <div ref={parentRef} className={mx(classNames)} />;
36
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './Prompt';