@byline/ai 1.9.0

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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +4 -0
  3. package/dist/@types.d.ts +103 -0
  4. package/dist/@types.d.ts.map +1 -0
  5. package/dist/@types.js +68 -0
  6. package/dist/@types.js.map +1 -0
  7. package/dist/config/ai-config.d.ts +76 -0
  8. package/dist/config/ai-config.d.ts.map +1 -0
  9. package/dist/config/ai-config.js +108 -0
  10. package/dist/config/ai-config.js.map +1 -0
  11. package/dist/config/ai-config.test.node.d.ts +9 -0
  12. package/dist/config/ai-config.test.node.d.ts.map +1 -0
  13. package/dist/config/ai-config.test.node.js +31 -0
  14. package/dist/config/ai-config.test.node.js.map +1 -0
  15. package/dist/config/ai-provider.d.ts +17 -0
  16. package/dist/config/ai-provider.d.ts.map +1 -0
  17. package/dist/config/ai-provider.js +32 -0
  18. package/dist/config/ai-provider.js.map +1 -0
  19. package/dist/execute.d.ts +15 -0
  20. package/dist/execute.d.ts.map +1 -0
  21. package/dist/execute.js +473 -0
  22. package/dist/execute.js.map +1 -0
  23. package/dist/generate.d.ts +64 -0
  24. package/dist/generate.d.ts.map +1 -0
  25. package/dist/generate.js +235 -0
  26. package/dist/generate.js.map +1 -0
  27. package/dist/index.d.ts +28 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +43 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lexical-text-edits.d.ts +23 -0
  32. package/dist/lexical-text-edits.d.ts.map +1 -0
  33. package/dist/lexical-text-edits.js +62 -0
  34. package/dist/lexical-text-edits.js.map +1 -0
  35. package/dist/lib/logger.d.ts +10 -0
  36. package/dist/lib/logger.d.ts.map +1 -0
  37. package/dist/lib/logger.js +16 -0
  38. package/dist/lib/logger.js.map +1 -0
  39. package/dist/models/anthropic/anthropic-models.d.ts +14 -0
  40. package/dist/models/anthropic/anthropic-models.d.ts.map +1 -0
  41. package/dist/models/anthropic/anthropic-models.js +41 -0
  42. package/dist/models/anthropic/anthropic-models.js.map +1 -0
  43. package/dist/models/anthropic/anthropic.d.ts +9 -0
  44. package/dist/models/anthropic/anthropic.d.ts.map +1 -0
  45. package/dist/models/anthropic/anthropic.js +20 -0
  46. package/dist/models/anthropic/anthropic.js.map +1 -0
  47. package/dist/models/anthropic/generate-native.d.ts +59 -0
  48. package/dist/models/anthropic/generate-native.d.ts.map +1 -0
  49. package/dist/models/anthropic/generate-native.js +271 -0
  50. package/dist/models/anthropic/generate-native.js.map +1 -0
  51. package/dist/models/anthropic/generate-vercel.d.ts +59 -0
  52. package/dist/models/anthropic/generate-vercel.d.ts.map +1 -0
  53. package/dist/models/anthropic/generate-vercel.js +126 -0
  54. package/dist/models/anthropic/generate-vercel.js.map +1 -0
  55. package/dist/models/anthropic/generate.d.ts +16 -0
  56. package/dist/models/anthropic/generate.d.ts.map +1 -0
  57. package/dist/models/anthropic/generate.js +28 -0
  58. package/dist/models/anthropic/generate.js.map +1 -0
  59. package/dist/models/anthropic/generate.test.node.d.ts +9 -0
  60. package/dist/models/anthropic/generate.test.node.d.ts.map +1 -0
  61. package/dist/models/anthropic/generate.test.node.js +106 -0
  62. package/dist/models/anthropic/generate.test.node.js.map +1 -0
  63. package/dist/models/anthropic/patch-native.d.ts +33 -0
  64. package/dist/models/anthropic/patch-native.d.ts.map +1 -0
  65. package/dist/models/anthropic/patch-native.js +152 -0
  66. package/dist/models/anthropic/patch-native.js.map +1 -0
  67. package/dist/models/anthropic/patch-vercel.d.ts +33 -0
  68. package/dist/models/anthropic/patch-vercel.d.ts.map +1 -0
  69. package/dist/models/anthropic/patch-vercel.js +47 -0
  70. package/dist/models/anthropic/patch-vercel.js.map +1 -0
  71. package/dist/models/anthropic/patch.d.ts +12 -0
  72. package/dist/models/anthropic/patch.d.ts.map +1 -0
  73. package/dist/models/anthropic/patch.js +16 -0
  74. package/dist/models/anthropic/patch.js.map +1 -0
  75. package/dist/models/anthropic/patch.test.node.d.ts +9 -0
  76. package/dist/models/anthropic/patch.test.node.d.ts.map +1 -0
  77. package/dist/models/anthropic/patch.test.node.js +110 -0
  78. package/dist/models/anthropic/patch.test.node.js.map +1 -0
  79. package/dist/models/anthropic/schema.d.ts +212 -0
  80. package/dist/models/anthropic/schema.d.ts.map +1 -0
  81. package/dist/models/anthropic/schema.js +131 -0
  82. package/dist/models/anthropic/schema.js.map +1 -0
  83. package/dist/models/google/generate-native.d.ts +59 -0
  84. package/dist/models/google/generate-native.d.ts.map +1 -0
  85. package/dist/models/google/generate-native.js +244 -0
  86. package/dist/models/google/generate-native.js.map +1 -0
  87. package/dist/models/google/generate-vercel.d.ts +59 -0
  88. package/dist/models/google/generate-vercel.d.ts.map +1 -0
  89. package/dist/models/google/generate-vercel.js +133 -0
  90. package/dist/models/google/generate-vercel.js.map +1 -0
  91. package/dist/models/google/generate.d.ts +16 -0
  92. package/dist/models/google/generate.d.ts.map +1 -0
  93. package/dist/models/google/generate.js +28 -0
  94. package/dist/models/google/generate.js.map +1 -0
  95. package/dist/models/google/generate.test.node.d.ts +9 -0
  96. package/dist/models/google/generate.test.node.d.ts.map +1 -0
  97. package/dist/models/google/generate.test.node.js +106 -0
  98. package/dist/models/google/generate.test.node.js.map +1 -0
  99. package/dist/models/google/google-models.d.ts +14 -0
  100. package/dist/models/google/google-models.d.ts.map +1 -0
  101. package/dist/models/google/google-models.js +25 -0
  102. package/dist/models/google/google-models.js.map +1 -0
  103. package/dist/models/google/normalize-generated-doc.d.ts +10 -0
  104. package/dist/models/google/normalize-generated-doc.d.ts.map +1 -0
  105. package/dist/models/google/normalize-generated-doc.js +48 -0
  106. package/dist/models/google/normalize-generated-doc.js.map +1 -0
  107. package/dist/models/google/patch-native.d.ts +33 -0
  108. package/dist/models/google/patch-native.d.ts.map +1 -0
  109. package/dist/models/google/patch-native.js +164 -0
  110. package/dist/models/google/patch-native.js.map +1 -0
  111. package/dist/models/google/patch-vercel.d.ts +33 -0
  112. package/dist/models/google/patch-vercel.d.ts.map +1 -0
  113. package/dist/models/google/patch-vercel.js +49 -0
  114. package/dist/models/google/patch-vercel.js.map +1 -0
  115. package/dist/models/google/patch.d.ts +12 -0
  116. package/dist/models/google/patch.d.ts.map +1 -0
  117. package/dist/models/google/patch.js +16 -0
  118. package/dist/models/google/patch.js.map +1 -0
  119. package/dist/models/google/patch.test.node.d.ts +9 -0
  120. package/dist/models/google/patch.test.node.d.ts.map +1 -0
  121. package/dist/models/google/patch.test.node.js +110 -0
  122. package/dist/models/google/patch.test.node.js.map +1 -0
  123. package/dist/models/google/schema.d.ts +416 -0
  124. package/dist/models/google/schema.d.ts.map +1 -0
  125. package/dist/models/google/schema.js +254 -0
  126. package/dist/models/google/schema.js.map +1 -0
  127. package/dist/models/openai/generate-native.d.ts +65 -0
  128. package/dist/models/openai/generate-native.d.ts.map +1 -0
  129. package/dist/models/openai/generate-native.js +276 -0
  130. package/dist/models/openai/generate-native.js.map +1 -0
  131. package/dist/models/openai/generate-vercel.d.ts +59 -0
  132. package/dist/models/openai/generate-vercel.d.ts.map +1 -0
  133. package/dist/models/openai/generate-vercel.js +132 -0
  134. package/dist/models/openai/generate-vercel.js.map +1 -0
  135. package/dist/models/openai/generate.d.ts +16 -0
  136. package/dist/models/openai/generate.d.ts.map +1 -0
  137. package/dist/models/openai/generate.js +28 -0
  138. package/dist/models/openai/generate.js.map +1 -0
  139. package/dist/models/openai/generate.test.node.d.ts +9 -0
  140. package/dist/models/openai/generate.test.node.d.ts.map +1 -0
  141. package/dist/models/openai/generate.test.node.js +106 -0
  142. package/dist/models/openai/generate.test.node.js.map +1 -0
  143. package/dist/models/openai/openai-models.d.ts +14 -0
  144. package/dist/models/openai/openai-models.d.ts.map +1 -0
  145. package/dist/models/openai/openai-models.js +23 -0
  146. package/dist/models/openai/openai-models.js.map +1 -0
  147. package/dist/models/openai/patch-native.d.ts +33 -0
  148. package/dist/models/openai/patch-native.d.ts.map +1 -0
  149. package/dist/models/openai/patch-native.js +151 -0
  150. package/dist/models/openai/patch-native.js.map +1 -0
  151. package/dist/models/openai/patch-vercel.d.ts +33 -0
  152. package/dist/models/openai/patch-vercel.d.ts.map +1 -0
  153. package/dist/models/openai/patch-vercel.js +49 -0
  154. package/dist/models/openai/patch-vercel.js.map +1 -0
  155. package/dist/models/openai/patch.d.ts +12 -0
  156. package/dist/models/openai/patch.d.ts.map +1 -0
  157. package/dist/models/openai/patch.js +16 -0
  158. package/dist/models/openai/patch.js.map +1 -0
  159. package/dist/models/openai/patch.test.node.d.ts +9 -0
  160. package/dist/models/openai/patch.test.node.d.ts.map +1 -0
  161. package/dist/models/openai/patch.test.node.js +110 -0
  162. package/dist/models/openai/patch.test.node.js.map +1 -0
  163. package/dist/models/openai/schema.d.ts +460 -0
  164. package/dist/models/openai/schema.d.ts.map +1 -0
  165. package/dist/models/openai/schema.js +327 -0
  166. package/dist/models/openai/schema.js.map +1 -0
  167. package/dist/patch.d.ts +45 -0
  168. package/dist/patch.d.ts.map +1 -0
  169. package/dist/patch.js +138 -0
  170. package/dist/patch.js.map +1 -0
  171. package/dist/plugins/ai-plugin-base.d.ts +40 -0
  172. package/dist/plugins/ai-plugin-base.d.ts.map +1 -0
  173. package/dist/plugins/ai-plugin-base.js +218 -0
  174. package/dist/plugins/ai-plugin-base.js.map +1 -0
  175. package/dist/plugins/ai-plugin.css +181 -0
  176. package/dist/plugins/lexical/create-empty-editor-state.d.ts +32 -0
  177. package/dist/plugins/lexical/create-empty-editor-state.d.ts.map +1 -0
  178. package/dist/plugins/lexical/create-empty-editor-state.js +51 -0
  179. package/dist/plugins/lexical/create-empty-editor-state.js.map +1 -0
  180. package/dist/plugins/lexical/import-html.d.ts +10 -0
  181. package/dist/plugins/lexical/import-html.d.ts.map +1 -0
  182. package/dist/plugins/lexical/import-html.js +31 -0
  183. package/dist/plugins/lexical/import-html.js.map +1 -0
  184. package/dist/plugins/lexical/index.d.ts +9 -0
  185. package/dist/plugins/lexical/index.d.ts.map +1 -0
  186. package/dist/plugins/lexical/index.js +9 -0
  187. package/dist/plugins/lexical/index.js.map +1 -0
  188. package/dist/plugins/lexical/plugin.d.ts +11 -0
  189. package/dist/plugins/lexical/plugin.d.ts.map +1 -0
  190. package/dist/plugins/lexical/plugin.js +305 -0
  191. package/dist/plugins/lexical/plugin.js.map +1 -0
  192. package/dist/plugins/storage.d.ts +18 -0
  193. package/dist/plugins/storage.d.ts.map +1 -0
  194. package/dist/plugins/storage.js +57 -0
  195. package/dist/plugins/storage.js.map +1 -0
  196. package/dist/plugins/streaming-preview.d.ts +12 -0
  197. package/dist/plugins/streaming-preview.d.ts.map +1 -0
  198. package/dist/plugins/streaming-preview.js +24 -0
  199. package/dist/plugins/streaming-preview.js.map +1 -0
  200. package/dist/plugins/text/index.d.ts +9 -0
  201. package/dist/plugins/text/index.d.ts.map +1 -0
  202. package/dist/plugins/text/index.js +9 -0
  203. package/dist/plugins/text/index.js.map +1 -0
  204. package/dist/plugins/text/plugin.d.ts +18 -0
  205. package/dist/plugins/text/plugin.d.ts.map +1 -0
  206. package/dist/plugins/text/plugin.js +261 -0
  207. package/dist/plugins/text/plugin.js.map +1 -0
  208. package/dist/prompts.d.ts +30 -0
  209. package/dist/prompts.d.ts.map +1 -0
  210. package/dist/prompts.js +83 -0
  211. package/dist/prompts.js.map +1 -0
  212. package/dist/schemas/lexical-json-schema.d.ts +68 -0
  213. package/dist/schemas/lexical-json-schema.d.ts.map +1 -0
  214. package/dist/schemas/lexical-json-schema.js +434 -0
  215. package/dist/schemas/lexical-json-schema.js.map +1 -0
  216. package/dist/scripts/list-models.d.ts +9 -0
  217. package/dist/scripts/list-models.d.ts.map +1 -0
  218. package/dist/scripts/list-models.js +55 -0
  219. package/dist/scripts/list-models.js.map +1 -0
  220. package/dist/server.d.ts +25 -0
  221. package/dist/server.d.ts.map +1 -0
  222. package/dist/server.js +22 -0
  223. package/dist/server.js.map +1 -0
  224. package/dist/utils/convert-to-lexical.d.ts +62 -0
  225. package/dist/utils/convert-to-lexical.d.ts.map +1 -0
  226. package/dist/utils/convert-to-lexical.js +210 -0
  227. package/dist/utils/convert-to-lexical.js.map +1 -0
  228. package/dist/utils/create-empty-editor-state.d.ts +32 -0
  229. package/dist/utils/create-empty-editor-state.d.ts.map +1 -0
  230. package/dist/utils/create-empty-editor-state.js +51 -0
  231. package/dist/utils/create-empty-editor-state.js.map +1 -0
  232. package/dist/utils/has-text.d.ts +10 -0
  233. package/dist/utils/has-text.d.ts.map +1 -0
  234. package/dist/utils/has-text.js +35 -0
  235. package/dist/utils/has-text.js.map +1 -0
  236. package/dist/utils/has-text.test.d.ts +9 -0
  237. package/dist/utils/has-text.test.d.ts.map +1 -0
  238. package/dist/utils/has-text.test.js +69 -0
  239. package/dist/utils/has-text.test.js.map +1 -0
  240. package/dist/utils/is-object-schema.d.ts +17 -0
  241. package/dist/utils/is-object-schema.d.ts.map +1 -0
  242. package/dist/utils/is-object-schema.js +19 -0
  243. package/dist/utils/is-object-schema.js.map +1 -0
  244. package/dist/utils/lexical-text-edits.d.ts +23 -0
  245. package/dist/utils/lexical-text-edits.d.ts.map +1 -0
  246. package/dist/utils/lexical-text-edits.js +62 -0
  247. package/dist/utils/lexical-text-edits.js.map +1 -0
  248. package/package.json +111 -0
