@intentface/chat 0.1.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.
- package/LICENSE +21 -0
- package/README.md +108 -0
- package/dist/ask-user/ask-user.d.ts +104 -0
- package/dist/ask-user/ask-user.js +226 -0
- package/dist/ask-user/index.d.ts +3 -0
- package/dist/ask-user/index.js +3 -0
- package/dist/ask-user/index.parts.d.ts +1 -0
- package/dist/ask-user/index.parts.js +5 -0
- package/dist/attachments/attachments.d.ts +41 -0
- package/dist/attachments/attachments.js +91 -0
- package/dist/attachments/index.d.ts +3 -0
- package/dist/attachments/index.js +3 -0
- package/dist/attachments/index.parts.d.ts +1 -0
- package/dist/attachments/index.parts.js +5 -0
- package/dist/chip/chip.d.ts +25 -0
- package/dist/chip/chip.js +25 -0
- package/dist/chip/index.d.ts +2 -0
- package/dist/chip/index.js +2 -0
- package/dist/chip/index.parts.d.ts +1 -0
- package/dist/chip/index.parts.js +5 -0
- package/dist/chip-markdown.d.ts +25 -0
- package/dist/chip-markdown.js +52 -0
- package/dist/composer/actions.d.ts +35 -0
- package/dist/composer/actions.js +75 -0
- package/dist/composer/ask-user-machine.d.ts +52 -0
- package/dist/composer/ask-user-machine.js +164 -0
- package/dist/composer/attachments-machine.d.ts +34 -0
- package/dist/composer/attachments-machine.js +91 -0
- package/dist/composer/attachments.d.ts +16 -0
- package/dist/composer/attachments.js +32 -0
- package/dist/composer/command-list.d.ts +49 -0
- package/dist/composer/command-list.js +357 -0
- package/dist/composer/commands.d.ts +28 -0
- package/dist/composer/commands.js +56 -0
- package/dist/composer/container.d.ts +3 -0
- package/dist/composer/container.js +32 -0
- package/dist/composer/controller.d.ts +3 -0
- package/dist/composer/controller.js +6 -0
- package/dist/composer/editor-dom.d.ts +55 -0
- package/dist/composer/editor-dom.js +431 -0
- package/dist/composer/fuzzy.d.ts +4 -0
- package/dist/composer/fuzzy.js +49 -0
- package/dist/composer/index.d.ts +25 -0
- package/dist/composer/index.js +13 -0
- package/dist/composer/index.parts.d.ts +11 -0
- package/dist/composer/index.parts.js +15 -0
- package/dist/composer/internals.d.ts +29 -0
- package/dist/composer/internals.js +102 -0
- package/dist/composer/keyboard.d.ts +61 -0
- package/dist/composer/keyboard.js +75 -0
- package/dist/composer/panel.d.ts +28 -0
- package/dist/composer/panel.js +80 -0
- package/dist/composer/placeholder.d.ts +10 -0
- package/dist/composer/placeholder.js +8 -0
- package/dist/composer/popover.d.ts +12 -0
- package/dist/composer/popover.js +63 -0
- package/dist/composer/prefix-detection.d.ts +23 -0
- package/dist/composer/prefix-detection.js +58 -0
- package/dist/composer/root.d.ts +21 -0
- package/dist/composer/root.js +107 -0
- package/dist/composer/segments.d.ts +108 -0
- package/dist/composer/segments.js +366 -0
- package/dist/composer/store.d.ts +97 -0
- package/dist/composer/store.js +451 -0
- package/dist/composer/textarea.d.ts +39 -0
- package/dist/composer/textarea.js +64 -0
- package/dist/composer/trigger-tracker.d.ts +12 -0
- package/dist/composer/trigger-tracker.js +90 -0
- package/dist/composer/types.d.ts +126 -0
- package/dist/composer/types.js +4 -0
- package/dist/composer/use-composer-editor.d.ts +43 -0
- package/dist/composer/use-composer-editor.js +649 -0
- package/dist/internal/collapsible.d.ts +22 -0
- package/dist/internal/collapsible.js +90 -0
- package/dist/internal/primitive-props.d.ts +4 -0
- package/dist/internal/primitive-props.js +4 -0
- package/dist/internal/render/baseTypes.d.ts +18 -0
- package/dist/internal/render/baseTypes.js +4 -0
- package/dist/internal/render/empty.d.ts +3 -0
- package/dist/internal/render/empty.js +5 -0
- package/dist/internal/render/getReactElementRef.d.ts +5 -0
- package/dist/internal/render/getReactElementRef.js +15 -0
- package/dist/internal/render/getStateAttributesProps.d.ts +4 -0
- package/dist/internal/render/getStateAttributesProps.js +23 -0
- package/dist/internal/render/mergeObjects.d.ts +1 -0
- package/dist/internal/render/mergeObjects.js +14 -0
- package/dist/internal/render/mergeProps.d.ts +55 -0
- package/dist/internal/render/mergeProps.js +183 -0
- package/dist/internal/render/positioning.d.ts +22 -0
- package/dist/internal/render/positioning.js +78 -0
- package/dist/internal/render/reactVersion.d.ts +3 -0
- package/dist/internal/render/reactVersion.js +7 -0
- package/dist/internal/render/resolveClassName.d.ts +8 -0
- package/dist/internal/render/resolveClassName.js +12 -0
- package/dist/internal/render/resolveStyle.d.ts +8 -0
- package/dist/internal/render/resolveStyle.js +12 -0
- package/dist/internal/render/transition.d.ts +48 -0
- package/dist/internal/render/transition.js +203 -0
- package/dist/internal/render/types.d.ts +74 -0
- package/dist/internal/render/types.js +3 -0
- package/dist/internal/render/useMergedRefs.d.ts +21 -0
- package/dist/internal/render/useMergedRefs.js +102 -0
- package/dist/internal/render/useRefWithInit.d.ts +10 -0
- package/dist/internal/render/useRefWithInit.js +12 -0
- package/dist/internal/render/useRender.d.ts +71 -0
- package/dist/internal/render/useRender.js +12 -0
- package/dist/internal/render/useRenderElement.d.ts +62 -0
- package/dist/internal/render/useRenderElement.js +157 -0
- package/dist/internal/render/warn.d.ts +1 -0
- package/dist/internal/render/warn.js +15 -0
- package/dist/internal/state-mappings.d.ts +8 -0
- package/dist/internal/state-mappings.js +17 -0
- package/dist/message/index.d.ts +3 -0
- package/dist/message/index.js +3 -0
- package/dist/message/index.parts.d.ts +1 -0
- package/dist/message/index.parts.js +5 -0
- package/dist/message/message.d.ts +43 -0
- package/dist/message/message.js +78 -0
- package/dist/message-utils.d.ts +55 -0
- package/dist/message-utils.js +79 -0
- package/dist/reasoning/index.d.ts +3 -0
- package/dist/reasoning/index.js +3 -0
- package/dist/reasoning/index.parts.d.ts +1 -0
- package/dist/reasoning/index.parts.js +5 -0
- package/dist/reasoning/reasoning.d.ts +20 -0
- package/dist/reasoning/reasoning.js +49 -0
- package/dist/steps/index.d.ts +2 -0
- package/dist/steps/index.js +2 -0
- package/dist/steps/index.parts.d.ts +1 -0
- package/dist/steps/index.parts.js +5 -0
- package/dist/steps/steps.d.ts +53 -0
- package/dist/steps/steps.js +79 -0
- package/dist/thread/geometry.d.ts +18 -0
- package/dist/thread/geometry.js +59 -0
- package/dist/thread/index.d.ts +4 -0
- package/dist/thread/index.js +3 -0
- package/dist/thread/index.parts.d.ts +1 -0
- package/dist/thread/index.parts.js +5 -0
- package/dist/thread/stores.d.ts +21 -0
- package/dist/thread/stores.js +63 -0
- package/dist/thread/thread.d.ts +66 -0
- package/dist/thread/thread.js +639 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.js +17 -0
- package/package.json +106 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { AttachmentItem } from "../attachments/index.js";
|
|
2
|
+
import type { ChipData, ChipIconKey } from "../chip-markdown.js";
|
|
3
|
+
export type AskUserOption = {
|
|
4
|
+
label: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
};
|
|
7
|
+
export type AskUserQuestion = {
|
|
8
|
+
question: string;
|
|
9
|
+
options: AskUserOption[];
|
|
10
|
+
multiSelect?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type CommandItemKind = "insert" | "execute";
|
|
13
|
+
/**
|
|
14
|
+
* Where a prefix is allowed to open its command list.
|
|
15
|
+
*
|
|
16
|
+
* - `doc-start` — only when the prefix is the very first thing in the document
|
|
17
|
+
* (the `/` slash-command convention).
|
|
18
|
+
* - `word-boundary` — at the start of a line or after whitespace, so `@` opens
|
|
19
|
+
* a mention but the `@` in `user@example.com` does not.
|
|
20
|
+
*/
|
|
21
|
+
export type TriggerRule = "doc-start" | "word-boundary";
|
|
22
|
+
export type { ChipData };
|
|
23
|
+
export type ComposerEditorHandle = {
|
|
24
|
+
focus: () => void;
|
|
25
|
+
blur: () => void;
|
|
26
|
+
clear: () => void;
|
|
27
|
+
insertText: (text: string) => void;
|
|
28
|
+
insertChip: (chip: ChipData) => void;
|
|
29
|
+
};
|
|
30
|
+
export type RegisteredEditor = ComposerEditorHandle & {
|
|
31
|
+
getText: () => string;
|
|
32
|
+
setText: (text: string) => void;
|
|
33
|
+
serialize: () => {
|
|
34
|
+
text: string;
|
|
35
|
+
};
|
|
36
|
+
isFocused: () => boolean;
|
|
37
|
+
/** The editable root element — event scoping and badge queries anchor to it. */
|
|
38
|
+
getRootElement: () => HTMLElement | null;
|
|
39
|
+
getSnapshot: () => ComposerSnapshot;
|
|
40
|
+
applySnapshot: (snapshot: ComposerSnapshot) => void;
|
|
41
|
+
/** Replace the active trigger token with a chip, plus a trailing space unless one follows. */
|
|
42
|
+
insertChipAtTrigger: (chip: ChipData) => void;
|
|
43
|
+
/** Remove the active trigger token (execute-kind command selections). */
|
|
44
|
+
deleteTrigger: () => void;
|
|
45
|
+
/** Close the command popup state after a selection committed. */
|
|
46
|
+
closeCommands: () => void;
|
|
47
|
+
/** Refocus the editor and close the command popup — the Escape/Dismiss path. */
|
|
48
|
+
dismissCommands: () => void;
|
|
49
|
+
};
|
|
50
|
+
export type AttachmentsApi = {
|
|
51
|
+
add: (files: File[] | FileList) => void;
|
|
52
|
+
remove: (id: string) => void;
|
|
53
|
+
openFileDialog: () => void;
|
|
54
|
+
};
|
|
55
|
+
export type PrefixOnSelectContext = {
|
|
56
|
+
editor: ComposerEditorHandle;
|
|
57
|
+
attachments: AttachmentsApi;
|
|
58
|
+
};
|
|
59
|
+
export type CommandItemData = {
|
|
60
|
+
value: string;
|
|
61
|
+
label: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
icon?: ChipIconKey;
|
|
64
|
+
keywords?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Renders the row inert (aria-disabled / data-disabled) and removes it from
|
|
67
|
+
* keyboard navigation and selection. Disabled rows still match the filter.
|
|
68
|
+
*/
|
|
69
|
+
disabled?: boolean;
|
|
70
|
+
onSelect?: (context: PrefixOnSelectContext) => void;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Opaque editor content for the controlled `value` / `defaultValue` API. Treat
|
|
74
|
+
* it as a token: persist and hand it back, but don't read into `__doc` — the
|
|
75
|
+
* payload shape is an implementation detail (currently paragraph JSON).
|
|
76
|
+
*/
|
|
77
|
+
export type ComposerSnapshot = {
|
|
78
|
+
readonly __doc: object;
|
|
79
|
+
readonly __brand: "ComposerSnapshot";
|
|
80
|
+
};
|
|
81
|
+
export type ComposerMessageSubmit = {
|
|
82
|
+
kind: "message";
|
|
83
|
+
text: string;
|
|
84
|
+
files: AttachmentItem[];
|
|
85
|
+
};
|
|
86
|
+
export type ComposerAnswerEntry = {
|
|
87
|
+
question: string;
|
|
88
|
+
option: string;
|
|
89
|
+
} | {
|
|
90
|
+
question: string;
|
|
91
|
+
text: string;
|
|
92
|
+
} | {
|
|
93
|
+
question: string;
|
|
94
|
+
options: string[];
|
|
95
|
+
text: string;
|
|
96
|
+
} | {
|
|
97
|
+
question: string;
|
|
98
|
+
};
|
|
99
|
+
export type ComposerAnswersSubmit = {
|
|
100
|
+
kind: "answers";
|
|
101
|
+
answers: ComposerAnswerEntry[];
|
|
102
|
+
};
|
|
103
|
+
export type ComposerSubmitData = ComposerMessageSubmit | ComposerAnswersSubmit;
|
|
104
|
+
export type ComposerCommandsItems = CommandItemData[] | ((query: string, options: {
|
|
105
|
+
signal: AbortSignal;
|
|
106
|
+
}) => CommandItemData[] | Promise<CommandItemData[]>);
|
|
107
|
+
export type ComposerCommandsConfig = {
|
|
108
|
+
kind: CommandItemKind;
|
|
109
|
+
trigger: TriggerRule;
|
|
110
|
+
items: ComposerCommandsItems;
|
|
111
|
+
/**
|
|
112
|
+
* Ghost-text completion of the highlighted item in the active token
|
|
113
|
+
* (data-command-suggestion). Defaults to true; turn off per prefix when the
|
|
114
|
+
* highlight is unstable (e.g. async sources re-ranking while typing).
|
|
115
|
+
*/
|
|
116
|
+
suggestion?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Per-prefix hint shown while the query is empty, rendered into the badge's
|
|
119
|
+
* hint element (span[data-command-hint]). Defaults to "Type to
|
|
120
|
+
* filter". Never shows alongside a suggestion — one hint slot, suggestion
|
|
121
|
+
* wins — so this is the resident hint for suggestion: false prefixes and
|
|
122
|
+
* the fallback when nothing can complete.
|
|
123
|
+
*/
|
|
124
|
+
placeholder?: string;
|
|
125
|
+
};
|
|
126
|
+
export type ComposerCommandsMap = Record<string, ComposerCommandsConfig>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type ClipboardEventHandler, type FocusEventHandler, type KeyboardEventHandler, type ReactNode } from "react";
|
|
2
|
+
import { type ChipData } from "../chip-markdown.js";
|
|
3
|
+
import { type ComposerSubmitOn } from "./keyboard.js";
|
|
4
|
+
export type UseComposerEditorOptions = {
|
|
5
|
+
disabled: boolean;
|
|
6
|
+
autoFocus: boolean;
|
|
7
|
+
maxLength?: number;
|
|
8
|
+
/** Which Enter chord sends; the other soft-breaks. Defaults to "enter". */
|
|
9
|
+
submitOn?: ComposerSubmitOn;
|
|
10
|
+
value?: string;
|
|
11
|
+
onValueChange?: (text: string) => void;
|
|
12
|
+
renderChip?: (chip: ChipData) => ReactNode;
|
|
13
|
+
onFocus?: FocusEventHandler<HTMLDivElement>;
|
|
14
|
+
onBlur?: FocusEventHandler<HTMLDivElement>;
|
|
15
|
+
onKeyDown?: KeyboardEventHandler<HTMLDivElement>;
|
|
16
|
+
onKeyUp?: KeyboardEventHandler<HTMLDivElement>;
|
|
17
|
+
onPaste?: ClipboardEventHandler<HTMLDivElement>;
|
|
18
|
+
onCopy?: ClipboardEventHandler<HTMLDivElement>;
|
|
19
|
+
onCut?: ClipboardEventHandler<HTMLDivElement>;
|
|
20
|
+
};
|
|
21
|
+
export type ComposerEditableProps = {
|
|
22
|
+
onFocus: FocusEventHandler<HTMLDivElement>;
|
|
23
|
+
onBlur: FocusEventHandler<HTMLDivElement>;
|
|
24
|
+
onKeyDown: KeyboardEventHandler<HTMLDivElement>;
|
|
25
|
+
onKeyUp: KeyboardEventHandler<HTMLDivElement>;
|
|
26
|
+
onPaste: ClipboardEventHandler<HTMLDivElement>;
|
|
27
|
+
onCopy: ClipboardEventHandler<HTMLDivElement>;
|
|
28
|
+
onCut: ClipboardEventHandler<HTMLDivElement>;
|
|
29
|
+
};
|
|
30
|
+
export type UseComposerEditorResult = {
|
|
31
|
+
/** Attach to the contenteditable element; returns a React 19 ref cleanup. */
|
|
32
|
+
attachRoot: (node: HTMLElement | null) => (() => void) | undefined;
|
|
33
|
+
/** Spread onto the editable: consumer-then-engine composed event handlers. */
|
|
34
|
+
editableProps: ComposerEditableProps;
|
|
35
|
+
/** Chip visuals, portaled into the engine-owned inline spans. */
|
|
36
|
+
chipPortals: ReactNode;
|
|
37
|
+
hasContent: boolean;
|
|
38
|
+
/** True while an IME composition is in progress — the placeholder overlay gates on it. */
|
|
39
|
+
isComposing: boolean;
|
|
40
|
+
/** The serialized submit text, for the hidden form-input mirror. */
|
|
41
|
+
serializedText: string;
|
|
42
|
+
};
|
|
43
|
+
export declare const useComposerEditor: (options: UseComposerEditorOptions) => UseComposerEditorResult;
|