@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.
Files changed (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/dist/ask-user/ask-user.d.ts +104 -0
  4. package/dist/ask-user/ask-user.js +226 -0
  5. package/dist/ask-user/index.d.ts +3 -0
  6. package/dist/ask-user/index.js +3 -0
  7. package/dist/ask-user/index.parts.d.ts +1 -0
  8. package/dist/ask-user/index.parts.js +5 -0
  9. package/dist/attachments/attachments.d.ts +41 -0
  10. package/dist/attachments/attachments.js +91 -0
  11. package/dist/attachments/index.d.ts +3 -0
  12. package/dist/attachments/index.js +3 -0
  13. package/dist/attachments/index.parts.d.ts +1 -0
  14. package/dist/attachments/index.parts.js +5 -0
  15. package/dist/chip/chip.d.ts +25 -0
  16. package/dist/chip/chip.js +25 -0
  17. package/dist/chip/index.d.ts +2 -0
  18. package/dist/chip/index.js +2 -0
  19. package/dist/chip/index.parts.d.ts +1 -0
  20. package/dist/chip/index.parts.js +5 -0
  21. package/dist/chip-markdown.d.ts +25 -0
  22. package/dist/chip-markdown.js +52 -0
  23. package/dist/composer/actions.d.ts +35 -0
  24. package/dist/composer/actions.js +75 -0
  25. package/dist/composer/ask-user-machine.d.ts +52 -0
  26. package/dist/composer/ask-user-machine.js +164 -0
  27. package/dist/composer/attachments-machine.d.ts +34 -0
  28. package/dist/composer/attachments-machine.js +91 -0
  29. package/dist/composer/attachments.d.ts +16 -0
  30. package/dist/composer/attachments.js +32 -0
  31. package/dist/composer/command-list.d.ts +49 -0
  32. package/dist/composer/command-list.js +357 -0
  33. package/dist/composer/commands.d.ts +28 -0
  34. package/dist/composer/commands.js +56 -0
  35. package/dist/composer/container.d.ts +3 -0
  36. package/dist/composer/container.js +32 -0
  37. package/dist/composer/controller.d.ts +3 -0
  38. package/dist/composer/controller.js +6 -0
  39. package/dist/composer/editor-dom.d.ts +55 -0
  40. package/dist/composer/editor-dom.js +431 -0
  41. package/dist/composer/fuzzy.d.ts +4 -0
  42. package/dist/composer/fuzzy.js +49 -0
  43. package/dist/composer/index.d.ts +25 -0
  44. package/dist/composer/index.js +13 -0
  45. package/dist/composer/index.parts.d.ts +11 -0
  46. package/dist/composer/index.parts.js +15 -0
  47. package/dist/composer/internals.d.ts +29 -0
  48. package/dist/composer/internals.js +102 -0
  49. package/dist/composer/keyboard.d.ts +61 -0
  50. package/dist/composer/keyboard.js +75 -0
  51. package/dist/composer/panel.d.ts +28 -0
  52. package/dist/composer/panel.js +80 -0
  53. package/dist/composer/placeholder.d.ts +10 -0
  54. package/dist/composer/placeholder.js +8 -0
  55. package/dist/composer/popover.d.ts +12 -0
  56. package/dist/composer/popover.js +63 -0
  57. package/dist/composer/prefix-detection.d.ts +23 -0
  58. package/dist/composer/prefix-detection.js +58 -0
  59. package/dist/composer/root.d.ts +21 -0
  60. package/dist/composer/root.js +107 -0
  61. package/dist/composer/segments.d.ts +108 -0
  62. package/dist/composer/segments.js +366 -0
  63. package/dist/composer/store.d.ts +97 -0
  64. package/dist/composer/store.js +451 -0
  65. package/dist/composer/textarea.d.ts +39 -0
  66. package/dist/composer/textarea.js +64 -0
  67. package/dist/composer/trigger-tracker.d.ts +12 -0
  68. package/dist/composer/trigger-tracker.js +90 -0
  69. package/dist/composer/types.d.ts +126 -0
  70. package/dist/composer/types.js +4 -0
  71. package/dist/composer/use-composer-editor.d.ts +43 -0
  72. package/dist/composer/use-composer-editor.js +649 -0
  73. package/dist/internal/collapsible.d.ts +22 -0
  74. package/dist/internal/collapsible.js +90 -0
  75. package/dist/internal/primitive-props.d.ts +4 -0
  76. package/dist/internal/primitive-props.js +4 -0
  77. package/dist/internal/render/baseTypes.d.ts +18 -0
  78. package/dist/internal/render/baseTypes.js +4 -0
  79. package/dist/internal/render/empty.d.ts +3 -0
  80. package/dist/internal/render/empty.js +5 -0
  81. package/dist/internal/render/getReactElementRef.d.ts +5 -0
  82. package/dist/internal/render/getReactElementRef.js +15 -0
  83. package/dist/internal/render/getStateAttributesProps.d.ts +4 -0
  84. package/dist/internal/render/getStateAttributesProps.js +23 -0
  85. package/dist/internal/render/mergeObjects.d.ts +1 -0
  86. package/dist/internal/render/mergeObjects.js +14 -0
  87. package/dist/internal/render/mergeProps.d.ts +55 -0
  88. package/dist/internal/render/mergeProps.js +183 -0
  89. package/dist/internal/render/positioning.d.ts +22 -0
  90. package/dist/internal/render/positioning.js +78 -0
  91. package/dist/internal/render/reactVersion.d.ts +3 -0
  92. package/dist/internal/render/reactVersion.js +7 -0
  93. package/dist/internal/render/resolveClassName.d.ts +8 -0
  94. package/dist/internal/render/resolveClassName.js +12 -0
  95. package/dist/internal/render/resolveStyle.d.ts +8 -0
  96. package/dist/internal/render/resolveStyle.js +12 -0
  97. package/dist/internal/render/transition.d.ts +48 -0
  98. package/dist/internal/render/transition.js +203 -0
  99. package/dist/internal/render/types.d.ts +74 -0
  100. package/dist/internal/render/types.js +3 -0
  101. package/dist/internal/render/useMergedRefs.d.ts +21 -0
  102. package/dist/internal/render/useMergedRefs.js +102 -0
  103. package/dist/internal/render/useRefWithInit.d.ts +10 -0
  104. package/dist/internal/render/useRefWithInit.js +12 -0
  105. package/dist/internal/render/useRender.d.ts +71 -0
  106. package/dist/internal/render/useRender.js +12 -0
  107. package/dist/internal/render/useRenderElement.d.ts +62 -0
  108. package/dist/internal/render/useRenderElement.js +157 -0
  109. package/dist/internal/render/warn.d.ts +1 -0
  110. package/dist/internal/render/warn.js +15 -0
  111. package/dist/internal/state-mappings.d.ts +8 -0
  112. package/dist/internal/state-mappings.js +17 -0
  113. package/dist/message/index.d.ts +3 -0
  114. package/dist/message/index.js +3 -0
  115. package/dist/message/index.parts.d.ts +1 -0
  116. package/dist/message/index.parts.js +5 -0
  117. package/dist/message/message.d.ts +43 -0
  118. package/dist/message/message.js +78 -0
  119. package/dist/message-utils.d.ts +55 -0
  120. package/dist/message-utils.js +79 -0
  121. package/dist/reasoning/index.d.ts +3 -0
  122. package/dist/reasoning/index.js +3 -0
  123. package/dist/reasoning/index.parts.d.ts +1 -0
  124. package/dist/reasoning/index.parts.js +5 -0
  125. package/dist/reasoning/reasoning.d.ts +20 -0
  126. package/dist/reasoning/reasoning.js +49 -0
  127. package/dist/steps/index.d.ts +2 -0
  128. package/dist/steps/index.js +2 -0
  129. package/dist/steps/index.parts.d.ts +1 -0
  130. package/dist/steps/index.parts.js +5 -0
  131. package/dist/steps/steps.d.ts +53 -0
  132. package/dist/steps/steps.js +79 -0
  133. package/dist/thread/geometry.d.ts +18 -0
  134. package/dist/thread/geometry.js +59 -0
  135. package/dist/thread/index.d.ts +4 -0
  136. package/dist/thread/index.js +3 -0
  137. package/dist/thread/index.parts.d.ts +1 -0
  138. package/dist/thread/index.parts.js +5 -0
  139. package/dist/thread/stores.d.ts +21 -0
  140. package/dist/thread/stores.js +63 -0
  141. package/dist/thread/thread.d.ts +66 -0
  142. package/dist/thread/thread.js +639 -0
  143. package/dist/types.d.ts +58 -0
  144. package/dist/types.js +17 -0
  145. 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,4 @@
1
+ // Public composer types — the wire-level contracts consumers interact with:
2
+ // command configs, submit payloads, the opaque editor snapshot, and the
3
+ // imperative editor/attachments APIs.
4
+ export {};
@@ -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;