@pilotiq/tiptap 3.4.0 → 3.6.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 (39) hide show
  1. package/dist/extensions/AiInlineDiffExtension.d.ts +82 -0
  2. package/dist/extensions/AiInlineDiffExtension.d.ts.map +1 -0
  3. package/dist/extensions/AiInlineDiffExtension.js +205 -0
  4. package/dist/extensions/AiInlineDiffExtension.js.map +1 -0
  5. package/dist/extensions/AiSuggestionExtension.d.ts.map +1 -1
  6. package/dist/extensions/AiSuggestionExtension.js +108 -0
  7. package/dist/extensions/AiSuggestionExtension.js.map +1 -1
  8. package/dist/markdownExtension.js +0 -1
  9. package/dist/react/AiSuggestionBanner.d.ts +72 -0
  10. package/dist/react/AiSuggestionBanner.d.ts.map +1 -0
  11. package/dist/react/AiSuggestionBanner.js +72 -0
  12. package/dist/react/AiSuggestionBanner.js.map +1 -0
  13. package/dist/react/CollabTextRenderer.d.ts.map +1 -1
  14. package/dist/react/CollabTextRenderer.js +62 -27
  15. package/dist/react/CollabTextRenderer.js.map +1 -1
  16. package/dist/react/MarkdownEditor.d.ts.map +1 -1
  17. package/dist/react/MarkdownEditor.js +62 -7
  18. package/dist/react/MarkdownEditor.js.map +1 -1
  19. package/dist/react/TiptapEditor.d.ts.map +1 -1
  20. package/dist/react/TiptapEditor.js +47 -5
  21. package/dist/react/TiptapEditor.js.map +1 -1
  22. package/dist/react/useAiInlineDiff.d.ts +57 -0
  23. package/dist/react/useAiInlineDiff.d.ts.map +1 -0
  24. package/dist/react/useAiInlineDiff.js +121 -0
  25. package/dist/react/useAiInlineDiff.js.map +1 -0
  26. package/dist/react/useAiSuggestionBridge.d.ts +37 -1
  27. package/dist/react/useAiSuggestionBridge.d.ts.map +1 -1
  28. package/dist/react/useAiSuggestionBridge.js +63 -32
  29. package/dist/react/useAiSuggestionBridge.js.map +1 -1
  30. package/package.json +26 -24
  31. package/src/extensions/AiInlineDiffExtension.ts +263 -0
  32. package/src/extensions/AiSuggestionExtension.ts +107 -0
  33. package/src/react/AiSuggestionBanner.tsx +184 -0
  34. package/src/react/CollabTextRenderer.tsx +61 -27
  35. package/src/react/MarkdownEditor.tsx +62 -6
  36. package/src/react/TiptapEditor.tsx +48 -4
  37. package/src/react/useAiInlineDiff.ts +146 -0
  38. package/src/react/useAiSuggestionBridge.ts +105 -9
  39. package/dist/markdownExtension.js.map +0 -7
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Inline-diff visualization for whole-field AI suggestions.
3
+ *
4
+ * Sibling to `AiSuggestionExtension`, which handles producer-supplied
5
+ * range suggestions (surgical edits with `meta.editorRange`) via the
6
+ * inline chip widget. This extension handles the *whole-field* case:
7
+ * the AI proposes a new document and the user reviews the structural
8
+ * delta (added paragraphs, deleted text, mark changes, etc.) before
9
+ * accepting or rejecting via the host-mounted `<AiSuggestionBanner>`.
10
+ *
11
+ * Architecture:
12
+ * 1. `startAiInlineDiff(id, newDoc)` captures the current doc as the
13
+ * baseline, replaces the doc body with `newDoc`'s content (so the
14
+ * editor surface IS the proposed state), and initializes a
15
+ * `prosemirror-changeset` tracking the original-to-current
16
+ * transition.
17
+ * 2. The plugin appendTransaction hook keeps the changeset in sync
18
+ * with any further transactions while the diff is pending — e.g.
19
+ * y-prosemirror remote edits arriving during review. (Rare on
20
+ * whole-field flows but free.)
21
+ * 3. A decorations spec walks `ChangeSet.changes` and emits:
22
+ * - inline green-background decorations on inserted ranges
23
+ * - widget decorations rendering the *deleted* text struck
24
+ * through next to the insert point (the deleted content
25
+ * isn't in the current doc, so a widget is the only way to
26
+ * surface it)
27
+ * 4. `acceptAiInlineDiff()` clears the plugin state — the current
28
+ * doc is the accepted state.
29
+ * 5. `rejectAiInlineDiff()` replaces the doc back to the baseline
30
+ * via a single transaction and clears state.
31
+ *
32
+ * For Tiptap Pro parity. See `[[project_pilotiq_text_field_tiptap_rules]]`.
33
+ */
34
+ import { Extension } from '@tiptap/core';
35
+ import { PluginKey } from '@tiptap/pm/state';
36
+ import type { EditorState } from '@tiptap/pm/state';
37
+ import type { Node as ProseMirrorNode, Slice } from '@tiptap/pm/model';
38
+ import { ChangeSet } from 'prosemirror-changeset';
39
+ declare module '@tiptap/core' {
40
+ interface Commands<ReturnType> {
41
+ aiInlineDiff: {
42
+ /**
43
+ * Start the inline-diff review session. Snapshots the current
44
+ * doc as the baseline, replaces the doc with `newDocSlice`'s
45
+ * content, and shows the diff overlay.
46
+ *
47
+ * `id` is the host-side `PendingSuggestion.id` — used so the
48
+ * banner / approve handlers can correlate the editor state with
49
+ * the queue entry.
50
+ */
51
+ startAiInlineDiff: (id: string, newDocSlice: Slice) => ReturnType;
52
+ /** Clear diff state. Current doc IS the accepted state. */
53
+ acceptAiInlineDiff: () => ReturnType;
54
+ /** Revert doc to the captured baseline and clear diff state. */
55
+ rejectAiInlineDiff: () => ReturnType;
56
+ };
57
+ }
58
+ }
59
+ interface DiffState {
60
+ id: string;
61
+ /** Original doc captured at `startAiInlineDiff` time — used for revert. */
62
+ baseline: ProseMirrorNode;
63
+ /** ChangeSet accumulating diffs since baseline. */
64
+ changeset: ChangeSet;
65
+ }
66
+ export declare const aiInlineDiffPluginKey: PluginKey<DiffState | null>;
67
+ /** Read the active diff state, if any. Public for hosts that want to
68
+ * branch their banner UI on "diff active" vs "diff inactive". */
69
+ export declare function getAiInlineDiffState(state: EditorState): DiffState | null;
70
+ export interface AiInlineDiffExtensionOptions {
71
+ /**
72
+ * Class prefix for inline-diff decorations. Defaults to
73
+ * `'pilotiq-ai-diff'`, producing:
74
+ * - `pilotiq-ai-diff-inserted` (green-background span on new ranges)
75
+ * - `pilotiq-ai-diff-deleted` (widget DOM root for deleted text)
76
+ * - `pilotiq-ai-diff-deleted-text` (the strikethrough span inside)
77
+ */
78
+ classPrefix?: string;
79
+ }
80
+ export declare const AiInlineDiffExtension: Extension<AiInlineDiffExtensionOptions, any>;
81
+ export {};
82
+ //# sourceMappingURL=AiInlineDiffExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiInlineDiffExtension.d.ts","sourceRoot":"","sources":["../../src/extensions/AiInlineDiffExtension.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAA;AAEhE,OAAO,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,YAAY,EAAE;YACZ;;;;;;;;eAQG;YACH,iBAAiB,EAAG,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK,UAAU,CAAA;YAClE,2DAA2D;YAC3D,kBAAkB,EAAE,MAAM,UAAU,CAAA;YACpC,gEAAgE;YAChE,kBAAkB,EAAE,MAAM,UAAU,CAAA;SACrC,CAAA;KACF;CACF;AAED,UAAU,SAAS;IACjB,EAAE,EAAS,MAAM,CAAA;IACjB,2EAA2E;IAC3E,QAAQ,EAAG,eAAe,CAAA;IAC1B,mDAAmD;IACnD,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,eAAO,MAAM,qBAAqB,6BAAyD,CAAA;AAE3F;kEACkE;AAClE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAEzE;AAMD,MAAM,WAAW,4BAA4B;IAC3C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,qBAAqB,8CA+GhC,CAAA"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Inline-diff visualization for whole-field AI suggestions.
3
+ *
4
+ * Sibling to `AiSuggestionExtension`, which handles producer-supplied
5
+ * range suggestions (surgical edits with `meta.editorRange`) via the
6
+ * inline chip widget. This extension handles the *whole-field* case:
7
+ * the AI proposes a new document and the user reviews the structural
8
+ * delta (added paragraphs, deleted text, mark changes, etc.) before
9
+ * accepting or rejecting via the host-mounted `<AiSuggestionBanner>`.
10
+ *
11
+ * Architecture:
12
+ * 1. `startAiInlineDiff(id, newDoc)` captures the current doc as the
13
+ * baseline, replaces the doc body with `newDoc`'s content (so the
14
+ * editor surface IS the proposed state), and initializes a
15
+ * `prosemirror-changeset` tracking the original-to-current
16
+ * transition.
17
+ * 2. The plugin appendTransaction hook keeps the changeset in sync
18
+ * with any further transactions while the diff is pending — e.g.
19
+ * y-prosemirror remote edits arriving during review. (Rare on
20
+ * whole-field flows but free.)
21
+ * 3. A decorations spec walks `ChangeSet.changes` and emits:
22
+ * - inline green-background decorations on inserted ranges
23
+ * - widget decorations rendering the *deleted* text struck
24
+ * through next to the insert point (the deleted content
25
+ * isn't in the current doc, so a widget is the only way to
26
+ * surface it)
27
+ * 4. `acceptAiInlineDiff()` clears the plugin state — the current
28
+ * doc is the accepted state.
29
+ * 5. `rejectAiInlineDiff()` replaces the doc back to the baseline
30
+ * via a single transaction and clears state.
31
+ *
32
+ * For Tiptap Pro parity. See `[[project_pilotiq_text_field_tiptap_rules]]`.
33
+ */
34
+ import { Extension } from '@tiptap/core';
35
+ import { Plugin, PluginKey } from '@tiptap/pm/state';
36
+ import { Decoration, DecorationSet } from '@tiptap/pm/view';
37
+ import { ChangeSet } from 'prosemirror-changeset';
38
+ export const aiInlineDiffPluginKey = new PluginKey('pilotiqAiInlineDiff');
39
+ /** Read the active diff state, if any. Public for hosts that want to
40
+ * branch their banner UI on "diff active" vs "diff inactive". */
41
+ export function getAiInlineDiffState(state) {
42
+ return aiInlineDiffPluginKey.getState(state) ?? null;
43
+ }
44
+ export const AiInlineDiffExtension = Extension.create({
45
+ name: 'pilotiqAiInlineDiff',
46
+ addOptions() {
47
+ return { classPrefix: 'pilotiq-ai-diff' };
48
+ },
49
+ onCreate() {
50
+ // Mirror the chip CSS injection pattern. Idempotent via sentinel.
51
+ if (typeof document === 'undefined')
52
+ return;
53
+ const SENTINEL = 'data-pilotiq-ai-diff-styles';
54
+ if (document.head.querySelector(`style[${SENTINEL}]`))
55
+ return;
56
+ const prefix = this.options.classPrefix;
57
+ const style = document.createElement('style');
58
+ style.setAttribute(SENTINEL, '');
59
+ style.textContent = `
60
+ .${prefix}-inserted {
61
+ background-color: rgba(187, 247, 208, 0.55);
62
+ color: rgb(20, 83, 45);
63
+ text-decoration: none;
64
+ }
65
+ .${prefix}-deleted {
66
+ display: inline;
67
+ margin-right: 0.125em;
68
+ }
69
+ .${prefix}-deleted-text {
70
+ text-decoration: line-through;
71
+ text-decoration-color: rgba(220, 38, 38, 0.7);
72
+ background-color: rgba(254, 226, 226, 0.55);
73
+ color: rgb(153, 27, 27);
74
+ padding: 0 0.125em;
75
+ }
76
+ `;
77
+ document.head.appendChild(style);
78
+ },
79
+ addCommands() {
80
+ return {
81
+ startAiInlineDiff: (id, newDocSlice) => ({ tr, state, dispatch }) => {
82
+ const baseline = state.doc;
83
+ const docEnd = state.doc.content.size;
84
+ // Replace the whole doc body with the proposed content. The
85
+ // schema enforces validity — if the slice doesn't fit, ProseMirror
86
+ // throws (callers should pre-validate via `editor.schema`).
87
+ tr.replaceRange(0, docEnd, newDocSlice);
88
+ const meta = { type: 'start', id, baseline };
89
+ tr.setMeta(aiInlineDiffPluginKey, meta);
90
+ if (dispatch)
91
+ dispatch(tr);
92
+ return true;
93
+ },
94
+ acceptAiInlineDiff: () => ({ tr, dispatch }) => {
95
+ const meta = { type: 'clear' };
96
+ tr.setMeta(aiInlineDiffPluginKey, meta);
97
+ if (dispatch)
98
+ dispatch(tr);
99
+ return true;
100
+ },
101
+ rejectAiInlineDiff: () => ({ tr, state, dispatch }) => {
102
+ const ds = aiInlineDiffPluginKey.getState(state);
103
+ if (!ds)
104
+ return false;
105
+ const docEnd = state.doc.content.size;
106
+ // Replace whole body with the baseline's content via a slice that
107
+ // spans the baseline's open boundaries (always 0 for a top-level
108
+ // doc replace).
109
+ tr.replaceWith(0, docEnd, ds.baseline.content);
110
+ const meta = { type: 'clear' };
111
+ tr.setMeta(aiInlineDiffPluginKey, meta);
112
+ if (dispatch)
113
+ dispatch(tr);
114
+ return true;
115
+ },
116
+ };
117
+ },
118
+ addProseMirrorPlugins() {
119
+ const ext = this;
120
+ return [
121
+ new Plugin({
122
+ key: aiInlineDiffPluginKey,
123
+ state: {
124
+ init() { return null; },
125
+ apply(tr, value) {
126
+ const meta = tr.getMeta(aiInlineDiffPluginKey);
127
+ if (meta?.type === 'start') {
128
+ // Baseline captured BEFORE the replaceRange step in this
129
+ // same transaction. The changeset's `addSteps` consumes
130
+ // the transaction's step list to compute the diff between
131
+ // the baseline doc and the post-transaction doc.
132
+ const cs = ChangeSet.create(meta.baseline).addSteps(tr.doc, tr.mapping.maps, null);
133
+ return { id: meta.id, baseline: meta.baseline, changeset: cs };
134
+ }
135
+ if (meta?.type === 'clear')
136
+ return null;
137
+ if (!value)
138
+ return value;
139
+ // No explicit meta — a regular transaction landed while the
140
+ // diff was active. Fold its steps into the changeset so any
141
+ // further edits (e.g. y-prosemirror remote ops) are reflected.
142
+ if (tr.docChanged) {
143
+ const cs = value.changeset.addSteps(tr.doc, tr.mapping.maps, null);
144
+ return { ...value, changeset: cs };
145
+ }
146
+ return value;
147
+ },
148
+ },
149
+ props: {
150
+ decorations(state) {
151
+ const ds = aiInlineDiffPluginKey.getState(state);
152
+ if (!ds)
153
+ return DecorationSet.empty;
154
+ return buildDiffDecorations(state, ds, ext.options.classPrefix ?? 'pilotiq-ai-diff');
155
+ },
156
+ },
157
+ }),
158
+ ];
159
+ },
160
+ });
161
+ function buildDiffDecorations(state, ds, prefix) {
162
+ const decos = [];
163
+ const docSize = state.doc.content.size;
164
+ for (const change of ds.changeset.changes) {
165
+ // `fromB..toB` is the range in the CURRENT doc that holds the
166
+ // inserted content. `fromA..toA` is the range in the BASELINE doc
167
+ // that was removed. `inserted` / `deleted` are Span[] arrays whose
168
+ // `length` sums to (toB - fromB) / (toA - fromA) respectively.
169
+ const fromB = Math.max(0, Math.min(change.fromB, docSize));
170
+ const toB = Math.max(fromB, Math.min(change.toB, docSize));
171
+ if (toB > fromB) {
172
+ decos.push(Decoration.inline(fromB, toB, {
173
+ class: `${prefix}-inserted`,
174
+ 'data-pilotiq-ai-diff-id': ds.id,
175
+ }));
176
+ }
177
+ // Deleted text — pull from the baseline using the `fromA..toA` range.
178
+ // Render via a widget at the change's insert-point (or end of insert)
179
+ // so the deleted text appears immediately before / after the new run.
180
+ // Empty deletions (pure inserts) skip the widget.
181
+ if (change.toA > change.fromA) {
182
+ const deletedText = ds.baseline.textBetween(change.fromA, change.toA, '\n', ' ');
183
+ if (deletedText.length > 0) {
184
+ decos.push(Decoration.widget(fromB, () => buildDeletedWidget(deletedText, prefix, ds.id), {
185
+ side: -1,
186
+ ignoreSelection: true,
187
+ key: `pilotiq-ai-diff:deleted:${change.fromA}:${change.toA}`,
188
+ }));
189
+ }
190
+ }
191
+ }
192
+ return DecorationSet.create(state.doc, decos);
193
+ }
194
+ function buildDeletedWidget(text, prefix, id) {
195
+ const root = document.createElement('span');
196
+ root.className = `${prefix}-deleted`;
197
+ root.setAttribute('data-pilotiq-ai-diff-id', id);
198
+ root.contentEditable = 'false';
199
+ const inner = document.createElement('span');
200
+ inner.className = `${prefix}-deleted-text`;
201
+ inner.textContent = text;
202
+ root.appendChild(inner);
203
+ return root;
204
+ }
205
+ //# sourceMappingURL=AiInlineDiffExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiInlineDiffExtension.js","sourceRoot":"","sources":["../../src/extensions/AiInlineDiffExtension.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AiSuggestionExtension.d.ts","sourceRoot":"","sources":["../../src/extensions/AiSuggestionExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,cAAc,CAAA;AACrD,OAAO,EAAU,SAAS,EAAsC,MAAM,kBAAkB,CAAA;AAGxF;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,EAAE,EAAY,MAAM,CAAA;IACpB,gEAAgE;IAChE,IAAI,EAAU,MAAM,CAAA;IACpB,8DAA8D;IAC9D,EAAE,EAAY,MAAM,CAAA;IACpB,4DAA4D;IAC5D,WAAW,EAAG,MAAM,CAAA;IACpB,wDAAwD;IACxD,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAG,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;;;OASG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,IAAI,CAAA;CACjD;AAED,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,YAAY,EAAE;YACZ,mDAAmD;YACnD,eAAe,EAAU,CAAC,UAAU,EAAE,YAAY,KAAK,UAAU,CAAA;YACjE,0DAA0D;YAC1D,gBAAgB,EAAS,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,UAAU,CAAA;YACpE,gEAAgE;YAChE,mBAAmB,EAAM,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,CAAA;YACnD,oDAAoD;YACpD,kBAAkB,EAAO,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,CAAA;YACnD,6DAA6D;YAC7D,uBAAuB,EAAE,MAAM,UAAU,CAAA;YACzC,6BAA6B;YAC7B,sBAAsB,EAAG,MAAM,UAAU,CAAA;YACzC,0CAA0C;YAC1C,kBAAkB,EAAO,MAAM,UAAU,CAAA;SAC1C,CAAA;KACF;CACF;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,SAAS,YAAY,EAAE,CAAA;CACrC;AAOD,eAAO,MAAM,qBAAqB,wBAAoD,CAAA;AAEtF;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,IAAI,EAAK,YAAY,GACpB,YAAY,EAAE,CAMhB;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,KAAK,EAAI,SAAS,YAAY,EAAE,GAC/B,YAAY,EAAE,CAIhB;AAED,oBAAoB;AACpB,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,EAAE,EAAO,MAAM,GACd,YAAY,EAAE,CAEhB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,SAAS,YAAY,EAAE,EACpC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,GACzC,YAAY,EAAE,CAShB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,SAAS,YAAY,EAAE,GACnC,YAAY,EAAE,CAEhB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,8CA8IhC,CAAA;AAiDF,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKzD"}
1
+ {"version":3,"file":"AiSuggestionExtension.d.ts","sourceRoot":"","sources":["../../src/extensions/AiSuggestionExtension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,cAAc,CAAA;AACrD,OAAO,EAAU,SAAS,EAAsC,MAAM,kBAAkB,CAAA;AAGxF;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,EAAE,EAAY,MAAM,CAAA;IACpB,gEAAgE;IAChE,IAAI,EAAU,MAAM,CAAA;IACpB,8DAA8D;IAC9D,EAAE,EAAY,MAAM,CAAA;IACpB,4DAA4D;IAC5D,WAAW,EAAG,MAAM,CAAA;IACpB,wDAAwD;IACxD,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAG,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;;;OASG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,IAAI,CAAA;CACjD;AAED,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,YAAY,EAAE;YACZ,mDAAmD;YACnD,eAAe,EAAU,CAAC,UAAU,EAAE,YAAY,KAAK,UAAU,CAAA;YACjE,0DAA0D;YAC1D,gBAAgB,EAAS,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,UAAU,CAAA;YACpE,gEAAgE;YAChE,mBAAmB,EAAM,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,CAAA;YACnD,oDAAoD;YACpD,kBAAkB,EAAO,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,CAAA;YACnD,6DAA6D;YAC7D,uBAAuB,EAAE,MAAM,UAAU,CAAA;YACzC,6BAA6B;YAC7B,sBAAsB,EAAG,MAAM,UAAU,CAAA;YACzC,0CAA0C;YAC1C,kBAAkB,EAAO,MAAM,UAAU,CAAA;SAC1C,CAAA;KACF;CACF;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,SAAS,YAAY,EAAE,CAAA;CACrC;AAOD,eAAO,MAAM,qBAAqB,wBAAoD,CAAA;AAEtF;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,IAAI,EAAK,YAAY,GACpB,YAAY,EAAE,CAMhB;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,KAAK,EAAI,SAAS,YAAY,EAAE,GAC/B,YAAY,EAAE,CAIhB;AAED,oBAAoB;AACpB,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,EAAE,EAAO,MAAM,GACd,YAAY,EAAE,CAEhB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,SAAS,YAAY,EAAE,EACpC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,GACzC,YAAY,EAAE,CAShB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,SAAS,YAAY,EAAE,GACnC,YAAY,EAAE,CAEhB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,8CAyPhC,CAAA;AAiDF,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKzD"}
@@ -76,6 +76,114 @@ export const AiSuggestionExtension = Extension.create({
76
76
  classPrefix: 'pilotiq-ai-suggestion',
77
77
  };
78
78
  },
79
+ onCreate() {
80
+ // Inject minimal default styles for the chip + strikethrough on first
81
+ // mount so consumers see the visualization without wiring CSS. Idempotent
82
+ // via the `data-pilotiq-ai-suggestion-styles` sentinel; consumers who
83
+ // want full control just add their own `<style>` with the same class
84
+ // names (last wins — the cascade picks user overrides over our defaults
85
+ // since the user stylesheet appears AFTER our injected one in `<head>`
86
+ // when imported via Vite/Webpack, OR via higher specificity).
87
+ if (typeof document === 'undefined')
88
+ return;
89
+ const SENTINEL = 'data-pilotiq-ai-suggestion-styles';
90
+ if (document.head.querySelector(`style[${SENTINEL}]`))
91
+ return;
92
+ const prefix = this.options.classPrefix;
93
+ const style = document.createElement('style');
94
+ style.setAttribute(SENTINEL, '');
95
+ // Colors picked to look right on light + dark surfaces without theme
96
+ // overrides (60% alpha on background-color, 100% on text). Tuned to
97
+ // match the inline-diff convention used by the Tiptap Pro AI Agent.
98
+ style.textContent = `
99
+ .${prefix}-original {
100
+ text-decoration: line-through;
101
+ text-decoration-color: rgba(220, 38, 38, 0.7);
102
+ background-color: rgba(254, 226, 226, 0.6);
103
+ color: rgb(153, 27, 27);
104
+ }
105
+ .${prefix}-chip {
106
+ display: inline-flex;
107
+ align-items: center;
108
+ gap: 0.25rem;
109
+ margin-left: 0.25rem;
110
+ padding: 0 0.25rem;
111
+ border-radius: 0.25rem;
112
+ background-color: rgba(220, 252, 231, 0.7);
113
+ color: rgb(22, 101, 52);
114
+ font-size: 0.875em;
115
+ line-height: 1.4;
116
+ }
117
+ .${prefix}-replacement {
118
+ padding: 0 0.125rem;
119
+ }
120
+ .${prefix}-accept,
121
+ .${prefix}-reject {
122
+ appearance: none;
123
+ background: transparent;
124
+ border: 0;
125
+ padding: 0 0.25rem;
126
+ cursor: pointer;
127
+ font-size: 0.875em;
128
+ line-height: 1;
129
+ color: inherit;
130
+ }
131
+ .${prefix}-accept:hover { color: rgb(21, 128, 61); }
132
+ .${prefix}-reject:hover { color: rgb(185, 28, 28); }
133
+
134
+ /* Banner — top-of-editor strip for whole-field suggestions on rich
135
+ surfaces (markdown / richtext). Sibling to the chip styles above;
136
+ lives here so both ship via the same extension-mount sentinel.
137
+ Class names live under \`pilotiq-ai-banner-*\` (not \`-suggestion-\`)
138
+ since the banner is a host-mounted React component, not a PM
139
+ decoration. */
140
+ .pilotiq-ai-banner {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 0.5rem;
144
+ padding: 0.375rem 0.625rem;
145
+ margin-bottom: 0.375rem;
146
+ border-radius: 0.375rem;
147
+ background-color: rgba(254, 252, 232, 0.9);
148
+ border: 1px solid rgba(234, 179, 8, 0.4);
149
+ color: rgb(113, 63, 18);
150
+ font-size: 0.875rem;
151
+ line-height: 1.4;
152
+ }
153
+ .pilotiq-ai-banner-icon { flex: 0 0 auto; }
154
+ .pilotiq-ai-banner-label { flex: 1 1 auto; }
155
+ .pilotiq-ai-banner-actions {
156
+ display: inline-flex;
157
+ gap: 0.375rem;
158
+ flex: 0 0 auto;
159
+ }
160
+ .pilotiq-ai-banner-reject,
161
+ .pilotiq-ai-banner-accept {
162
+ appearance: none;
163
+ cursor: pointer;
164
+ font-size: 0.8125rem;
165
+ font-weight: 500;
166
+ line-height: 1;
167
+ padding: 0.25rem 0.625rem;
168
+ border-radius: 0.25rem;
169
+ border: 1px solid transparent;
170
+ }
171
+ .pilotiq-ai-banner-reject {
172
+ background-color: transparent;
173
+ color: rgb(120, 53, 15);
174
+ border-color: rgba(180, 83, 9, 0.4);
175
+ }
176
+ .pilotiq-ai-banner-reject:hover {
177
+ background-color: rgba(254, 215, 170, 0.4);
178
+ }
179
+ .pilotiq-ai-banner-accept {
180
+ background-color: rgb(22, 101, 52);
181
+ color: white;
182
+ }
183
+ .pilotiq-ai-banner-accept:hover { background-color: rgb(21, 128, 61); }
184
+ `;
185
+ document.head.appendChild(style);
186
+ },
79
187
  addCommands() {
80
188
  return {
81
189
  addAiSuggestion: (suggestion) => ({ tr, state, dispatch }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"AiSuggestionExtension.js","sourceRoot":"","sources":["../../src/extensions/AiSuggestionExtension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AiSuggestionExtension.js","sourceRoot":"","sources":["../../src/extensions/AiSuggestionExtension.ts"],"names":[],"mappings":"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"}
@@ -9775,4 +9775,3 @@ var Markdown2 = Markdown;
9775
9775
  export {
9776
9776
  Markdown2 as Markdown
9777
9777
  };
9778
- //# sourceMappingURL=markdownExtension.js.map
@@ -0,0 +1,72 @@
1
+ import { type PendingSuggestion } from '@pilotiq/pilotiq/react';
2
+ /**
3
+ * Top-of-editor banner UI for whole-field AI suggestions on Tiptap surfaces
4
+ * whose content shape can't survive the inline chip widget's plain-text
5
+ * replace (richtext, markdown). The chip path renders the replacement via
6
+ * `Element.textContent = replacement` which surfaces raw HTML / markdown
7
+ * as literal text — fine for plain `TextField`, ugly for the others.
8
+ *
9
+ * Visible only when at least one pending suggestion targets this field
10
+ * AND lacks `meta.editorRange` (i.e. a whole-field replacement from
11
+ * `update_form_state`'s `set_value` op). Range-anchored suggestions stay
12
+ * on the editor-side chip widget path — those have a precise location
13
+ * the user wants to see in context.
14
+ *
15
+ * Phase 1 ships banner-only ("Changes suggested — Accept / Reject"); no
16
+ * inline diff visualization yet. Phase 2 will replace the banner-only
17
+ * UX with a `prosemirror-changeset`-driven inline diff on the editor's
18
+ * doc itself, with the banner staying as the global Accept-all / Reject
19
+ * control bar. See `[[project_pilotiq_text_field_tiptap_rules]]`.
20
+ *
21
+ * Approve runs the renderer-supplied `onApplyWholeField(value)` callback
22
+ * AND dismisses the suggestion from the queue. Reject just dismisses
23
+ * (no doc mutation). Multiple pending whole-field suggestions on the
24
+ * same field stack — Accept all / Reject all collapse the queue in one
25
+ * pass.
26
+ */
27
+ export interface AiSuggestionBannerProps {
28
+ /** Field name, matches the suggestion's `fieldName`. */
29
+ fieldName: string;
30
+ /**
31
+ * Apply a whole-field suggestion to the underlying editor. Receives the
32
+ * raw `suggestedValue` string from the suggestion. The renderer wires
33
+ * its own content-shape-aware `setContent` here (markdown source for
34
+ * MarkdownEditor, HTML / JSON for TiptapEditor).
35
+ *
36
+ * Skipped when `onAcceptViaEditor` is supplied — that path means the
37
+ * editor already holds the proposed state via `AiInlineDiffExtension`,
38
+ * and Accept routes through `acceptAiInlineDiff()` instead. The host
39
+ * still calls `pendingSuggestions.approve(id)` afterwards to dismiss
40
+ * the queue entry.
41
+ */
42
+ onApplyWholeField: (suggestedValue: string) => void;
43
+ /**
44
+ * Diff-aware Accept hook. When supplied, the banner calls this first
45
+ * (so the editor commits its diff state) and then dismisses via the
46
+ * context. `onApplyWholeField` is NOT called in this mode — the
47
+ * editor's current doc is already the accepted state.
48
+ *
49
+ * Sparse so the simple banner path (Phase 1, no diff) keeps its
50
+ * existing semantics.
51
+ */
52
+ onAcceptViaEditor?: () => void;
53
+ /**
54
+ * Diff-aware Reject hook. When supplied, the banner calls this first
55
+ * (so the editor reverts to the baseline) and then dismisses via the
56
+ * context. Sparse — see `onAcceptViaEditor`.
57
+ */
58
+ onRejectViaEditor?: () => void;
59
+ /** Optional class on the outer banner element. Defaults to a minimal styled chrome. */
60
+ className?: string;
61
+ }
62
+ /**
63
+ * Hook variant — returns banner state without rendering, for renderers
64
+ * that want to compose their own chrome. Renderer-agnostic.
65
+ */
66
+ export declare function useAiSuggestionBanner(fieldName: string): {
67
+ pending: readonly PendingSuggestion[];
68
+ approveAll: (apply: (value: string) => void) => void;
69
+ rejectAll: () => void;
70
+ };
71
+ export declare function AiSuggestionBanner({ fieldName, onApplyWholeField, onAcceptViaEditor, onRejectViaEditor, className, }: AiSuggestionBannerProps): React.ReactElement | null;
72
+ //# sourceMappingURL=AiSuggestionBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiSuggestionBanner.d.ts","sourceRoot":"","sources":["../../src/react/AiSuggestionBanner.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,uBAAuB;IACtC,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;OAWG;IACH,iBAAiB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG;IACxD,OAAO,EAAK,SAAS,iBAAiB,EAAE,CAAA;IACxC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAA;IACpD,SAAS,EAAG,MAAM,IAAI,CAAA;CACvB,CAsBA;AAQD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAuErD"}
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { usePendingSuggestionsForField, usePendingSuggestions, } from '@pilotiq/pilotiq/react';
4
+ /**
5
+ * Hook variant — returns banner state without rendering, for renderers
6
+ * that want to compose their own chrome. Renderer-agnostic.
7
+ */
8
+ export function useAiSuggestionBanner(fieldName) {
9
+ const { list, dismiss } = usePendingSuggestionsForField(fieldName);
10
+ // Only whole-field suggestions land in the banner. Range-anchored ones
11
+ // ride the editor chip widget.
12
+ const pending = useMemo(() => list.filter(s => !hasEditorRange(s)), [list]);
13
+ const approveAll = (apply) => {
14
+ for (const s of pending) {
15
+ if (typeof s.suggestedValue === 'string')
16
+ apply(s.suggestedValue);
17
+ dismiss(s.id);
18
+ }
19
+ };
20
+ const rejectAll = () => {
21
+ for (const s of pending)
22
+ dismiss(s.id);
23
+ };
24
+ return { pending, approveAll, rejectAll };
25
+ }
26
+ function hasEditorRange(s) {
27
+ const meta = (s.meta ?? {});
28
+ const range = meta['editorRange'];
29
+ return !!(range && typeof range.from === 'number' && typeof range.to === 'number');
30
+ }
31
+ export function AiSuggestionBanner({ fieldName, onApplyWholeField, onAcceptViaEditor, onRejectViaEditor, className, }) {
32
+ const { pending, approveAll, rejectAll } = useAiSuggestionBanner(fieldName);
33
+ const { dismiss } = usePendingSuggestions();
34
+ if (pending.length === 0)
35
+ return null;
36
+ // First (and usually only) pending suggestion drives the agent-label
37
+ // display. Multiple-at-once is rare in practice — the banner shows the
38
+ // most recent producer to keep the chrome compact.
39
+ const head = pending[0];
40
+ const sourceLabel = head.source?.agentLabel ?? null;
41
+ const handleAccept = () => {
42
+ // Diff-active path — editor's current doc IS the accepted state.
43
+ // Commit via the editor command, then drop the queue entries.
44
+ if (onAcceptViaEditor) {
45
+ onAcceptViaEditor();
46
+ for (const s of pending)
47
+ dismiss(s.id);
48
+ return;
49
+ }
50
+ approveAll(onApplyWholeField);
51
+ };
52
+ const handleReject = () => {
53
+ // Diff-active path — editor still holds the proposed state; revert
54
+ // to the captured baseline before dismissing.
55
+ if (onRejectViaEditor) {
56
+ onRejectViaEditor();
57
+ for (const s of pending)
58
+ dismiss(s.id);
59
+ return;
60
+ }
61
+ rejectAll();
62
+ };
63
+ // Per-suggestion controls when there's more than one — keeps the UX
64
+ // discoverable. Single suggestion: Accept / Reject only.
65
+ const single = pending.length === 1;
66
+ return (_jsxs("div", { role: "region", "aria-label": "AI suggested changes", "data-pilotiq-ai-banner": "", className: className ?? 'pilotiq-ai-banner', children: [_jsx("span", { className: "pilotiq-ai-banner-icon", "aria-hidden": "true", children: "\uD83D\uDCA1" }), _jsx("span", { className: "pilotiq-ai-banner-label", children: single
67
+ ? sourceLabel
68
+ ? `Changes suggested by ${sourceLabel}`
69
+ : 'Changes suggested'
70
+ : `${pending.length} changes suggested` }), _jsxs("div", { className: "pilotiq-ai-banner-actions", children: [_jsx("button", { type: "button", className: "pilotiq-ai-banner-reject", onClick: handleReject, children: single ? 'Reject' : 'Reject all' }), _jsx("button", { type: "button", className: "pilotiq-ai-banner-accept", onClick: handleAccept, children: single ? 'Accept' : 'Accept all' })] })] }));
71
+ }
72
+ //# sourceMappingURL=AiSuggestionBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiSuggestionBanner.js","sourceRoot":"","sources":["../../src/react/AiSuggestionBanner.tsx"],"names":[],"mappings":"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"}