@itechchoice/prime-chatkit 0.1.0-alpha.1 → 0.1.0-alpha.10

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/dist/style.css CHANGED
@@ -1 +1 @@
1
- .abc-prime-dock{position:fixed;right:1rem;bottom:1rem;top:auto;left:auto;width:min(720px,94vw);height:calc(100vh - var(--abc-prime-header-offset, var(--chatkit-header-offset, 0px)) - 16px);z-index:60;pointer-events:none;transition:width .22s ease,right .22s ease,bottom .22s ease,transform .22s ease;visibility:hidden}.abc-prime-dock--open{pointer-events:auto;visibility:visible}.abc-prime-dock--minimized{pointer-events:none;visibility:visible}.abc-prime-dock--split{inset:0 0 0 auto;width:var(--abc-prime-split-width, var(--chatkit-split-width, 50vw));min-width:var(--abc-prime-split-min-width, var(--chatkit-split-min-width, 640px));height:100vh;border-left:1px solid var(--border-input, rgba(15, 23, 42, .08))}body.chatkit-resizing .abc-prime-dock,body.chatkit-dragging .abc-prime-dock,body.chatkit-dock-resizing .abc-prime-dock{transition:none}.abc-prime-dock__resize-handle{position:absolute;top:0;bottom:0;left:-12px;width:24px;display:flex;align-items:center;justify-content:center;cursor:col-resize;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;z-index:2}.abc-prime-dock__panel{display:flex;flex-direction:column;gap:0;border:1px solid var(--border-input, rgba(15, 23, 42, .08));border-radius:1.25rem;background:transparent;box-shadow:0 25px 50px #0f172a2e;padding:0;overflow:hidden;transform:translateY(20px);opacity:0;pointer-events:auto;transition:opacity .18s ease,transform .26s cubic-bezier(.2,.8,.2,1);height:100%}.abc-prime-dock--open .abc-prime-dock__panel{opacity:1;transform:translateY(0)}.abc-prime-dock--split .abc-prime-dock__panel{transform:translate(32px);border-radius:0}.abc-prime-dock--open.abc-prime-dock--split .abc-prime-dock__panel{transform:translate(0)}.abc-prime-dock--minimized .abc-prime-dock__panel{opacity:0;transform:scale(.06) translate(12px,12px);pointer-events:none}.abc-prime-dock__minimized{position:fixed;right:1rem;bottom:1rem;width:48px;height:48px;border-radius:999px;background:rgb(var(--color-theme-blue, 34 99 248));color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 12px 24px #2263f847;transform:scale(.6);opacity:0;pointer-events:none;transition:transform .36s cubic-bezier(.18,1.35,.32,1),opacity .32s ease}.abc-prime-dock--minimized .abc-prime-dock__minimized{opacity:1;transform:scale(1);pointer-events:auto}.abc-prime-dock__header{cursor:default}.abc-prime-dock--dock-interactive:not(.abc-prime-dock--split) .abc-prime-dock__header{cursor:grab;touch-action:none}.abc-prime-dock--dragging:not(.abc-prime-dock--split) .abc-prime-dock__header{cursor:grabbing}.abc-prime-dock__resize-corner{position:absolute;right:.75rem;bottom:.75rem;width:18px;height:18px;border:0;background:transparent;cursor:nwse-resize;z-index:3}@media(max-width:640px){.abc-prime-dock{right:.75rem;left:.75rem;width:auto;bottom:.75rem}}
1
+ .abc-prime-dock{position:fixed;right:1rem;bottom:1rem;top:auto;left:auto;width:min(420px,94vw);height:calc(100vh - var(--abc-prime-header-offset, var(--chatkit-header-offset, 0px)) - 16px);z-index:60;pointer-events:none;transition:width .22s ease,right .22s ease,bottom .22s ease,transform .22s ease;visibility:hidden}.abc-prime-dock--open{pointer-events:auto;visibility:visible}.abc-prime-dock--minimized{pointer-events:none;visibility:visible}.abc-prime-dock--split{inset:0 0 0 auto;width:var(--abc-prime-split-width, var(--chatkit-split-width, 480px));min-width:var(--abc-prime-split-min-width, var(--chatkit-split-min-width, 480px));height:100vh;border-left:1px solid var(--border-input, rgba(15, 23, 42, .08))}body.chatkit-resizing .abc-prime-dock,body.chatkit-dragging .abc-prime-dock,body.chatkit-dock-resizing .abc-prime-dock{transition:none}.abc-prime-dock__resize-handle{position:absolute;top:0;bottom:0;left:-12px;width:24px;display:flex;align-items:center;justify-content:center;cursor:col-resize;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;z-index:2}.abc-prime-dock__panel{display:flex;flex-direction:column;gap:0;border:1px solid var(--border-input, rgba(15, 23, 42, .08));border-radius:1.25rem;background:transparent;box-shadow:0 25px 50px #0f172a2e;padding:0;overflow:hidden;overscroll-behavior:contain;transform:translateY(20px);opacity:0;pointer-events:auto;transition:opacity .18s ease,transform .26s cubic-bezier(.2,.8,.2,1);height:100%}.abc-prime-dock--open .abc-prime-dock__panel{opacity:1;transform:translateY(0)}.abc-prime-dock--split .abc-prime-dock__panel{transform:translate(32px);border-radius:0}.abc-prime-dock--open.abc-prime-dock--split .abc-prime-dock__panel{transform:translate(0)}.abc-prime-dock--minimized .abc-prime-dock__panel{opacity:0;transform:scale(.06) translate(12px,12px);pointer-events:none}.abc-prime-dock__minimized{position:fixed;right:1rem;bottom:1rem;width:48px;height:48px;border-radius:999px;background:rgb(var(--color-theme-blue, 34 99 248));color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 12px 24px #2263f847;transform:scale(.6);opacity:0;pointer-events:none;transition:transform .36s cubic-bezier(.18,1.35,.32,1),opacity .32s ease}.abc-prime-dock--minimized .abc-prime-dock__minimized{opacity:1;transform:scale(1);pointer-events:auto}.abc-prime-dock__header{cursor:default}.abc-prime-dock--dock-interactive:not(.abc-prime-dock--split) .abc-prime-dock__header{cursor:grab;touch-action:none}.abc-prime-dock--dragging:not(.abc-prime-dock--split) .abc-prime-dock__header{cursor:grabbing}.abc-prime-dock__resize-corner{position:absolute;right:.75rem;bottom:.75rem;width:18px;height:18px;border:0;background:transparent;cursor:nwse-resize;z-index:3}@media(max-width:640px){.abc-prime-dock{right:.75rem;left:.75rem;width:auto;bottom:.75rem}}
@@ -41,6 +41,9 @@ export declare function createChatController(deps: {
41
41
  intervalMs: number;
42
42
  timeoutMs: number;
43
43
  };
44
+ gatePoll?: {
45
+ intervalMs: number;
46
+ } | false;
44
47
  pageSize?: number;
45
48
  getTraceId?: () => string | undefined;
46
49
  provisioning?: boolean;
@@ -100,6 +100,9 @@ export type ThreadTaskDetail = {
100
100
  export type ThreadPart = {
101
101
  kind: "text";
102
102
  text: string;
103
+ } | {
104
+ kind: "note";
105
+ text: string;
103
106
  } | {
104
107
  kind: "tools";
105
108
  id: string;
@@ -312,6 +315,7 @@ declare function threadDefaults(locale: string): {
312
315
  message: string;
313
316
  voiceInput: string;
314
317
  sendMessage: string;
318
+ stop: string;
315
319
  discardRecording: string;
316
320
  useRecording: string;
317
321
  connectApps: string;
@@ -539,6 +543,7 @@ declare const defaultLabels: {
539
543
  message: string;
540
544
  voiceInput: string;
541
545
  sendMessage: string;
546
+ stop: string;
542
547
  discardRecording: string;
543
548
  useRecording: string;
544
549
  connectApps: string;
@@ -631,6 +636,7 @@ export type AgentThreadScreenProps = Pick<AppShellProps, "onNavigate" | "user" |
631
636
  start?: {
632
637
  greeting?: string;
633
638
  body?: string;
639
+ avatar?: string;
634
640
  prompts?: {
635
641
  id: string;
636
642
  label: string;
@@ -712,6 +718,10 @@ export type AgentThreadScreenProps = Pick<AppShellProps, "onNavigate" | "user" |
712
718
  labels?: ThreadLabels;
713
719
  locale?: string;
714
720
  };
721
+ declare function ThreadStart({ start, onStartPrompt }: {
722
+ start: NonNullable<AgentThreadScreenProps["start"]>;
723
+ onStartPrompt?: AgentThreadScreenProps["onStartPrompt"];
724
+ }): import("react").JSX.Element;
715
725
  export declare function AgentThreadScreen({ workspace, messages: messagesProp, overlay, start, onStartPrompt, onLink, orchestratorAvatar, onCopy, onRegenerate, onFeedback, feedbackReasons, onSend, onStop, onRetry, connection: connectionProp, onReconnect, lastSeen: lastSeenProp, awayAfter, onMarkRead, running, decisions: decisionsProp, onDecide, onLater, tasks: taskDetailsProp, onOpenTask, onShowTask, onOpenInbox, artifacts, openArtifacts, models, composer, suggested, upload, transcribe, simulate, labels: labelProp, locale, onNavigate, ...props }: AgentThreadScreenProps): import("react").JSX.Element;
716
726
  /** Yours: a soft bubble on the right, files above it; queued, sending or failed under it */
717
727
  declare function UserMessage({ message: m, labels, onRetry }: {
@@ -721,8 +731,14 @@ declare function UserMessage({ message: m, labels, onRetry }: {
721
731
  }): import("react").JSX.Element;
722
732
  /** The orchestrator's: plain text on the page under its mark, with its cards, tools and files in between */
723
733
  declare const ThreadLinkContext: import("react").Context<((href: string, event: MouseEvent<HTMLAnchorElement>) => void) | undefined>;
724
- declare function AgentMessage({ message: m, clock, orchestratorAvatar, first, now, labels, askState, onTask, onAsk, onRetry, onCopy, onRegenerate, onFeedback, feedbackReasons, }: {
734
+ declare const ThreadMarkdown: import("react").NamedExoticComponent<{
735
+ text: string;
736
+ }>;
737
+ declare function AgentMessage({ message: m, status, phase, liveOpen, clock, orchestratorAvatar, first, now, labels, askState, onTask, onAsk, onRetry, onCopy, onRegenerate, onFeedback, feedbackReasons, }: {
725
738
  message: ThreadAgentMessage;
739
+ status?: ReactNode;
740
+ phase?: "working" | "writing" | "done";
741
+ liveOpen?: boolean;
726
742
  clock: Intl.DateTimeFormat;
727
743
  orchestratorAvatar?: string;
728
744
  first: boolean;
@@ -733,7 +749,7 @@ declare function AgentMessage({ message: m, clock, orchestratorAvatar, first, no
733
749
  onAsk: (id: string) => void;
734
750
  onRetry?: () => void;
735
751
  } & Pick<AgentThreadScreenProps, "onCopy" | "onRegenerate" | "onFeedback" | "feedbackReasons">): import("react").JSX.Element;
736
- export { UserMessage, AgentMessage, ThreadLinkContext, threadDefaults };
752
+ export { UserMessage, AgentMessage, ThreadStart, ThreadMarkdown, ThreadLinkContext, threadDefaults };
737
753
  export type { Labels };
738
754
  /** The original message parts, with their shell tokens but no screen layout. */
739
755
  export declare function ThreadPartsRoot({ children, className }: {
@@ -50,6 +50,7 @@ export declare const defaultChatComposerLabels: {
50
50
  message: string;
51
51
  voiceInput: string;
52
52
  sendMessage: string;
53
+ stop: string;
53
54
  discardRecording: string;
54
55
  useRecording: string;
55
56
  connectApps: string;
@@ -66,6 +67,8 @@ export declare const defaultChatComposerLabels: {
66
67
  };
67
68
  export type ChatComposerLabels = typeof defaultChatComposerLabels;
68
69
  export type ChatComposerProps = {
70
+ running?: boolean;
71
+ onStop?: () => void;
69
72
  sendDisabled?: boolean;
70
73
  labels?: Partial<ChatComposerLabels>;
71
74
  placeholder?: string;
@@ -80,6 +83,8 @@ export type ChatComposerProps = {
80
83
  onModelChange?: (model: ChatModel) => void;
81
84
  /** An entry of the plus menu was picked: "files", "claude", "folder", "goal", "plan", "skill", "draw", "documents" or "pdf" */
82
85
  onAttach?: (item: string) => void;
86
+ /** Open a picker directly instead of the plus menu. */
87
+ onAdd?: () => void;
83
88
  /** Plus-menu row IDs to show, after the tray's folder/apps replacement; omitted, show all. */
84
89
  addItems?: string[];
85
90
  /** The approval mode to start with; false removes the button and menu. */
@@ -112,4 +117,4 @@ export type ChatComposerProps = {
112
117
  export declare const defaultFolders: string[];
113
118
  export declare const defaultApps: ChatApp[];
114
119
  export declare const defaultModels: ChatModel[];
115
- export declare function ChatComposer({ sendDisabled, placeholder, disabled, labels: labelProp, models, dictation, onSend, onModelChange, onAttach, addItems, voice, approval: firstApproval, onApprovalChange, onLearnMore, folders, folder: firstFolder, onFolderChange, apps, connectedApps, onAppsChange, foot, tray, }: ChatComposerProps): import("react").JSX.Element;
120
+ export declare function ChatComposer({ running, onStop, sendDisabled, placeholder, disabled, labels: labelProp, models, dictation, onSend, onModelChange, onAttach, onAdd, addItems, voice, approval: firstApproval, onApprovalChange, onLearnMore, folders, folder: firstFolder, onFolderChange, apps, connectedApps, onAppsChange, foot, tray, }: ChatComposerProps): import("react").JSX.Element;
@@ -51,7 +51,9 @@ export type CommandMenuProps = {
51
51
  ask?: boolean;
52
52
  hotkey?: boolean;
53
53
  labels?: Partial<CommandMenuLabels>;
54
+ /** Fill the parent height and scroll results within the remaining space. */
55
+ fill?: boolean;
54
56
  };
55
57
  /** Sample commands – replace with your own */
56
58
  export declare const defaultGroups: CommandGroup[];
57
- export declare function CommandMenu({ groups, placeholder, onAction, onEditSubmit, onEditCancel, ask, hotkey, labels: labelOverrides, onRun, onClose, autoFocus, className, }: CommandMenuProps): import("react").JSX.Element;
59
+ export declare function CommandMenu({ groups, placeholder, onAction, onEditSubmit, onEditCancel, ask, hotkey, labels: labelOverrides, fill, onRun, onClose, autoFocus, className, }: CommandMenuProps): import("react").JSX.Element;
@@ -27,6 +27,7 @@ export type Decision = {
27
27
  task?: string;
28
28
  /** decision: rows to pick from · pick: preview tiles · approval: facts, then Approve / Decline (default: decision) */
29
29
  kind?: DecisionKind;
30
+ body?: ReactNode;
30
31
  /** decision and pick – all supplied options */
31
32
  options?: DecisionOption[];
32
33
  own?: boolean;
@@ -1,3 +1,4 @@
1
+ import { type RefObject } from "react";
1
2
  export type UploadStatus = "uploading" | "done" | "error";
2
3
  export type UploadItem = {
3
4
  id: string;
@@ -12,6 +13,9 @@ export type UploadItem = {
12
13
  file?: File;
13
14
  };
14
15
  export type DropzoneProps = {
16
+ picker?: RefObject<{
17
+ pick: () => void;
18
+ } | null>;
15
19
  labels?: Partial<DropzoneLabels>;
16
20
  /** Allowed extensions, e.g. [".pdf", ".png"] – any file when left out */
17
21
  accept?: string[];
@@ -67,4 +71,4 @@ export declare const defaultDropzoneLabels: {
67
71
  fileBadge: (extension: string) => string;
68
72
  };
69
73
  export type DropzoneLabels = typeof defaultDropzoneLabels;
70
- export declare function Dropzone({ labels: labelProp, accept, maxSize, onUpload, onChange, hint, autoplay, className, }: DropzoneProps): import("react").JSX.Element;
74
+ export declare function Dropzone({ picker, labels: labelProp, accept, maxSize, onUpload, onChange, hint, autoplay, className, }: DropzoneProps): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ export type ThinkingLoaderProps = {
2
+ /** Labels to walk through, one after another */
3
+ phases?: string[];
4
+ /** Time per phase, in ms */
5
+ interval?: number;
6
+ /** Show a specific phase instead of advancing on a timer – e.g. from your stream events */
7
+ phase?: number;
8
+ /** Start over after the last phase instead of holding it */
9
+ loop?: boolean;
10
+ /** Finished: the spinner turns into a check and the label into doneLabel */
11
+ done?: boolean;
12
+ /** Label once done – a string, or a function that gets the seconds since the loader started */
13
+ doneLabel?: string | ((seconds: number) => string);
14
+ size?: "sm" | "md";
15
+ /** "pill" = bordered capsule, "plain" = just the spinner and the label, e.g. inside a chat bubble */
16
+ variant?: "pill" | "plain";
17
+ className?: string;
18
+ };
19
+ export declare function ThinkingLoader({ phases: phasesProp, interval: intervalProp, phase, loop, done, doneLabel, size, variant, className, }: ThinkingLoaderProps): import("react").JSX.Element;
@@ -1,3 +1,5 @@
1
1
  import type { ChatMessage } from "./types";
2
+ /** Only the last assistant segment for each task may remain running or waiting. */
3
+ export declare function settleEarlierSegments(messages: ChatMessage[]): ChatMessage[];
2
4
  /** Map a chronological history page without mutating records or consulting the clock. */
3
5
  export declare function messagesFromHistory(records: unknown[]): ChatMessage[];
@@ -12,6 +12,8 @@ export declare function idGreater(a: string, b: string): boolean;
12
12
  export declare function createRun(taskId: string, now?: number): Run;
13
13
  /** Text the user should read as the answer right now: the confirmed final text, else the newest turn still writing */
14
14
  export declare function answerText(run: Run): string;
15
+ /** The backend joins reasoning sections without separators; restore blank lines before their headings. */
16
+ export declare function reasoningText(text: string): string;
15
17
  export type AnswerSource = {
16
18
  label: string;
17
19
  href?: string;
@@ -10,11 +10,13 @@ export declare const SPLIT_BREAKPOINT = 1440;
10
10
  export declare const MIN_SPLIT_WIDTH = 1280;
11
11
  export declare const DOCK_INTERACTIVE_BREAKPOINT = 768;
12
12
  export declare const MIN_SPLIT_CONTENT_WIDTH = 620;
13
+ export declare const SPLIT_PANEL_MIN_WIDTH = 480;
14
+ export declare const SPLIT_PANEL_MAX_WIDTH = 720;
13
15
  export declare const HEADER_HEIGHT_FALLBACK = 64;
14
16
  export declare const DOCK_EDGE_GAP = 12;
15
- export declare const DOCK_DEFAULT_WIDTH = 720;
16
17
  export declare const DOCK_DEFAULT_HEIGHT = 760;
17
18
  export declare const DOCK_MIN_WIDTH = 420;
19
+ export declare const DOCK_DEFAULT_WIDTH = 420;
18
20
  export declare const DOCK_MIN_HEIGHT = 620;
19
21
  export declare const DOCK_MAX_WIDTH = 960;
20
22
  export declare const DOCK_GEOMETRY_STORAGE_KEY = "abcPrimeDockGeometry:v1";
@@ -7,6 +7,8 @@ import { type OlderMessages } from "./useFollowLatest";
7
7
  import { type GetAttachmentUrls } from "./useAttachmentDownload";
8
8
  export type BlocksPanelProps = {
9
9
  messages: ChatMessage[];
10
+ loading?: boolean;
11
+ title?: string;
10
12
  history?: {
11
13
  sessions?: ControllerState["sessions"];
12
14
  currentId?: string;
@@ -51,6 +53,7 @@ export type BlocksPanelProps = {
51
53
  onSend: (text: string, attachments: UploadedAttachment[]) => void;
52
54
  onStop?: () => void;
53
55
  onNewChat?: () => void;
56
+ layout?: "split" | "float";
54
57
  onToggleLayout?: () => void;
55
58
  onClose?: () => void;
56
59
  onCreditsClick?: () => void;
@@ -67,4 +70,4 @@ export type BlocksPanelProps = {
67
70
  };
68
71
  getAttachmentUrls?: GetAttachmentUrls;
69
72
  };
70
- export declare function BlocksPanel({ messages, history, start, availability, provisioning, older, suspension, onAnswerSuspension, onCancelSuspension, error, locale, credits, branding, onSend, onStop, onNewChat, onToggleLayout, onClose, onCreditsClick, onHeaderPointerDown, processView, onRegenerate, onFeedback, onNavigate, upload, attachmentLimits, getAttachmentUrls, className }: BlocksPanelProps): import("react").JSX.Element;
73
+ export declare function BlocksPanel({ messages, loading, title, history, start, availability, provisioning, older, suspension, onAnswerSuspension, onCancelSuspension, error, locale, credits, branding, onSend, onStop, onNewChat, layout, onToggleLayout, onClose, onCreditsClick, onHeaderPointerDown, processView, onRegenerate, onFeedback, onNavigate, upload, attachmentLimits, getAttachmentUrls, className }: BlocksPanelProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { Run } from "../../core/types";
2
+ import type { BlocksCopy, ThreadCopy } from "../i18n";
3
+ /** The prototype's phase precedence, preferring concise tool names for the live status. */
4
+ export declare function phaseLabel(run: Run, live: BlocksCopy["live"], copy: ThreadCopy, options?: {
5
+ hideTools?: boolean;
6
+ }): string;
7
+ export declare function LiveStatus({ run, live, copy, hideTools }: {
8
+ run: Run;
9
+ live: BlocksCopy["live"];
10
+ copy: ThreadCopy;
11
+ hideTools?: boolean;
12
+ }): import("react").JSX.Element | null;
@@ -3,10 +3,11 @@ export type OlderMessages = {
3
3
  loading: boolean;
4
4
  onLoad: () => void;
5
5
  };
6
- /** Layout glue: only follow while the reader remains at the bottom. */
6
+ /** Layout glue: follow at the bottom and resume when the reader sends or explicitly jumps. */
7
7
  export declare function useFollowLatest({ messages, older, active }: {
8
8
  messages: readonly {
9
9
  id: string;
10
+ role: "user" | "assistant";
10
11
  }[];
11
12
  older?: OlderMessages;
12
13
  active?: boolean;
@@ -26,13 +26,20 @@ export declare function threadLabelsFor(locale?: string): {
26
26
  export type PanelCopy = {
27
27
  credits: (balance: number, locale: string) => string;
28
28
  history: string;
29
+ backToChat: string;
30
+ historyTitle: string;
31
+ loadingSession: string;
29
32
  newChat: string;
30
33
  switchLayout: string;
34
+ layoutFloat: string;
35
+ layoutSplit: string;
31
36
  close: string;
32
37
  placeholder: string;
33
38
  unavailable: string;
34
39
  provisionTitle: string;
35
40
  provisionAction: string;
41
+ startGreeting: string;
42
+ startBody: string;
36
43
  };
37
44
  export declare const zhPanelCopy: PanelCopy;
38
45
  export declare const enPanelCopy: PanelCopy;
@@ -82,6 +89,14 @@ export declare function historyLabelsFor(locale?: string): Partial<import("../co
82
89
  import { type AIAnswerLabels } from "../components/ui/ai-answer-clean";
83
90
  import { type DropzoneLabels } from "../components/ui/dropzone-clean";
84
91
  export type BlocksCopy = {
92
+ live: {
93
+ ready: string;
94
+ thinking: string;
95
+ tool: (name: string) => string;
96
+ writing: string;
97
+ waiting: string;
98
+ working: string;
99
+ };
85
100
  attachments: {
86
101
  dropzone: DropzoneLabels;
87
102
  collapse: string;
@@ -30,6 +30,9 @@ export type ThreadDecision = {
30
30
  export type ThreadPart = {
31
31
  kind: "text";
32
32
  text: string;
33
+ } | {
34
+ kind: "note";
35
+ text: string;
33
36
  } | {
34
37
  kind: "tools";
35
38
  id: string;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@itechchoice/prime-chatkit",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-alpha.10",
4
4
  "description": "PrimeChatKit: React chat UI for products built on the prime-chatkit SDK BFF contract. Shows the agent's work: thinking, tool calls, approvals, sources and cost.",
5
- "license": "UNLICENSED",
5
+ "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
7
- "access": "restricted"
7
+ "access": "public"
8
8
  },
9
9
  "type": "module",
10
10
  "module": "./dist/index.js",