@@ -0,0 +1,261 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * This Source Code is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+ *
8
+ * Copyright (c) Infonomic Company Limited
9
+ */
10
+ import * as React from 'react';
11
+ import { useCallback } from 'react';
12
+ import { useAiPublicConfig } from '../../config/ai-provider';
13
+ import { AiPluginBase } from '../ai-plugin-base';
14
+ const emptyInstructionState = {
15
+ prompt: '',
16
+ editor: null,
17
+ errors: {},
18
+ status: 'idle',
19
+ lastRun: null,
20
+ };
21
+ export const AiPluginText = React.memo(function AiPlugin(props) {
22
+ const { onApplyResult, onClearInput } = props;
23
+ const aiConfig = useAiPublicConfig();
24
+ const applyResult = useCallback((nextState) => {
25
+ if (nextState.status !== 'success')
26
+ return;
27
+ if (typeof nextState.text !== 'string')
28
+ return;
29
+ onApplyResult?.(nextState.text);
30
+ }, [onApplyResult]);
31
+ const handleOnSubmit = useCallback(async (context) => {
32
+ const { prompt, mode, provider, model, sdk, isPending, setIsPending, setInstructionState, abortControllerRef, } = context;
33
+ if (!prompt.trim())
34
+ return;
35
+ if (isPending)
36
+ return;
37
+ // Cancel any previous in-flight request before starting a new one.
38
+ abortControllerRef.current?.abort();
39
+ const abortController = new AbortController();
40
+ abortControllerRef.current = abortController;
41
+ setIsPending(true);
42
+ setInstructionState((prev) => ({ ...prev, status: 'idle', errors: {}, message: undefined }));
43
+ const inputText = props.inputText ?? '';
44
+ try {
45
+ const payload = {
46
+ params: {
47
+ prompt: prompt,
48
+ mode,
49
+ input: {
50
+ type: 'text',
51
+ text: inputText,
52
+ },
53
+ sdk,
54
+ provider,
55
+ model,
56
+ output: {
57
+ type: 'text',
58
+ length: 'short',
59
+ maxLength: 200,
60
+ },
61
+ },
62
+ options: {
63
+ streaming: false,
64
+ },
65
+ };
66
+ const fetchImpl = aiConfig.fetch ?? fetch;
67
+ const response = await fetchImpl(aiConfig.endpoint, {
68
+ method: 'POST',
69
+ headers: {
70
+ 'content-type': 'application/json',
71
+ ...(aiConfig.headers ?? {}),
72
+ },
73
+ signal: abortController.signal,
74
+ body: JSON.stringify(payload),
75
+ });
76
+ if (response.ok === false) {
77
+ console.error('AI Plugin request failed with status', response.status);
78
+ setInstructionState({
79
+ ...emptyInstructionState,
80
+ status: 'failed',
81
+ message: 'There was a problem submitting your instructions.',
82
+ errors: {},
83
+ });
84
+ }
85
+ const data = (await response.json());
86
+ // console.log('AI Plugin response data', data)
87
+ setInstructionState(data);
88
+ applyResult(data);
89
+ }
90
+ catch (error) {
91
+ const err = error;
92
+ if (err?.name === 'AbortError') {
93
+ setInstructionState((prev) => ({
94
+ ...prev,
95
+ status: 'idle',
96
+ message: 'Cancelled.',
97
+ errors: {},
98
+ }));
99
+ }
100
+ else {
101
+ setInstructionState({
102
+ ...emptyInstructionState,
103
+ status: 'failed',
104
+ message: 'There was a problem submitting your instructions.',
105
+ errors: {},
106
+ });
107
+ }
108
+ }
109
+ finally {
110
+ setIsPending(false);
111
+ abortControllerRef.current = null;
112
+ }
113
+ }, [aiConfig, applyResult, props.inputText]);
114
+ const handleOnSubmitStreaming = useCallback(async (context) => {
115
+ const { prompt, mode, provider, model, sdk, isPending, setIsPending, setInstructionState, abortControllerRef, appendStreamPreview, resetStreamPreview, } = context;
116
+ if (!prompt.trim())
117
+ return;
118
+ if (isPending)
119
+ return;
120
+ // Cancel any previous in-flight request before starting a new one.
121
+ abortControllerRef.current?.abort();
122
+ const abortController = new AbortController();
123
+ abortControllerRef.current = abortController;
124
+ setIsPending(true);
125
+ resetStreamPreview();
126
+ setInstructionState((prev) => ({ ...prev, status: 'idle', errors: {}, message: undefined }));
127
+ const inputText = props.inputText ?? '';
128
+ try {
129
+ const payload = {
130
+ params: {
131
+ prompt: prompt,
132
+ mode,
133
+ input: {
134
+ type: 'text',
135
+ text: inputText,
136
+ },
137
+ sdk,
138
+ provider,
139
+ model,
140
+ output: {
141
+ type: 'text',
142
+ length: 'short',
143
+ maxLength: 200,
144
+ },
145
+ },
146
+ options: {
147
+ streaming: true,
148
+ },
149
+ };
150
+ const fetchImpl = aiConfig.fetch ?? fetch;
151
+ const response = await fetchImpl(aiConfig.endpoint, {
152
+ method: 'POST',
153
+ headers: {
154
+ 'content-type': 'application/json',
155
+ ...(aiConfig.headers ?? {}),
156
+ },
157
+ signal: abortController.signal,
158
+ body: JSON.stringify(payload),
159
+ });
160
+ if (response.ok === false) {
161
+ console.error('AI Plugin streaming request failed with status', response.status);
162
+ setInstructionState({
163
+ ...emptyInstructionState,
164
+ status: 'failed',
165
+ message: 'There was a problem submitting your instructions.',
166
+ errors: {},
167
+ });
168
+ }
169
+ if (response.body == null) {
170
+ console.log('Streaming request has no body - falling back to non-streaming handling.');
171
+ const data = (await response.json());
172
+ setInstructionState(data);
173
+ applyResult(data);
174
+ // applyInstructionStateToEditor(data, setInstructionState)
175
+ return;
176
+ }
177
+ const reader = response.body.getReader();
178
+ const decoder = new TextDecoder();
179
+ let buffer = '';
180
+ let finalState = null;
181
+ while (true) {
182
+ const { value, done } = await reader.read();
183
+ // console.log('Streaming response read', { value, done })
184
+ if (done)
185
+ break;
186
+ buffer += decoder.decode(value, { stream: true });
187
+ const lines = buffer.split('\n');
188
+ buffer = lines.pop() ?? '';
189
+ // console.log('Streaming response decoded lines', { lines })
190
+ for (const line of lines) {
191
+ const trimmed = line.trim();
192
+ if (!trimmed)
193
+ continue;
194
+ try {
195
+ const payload = JSON.parse(trimmed);
196
+ // console.log('Streaming response payload per line', payload)
197
+ if (payload.type === 'delta' && typeof payload.text === 'string') {
198
+ appendStreamPreview(payload.text);
199
+ }
200
+ if (payload.type === 'final' && payload.state) {
201
+ finalState = payload.state;
202
+ }
203
+ }
204
+ catch {
205
+ // ignore malformed chunks
206
+ }
207
+ }
208
+ }
209
+ if (finalState) {
210
+ setInstructionState(finalState);
211
+ applyResult(finalState);
212
+ }
213
+ else {
214
+ setInstructionState({
215
+ ...emptyInstructionState,
216
+ status: 'failed',
217
+ message: 'There was a problem submitting your instructions.',
218
+ errors: {},
219
+ });
220
+ }
221
+ }
222
+ catch (error) {
223
+ const err = error;
224
+ if (err?.name === 'AbortError') {
225
+ setInstructionState((prev) => ({
226
+ ...prev,
227
+ status: 'idle',
228
+ message: 'Cancelled.',
229
+ errors: {},
230
+ }));
231
+ }
232
+ else {
233
+ setInstructionState({
234
+ ...emptyInstructionState,
235
+ status: 'failed',
236
+ message: 'There was a problem submitting your instructions.',
237
+ errors: {},
238
+ });
239
+ }
240
+ }
241
+ finally {
242
+ setIsPending(false);
243
+ resetStreamPreview();
244
+ abortControllerRef.current = null;
245
+ }
246
+ }, [aiConfig, applyResult, props.inputText]);
247
+ function handleOnDebug() {
248
+ // eslint-disable-next-line no-console
249
+ // console.log(JSON.stringify(activeEditor.getEditorState()))
250
+ }
251
+ // function handleOnFullReset(): void {
252
+ // activeEditor.dispatchCommand(CLEAR_EDITOR_COMMAND, undefined)
253
+ // activeEditor.focus()
254
+ // }
255
+ const handleOnClear = () => {
256
+ onClearInput?.();
257
+ };
258
+ const helpContent = (_jsxs(_Fragment, { children: [_jsx("p", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: "This is an experimental feature that allows you to generate and edit content using AI." }), _jsx("p", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: "It can currently be used to generate new content as well as translate, summarize, rephrase, check spelling, grammar and clarity in existing text." }), _jsx("p", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: "Here are a few example prompts:" }), _jsxs("ul", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: [_jsx("li", { children: "Check for spelling, grammar and clarity." }), _jsx("li", { children: "Translate into Thai (English, French, Spanish, Vietnamese, Laos, Khmer etc.)." }), _jsx("li", { children: "Rephrase to make this more engaging." }), _jsx("li", { children: "Write a haiku poem about the wind and trees." })] }), _jsxs("p", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: [_jsx("strong", { style: { color: 'var(--primary-500)' }, children: "Important:" }), " The AI operates in three modes:"] }), _jsxs("ol", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: [_jsxs("li", { children: [_jsx("strong", { children: "New:" }), " The AI will generate new content based solely on the prompt."] }), _jsxs("li", { children: [_jsx("strong", { children: "With Context:" }), " The AI will generate new content based on the prompt and the existing content."] }), _jsxs("li", { children: [_jsx("strong", { children: "Modify:" }), " The AI will suggest modifications to the existing content based on the prompt - preserving the original structure. Use this mode for translations, grammar, clarity, and tone edits."] })] }), _jsxs("p", { style: { margin: '0.5rem 0', fontSize: '16px' }, children: [_jsx("strong", { style: { color: 'var(--primary-500)' }, children: "Note:" }), " At the time of writing - 2026-01-24 - OpenAI GPT-5.2 is likely the strongest all-round model for both generating new content, as well as for modifying / translating existing content. Anthropic's Sonnet model is also very capable, especially for editing existing text. Google's Gemini models are improving rapidly, but still seem to lag slightly behind in our tests."] }), _jsx("p", { className: "ai-plugin__disclaimer--modal", children: "Warning: AI-generated content may be inaccurate, incomplete, or misleading. Please use caution and verify information from reliable sources." })] }));
259
+ return (_jsx(AiPluginBase, { helpTitle: "AI Help", helpContent: helpContent, onSubmit: handleOnSubmit, onSubmitStreaming: handleOnSubmitStreaming, onClear: handleOnClear, onDebug: handleOnDebug, open: props.open, defaultOpen: props.defaultOpen, onOpenChange: props.onOpenChange }));
260
+ });
261
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/text/plugin.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ /**
9
+ * Prompt for PATCH requests to update text nodes in a Lexical document.
10
+ * (structured content)
11
+ */
12
+ export declare const buildPatchSystemPrompt: () => string;
13
+ /**
14
+ * Prompt for GENERATE requests to create a new Lexical document.
15
+ * (structured content)
16
+ */
17
+ export declare const buildGenerateSystemPrompt: () => string;
18
+ /**
19
+ * System prompt for HTML
20
+ * (html)
21
+ */
22
+ export declare const buildGenerateHtmlSystemPrompt: () => string;
23
+ export declare const buildGenerateHtmlUserPrompt: (instruction: string) => string;
24
+ /**
25
+ * System prompt for plain text
26
+ * (text)
27
+ */
28
+ export declare const buildGenerateTextSystemPrompt: () => string;
29
+ export declare const buildGenerateTextUserPrompt: (instruction: string) => string;
30
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,cAelC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,cAoBrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,cAOzC,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,aAAa,MAAM,WAE9D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,cAOzC,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,aAAa,MAAM,WAE9D,CAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ /**
9
+ * Prompt for PATCH requests to update text nodes in a Lexical document.
10
+ * (structured content)
11
+ */
12
+ export const buildPatchSystemPrompt = () => {
13
+ return [
14
+ 'You are editing a Lexical document by updating text-node strings.',
15
+ 'You will receive an array of text nodes with numeric IDs and their current text.',
16
+ '',
17
+ 'RULES:',
18
+ '- Return EXACTLY one edit per input node ID (same count, same order).',
19
+ '- Do not add, remove, or reorder IDs.',
20
+ '- Update the text field for each node according to the user instruction.',
21
+ '',
22
+ 'HANDLING EXISTING CONTENT:',
23
+ '- Preserve the structure: do not merge or split text across nodes.',
24
+ "- Apply the instruction to each node independently but consider the overall context of input text and the user's prompt.",
25
+ '- If a node is empty in the input, keep it empty unless the instruction explicitly requires filling it.',
26
+ ].join('\n');
27
+ };
28
+ /**
29
+ * Prompt for GENERATE requests to create a new Lexical document.
30
+ * (structured content)
31
+ */
32
+ export const buildGenerateSystemPrompt = () => {
33
+ return [
34
+ 'You are generating a rich text document using a shallow block structure.',
35
+ 'Return JSON only, matching the provided JSON Schema.',
36
+ '',
37
+ 'RULES:',
38
+ '- Use title for the document title (or null if none).',
39
+ '- blocks is a flat array of block objects.',
40
+ '- Avoid recursion: do not nest blocks inside blocks except quote.blocks and list.items[].blocks.',
41
+ '- Keep unions shallow by using kind discriminator fields.',
42
+ "- Paragraph align must be one of: start, center, right (never 'left').",
43
+ '',
44
+ 'INLINE RULES:',
45
+ '- Each inline is one of: text, link, br.',
46
+ '- marks must always be present, with all four boolean fields.',
47
+ '',
48
+ 'LIST/QUOTE:',
49
+ '- Quote blocks contain paragraphs only.',
50
+ '- List items contain paragraphs only and indent is 0 or 1.',
51
+ ].join('\n');
52
+ };
53
+ /**
54
+ * System prompt for HTML
55
+ * (html)
56
+ */
57
+ export const buildGenerateHtmlSystemPrompt = () => {
58
+ return [
59
+ 'You are writing HTML for a rich text editor.',
60
+ 'Return ONLY valid HTML (no Markdown, no code fences).',
61
+ 'Use semantic tags: h1/h2/h3, p, ul/ol/li, blockquote, strong, em.',
62
+ 'Do not include <html>, <head>, or <body> wrappers.',
63
+ ].join('\n');
64
+ };
65
+ export const buildGenerateHtmlUserPrompt = (instruction) => {
66
+ return `Write HTML for the following request:\n\n${instruction}`;
67
+ };
68
+ /**
69
+ * System prompt for plain text
70
+ * (text)
71
+ */
72
+ export const buildGenerateTextSystemPrompt = () => {
73
+ return [
74
+ 'You are writing plain text.',
75
+ 'Return ONLY plain text (no HTML, no Markdown, no code fences, no surrounding quotes).',
76
+ 'If the user provides constraints (for example: a maximum character length), you MUST follow them.',
77
+ 'If a maximum character length is specified, ensure the output is at most that many characters.',
78
+ ].join('\n');
79
+ };
80
+ export const buildGenerateTextUserPrompt = (instruction) => {
81
+ return `Write plain text for the following request:\n\n${instruction}`;
82
+ };
83
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,OAAO;QACL,mEAAmE;QACnE,kFAAkF;QAClF,EAAE;QACF,QAAQ;QACR,uEAAuE;QACvE,uCAAuC;QACvC,0EAA0E;QAC1E,EAAE;QACF,4BAA4B;QAC5B,oEAAoE;QACpE,0HAA0H;QAC1H,yGAAyG;KAC1G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,OAAO;QACL,0EAA0E;QAC1E,sDAAsD;QACtD,EAAE;QACF,QAAQ;QACR,uDAAuD;QACvD,4CAA4C;QAC5C,kGAAkG;QAClG,2DAA2D;QAC3D,wEAAwE;QACxE,EAAE;QACF,eAAe;QACf,0CAA0C;QAC1C,+DAA+D;QAC/D,EAAE;QACF,aAAa;QACb,yCAAyC;QACzC,4DAA4D;KAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAChD,OAAO;QACL,8CAA8C;QAC9C,uDAAuD;QACvD,mEAAmE;QACnE,oDAAoD;KACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,WAAmB,EAAE,EAAE;IACjE,OAAO,4CAA4C,WAAW,EAAE,CAAA;AAClE,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAChD,OAAO;QACL,6BAA6B;QAC7B,uFAAuF;QACvF,mGAAmG;QACnG,gGAAgG;KACjG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,WAAmB,EAAE,EAAE;IACjE,OAAO,kDAAkD,WAAW,EAAE,CAAA;AACxE,CAAC,CAAA"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+ /**
9
+ * Credit: Adapted from https://github.com/ashbuilds/payload-ai
10
+ * types to avoid direct dependency and circular dependencies.
11
+ * Portions copyright Ash Builds, licensed under MIT.
12
+ */
13
+ /**
14
+ * JSON Schema type definition (JSON Schema Draft 7 compatible)
15
+ * This avoids a direct dependency on the OpenAI SDK for type definitions.
16
+ */
17
+ export type JSONSchema7 = {
18
+ $schema?: string;
19
+ $ref?: string;
20
+ type?: string | string[];
21
+ enum?: unknown[];
22
+ const?: unknown;
23
+ properties?: Record<string, JSONSchema7>;
24
+ additionalProperties?: boolean | JSONSchema7;
25
+ required?: string[];
26
+ items?: JSONSchema7 | JSONSchema7[];
27
+ anyOf?: JSONSchema7[];
28
+ oneOf?: JSONSchema7[];
29
+ allOf?: JSONSchema7[];
30
+ not?: JSONSchema7;
31
+ definitions?: Record<string, JSONSchema7>;
32
+ description?: string;
33
+ examples?: unknown[];
34
+ default?: unknown;
35
+ format?: string;
36
+ minimum?: number;
37
+ maximum?: number;
38
+ minLength?: number;
39
+ maxLength?: number;
40
+ pattern?: string;
41
+ [key: string]: unknown;
42
+ };
43
+ export interface LexicalNodeSchema extends JSONSchema7 {
44
+ $schema?: string;
45
+ additionalProperties?: boolean;
46
+ definitions?: Record<string, any>;
47
+ properties: {
48
+ [key: string]: any;
49
+ children?: {
50
+ items: {
51
+ $ref?: string;
52
+ anyOf?: {
53
+ $ref: string;
54
+ }[];
55
+ };
56
+ type: 'array';
57
+ };
58
+ type?: {
59
+ enum: string[];
60
+ type: 'string';
61
+ };
62
+ };
63
+ required?: string[];
64
+ type: 'object';
65
+ }
66
+ export declare const documentSchema: LexicalNodeSchema;
67
+ export declare const lexicalJsonSchema: (customNodes: JSONSchema7[] | undefined) => LexicalNodeSchema;
68
+ //# sourceMappingURL=lexical-json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexical-json-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/lexical-json-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACxC,oBAAoB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IACnC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAUD,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;QAClB,QAAQ,CAAC,EAAE;YACT,KAAK,EAAE;gBACL,IAAI,CAAC,EAAE,MAAM,CAAA;gBACb,KAAK,CAAC,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAA;iBAAE,EAAE,CAAA;aAC3B,CAAA;YACD,IAAI,EAAE,OAAO,CAAA;SACd,CAAA;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,MAAM,EAAE,CAAA;YACd,IAAI,EAAE,QAAQ,CAAA;SACf,CAAA;KACF,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,IAAI,EAAE,QAAQ,CAAA;CACf;AAED,eAAO,MAAM,cAAc,EAAE,iBA8Y5B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,aAAa,WAAW,EAAE,GAAG,SAAS,sBAyBvE,CAAA"}