@bitbaum/chatkit 0.17.1 → 0.18.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/README.md +152 -0
- package/dist/conversations.d.ts +99 -0
- package/dist/conversations.d.ts.map +1 -0
- package/dist/conversations.js +146 -0
- package/dist/conversations.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/react/ChatApp.d.ts +123 -0
- package/dist/react/ChatApp.d.ts.map +1 -0
- package/dist/react/ChatApp.js +215 -0
- package/dist/react/ChatApp.js.map +1 -0
- package/dist/react/ChatHistory.d.ts +28 -0
- package/dist/react/ChatHistory.d.ts.map +1 -0
- package/dist/react/ChatHistory.js +58 -0
- package/dist/react/ChatHistory.js.map +1 -0
- package/dist/react/Composer.d.ts +4 -1
- package/dist/react/Composer.d.ts.map +1 -1
- package/dist/react/Composer.js +3 -3
- package/dist/react/Composer.js.map +1 -1
- package/dist/react/Thread.d.ts +4 -0
- package/dist/react/Thread.d.ts.map +1 -1
- package/dist/react/Thread.js +2 -2
- package/dist/react/Thread.js.map +1 -1
- package/dist/react/icons.d.ts +7 -0
- package/dist/react/icons.d.ts.map +1 -1
- package/dist/react/icons.js +8 -0
- package/dist/react/icons.js.map +1 -1
- package/dist/react/index.d.ts +6 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/use-chat-app.d.ts +81 -0
- package/dist/react/use-chat-app.d.ts.map +1 -0
- package/dist/react/use-chat-app.js +380 -0
- package/dist/react/use-chat-app.js.map +1 -0
- package/dist/stores.d.ts +63 -0
- package/dist/stores.d.ts.map +1 -0
- package/dist/stores.js +291 -0
- package/dist/stores.js.map +1 -0
- package/package.json +2 -2
- package/styles.css +409 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chat-app.js","sourceRoot":"","sources":["../../src/react/use-chat-app.ts"],"names":[],"mappings":"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"}
|
package/dist/stores.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a ChatApp keeps its conversations. Storage is an ADAPTER: the screen
|
|
3
|
+
* reads and writes through `ConversationStore` and never knows whether the
|
|
4
|
+
* chats are on the device or on a server. Two reference adapters:
|
|
5
|
+
*
|
|
6
|
+
* localConversationStore({ key }) the device — signed-out chats
|
|
7
|
+
* httpConversationStore({ baseUrl }) the product's server — signed-in chats
|
|
8
|
+
*/
|
|
9
|
+
import { type ConversationStore } from "./conversations.js";
|
|
10
|
+
type KeyValue = Pick<Storage, "getItem" | "setItem" | "removeItem">;
|
|
11
|
+
/** Bumped when the stored shape changes; an older shape is read as empty
|
|
12
|
+
* rather than misread. */
|
|
13
|
+
export declare const LOCAL_STORE_VERSION = 1;
|
|
14
|
+
/** A store in memory: a temporary chat, a test, a page with no storage. */
|
|
15
|
+
export declare function memoryConversationStore(): ConversationStore;
|
|
16
|
+
/**
|
|
17
|
+
* Conversations on the device. Never throws: storage that is missing, full,
|
|
18
|
+
* blocked or holding something unreadable degrades to memory for this page,
|
|
19
|
+
* so the chat still works and simply is not there after a reload.
|
|
20
|
+
*
|
|
21
|
+
* Layout (versioned): `<key>:v1` holds the list, `<key>:v1:<id>` each chat's
|
|
22
|
+
* messages — so one long chat can be evicted without losing the others. When
|
|
23
|
+
* the quota is reached the OLDEST chats are dropped until the write fits.
|
|
24
|
+
*/
|
|
25
|
+
export declare function localConversationStore({ key, storage, limit, }?: {
|
|
26
|
+
/** Namespace on the device. One per product (and per signed-out person, if
|
|
27
|
+
* the device is shared and the product can tell them apart). */
|
|
28
|
+
key?: string;
|
|
29
|
+
/** Defaults to localStorage. `null` keeps everything in memory. */
|
|
30
|
+
storage?: KeyValue | null;
|
|
31
|
+
/** Most chats kept; the oldest go first. */
|
|
32
|
+
limit?: number;
|
|
33
|
+
}): ConversationStore;
|
|
34
|
+
export type HttpConversationStoreOptions = {
|
|
35
|
+
/** The collection, e.g. "/api/conversations". */
|
|
36
|
+
baseUrl: string;
|
|
37
|
+
/** Headers on every request (an auth token), or a function returning them. */
|
|
38
|
+
headers?: Record<string, string> | (() => Record<string, string>);
|
|
39
|
+
/** Defaults to the global fetch. */
|
|
40
|
+
fetch?: typeof fetch;
|
|
41
|
+
/**
|
|
42
|
+
* The product's own chat route already writes every turn (Heidi's
|
|
43
|
+
* `/messages`, Loki's `/api/loki`): then `append` sends nothing, so a turn
|
|
44
|
+
* is never stored twice.
|
|
45
|
+
*/
|
|
46
|
+
serverWritesTurns?: boolean;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Conversations on the product's server, over this REST shape (Heidi's
|
|
50
|
+
* `/api/conversations`, generalised):
|
|
51
|
+
*
|
|
52
|
+
* GET {base} → { conversations: [{ id, title, updatedAt }] }
|
|
53
|
+
* POST {base} { title } → { conversation: { id, title, updatedAt } }
|
|
54
|
+
* GET {base}/{id} → { conversation, messages: [...] } 404 = gone
|
|
55
|
+
* POST {base}/{id}/messages { message } → 2xx
|
|
56
|
+
* PATCH {base}/{id} { title } → 2xx
|
|
57
|
+
* DELETE {base}/{id} → 2xx
|
|
58
|
+
*
|
|
59
|
+
* A failed request throws an Error naming the call; ChatApp shows it in words.
|
|
60
|
+
*/
|
|
61
|
+
export declare function httpConversationStore({ baseUrl, headers, fetch: fetchImpl, serverWritesTurns, }: HttpConversationStoreOptions): ConversationStore;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=stores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAIL,KAAK,iBAAiB,EAGvB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;AAEpE;2BAC2B;AAC3B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,2EAA2E;AAC3E,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAe,EACf,OAAO,EACP,KAAW,GACZ,GAAE;IACD;qEACiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,iBAAiB,CAkJzB;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,OAAO,EACP,KAAK,EAAE,SAAS,EAChB,iBAAyB,GAC1B,EAAE,4BAA4B,GAAG,iBAAiB,CA0ElD"}
|
package/dist/stores.js
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a ChatApp keeps its conversations. Storage is an ADAPTER: the screen
|
|
3
|
+
* reads and writes through `ConversationStore` and never knows whether the
|
|
4
|
+
* chats are on the device or on a server. Two reference adapters:
|
|
5
|
+
*
|
|
6
|
+
* localConversationStore({ key }) the device — signed-out chats
|
|
7
|
+
* httpConversationStore({ baseUrl }) the product's server — signed-in chats
|
|
8
|
+
*/
|
|
9
|
+
import { newId, sortConversations, } from "./conversations.js";
|
|
10
|
+
/** Bumped when the stored shape changes; an older shape is read as empty
|
|
11
|
+
* rather than misread. */
|
|
12
|
+
export const LOCAL_STORE_VERSION = 1;
|
|
13
|
+
/** A store in memory: a temporary chat, a test, a page with no storage. */
|
|
14
|
+
export function memoryConversationStore() {
|
|
15
|
+
return localConversationStore({ storage: null });
|
|
16
|
+
}
|
|
17
|
+
/** The page's localStorage, or null where touching it throws (Safari private
|
|
18
|
+
* mode on older versions, storage blocked by the browser's settings). */
|
|
19
|
+
function deviceStorage() {
|
|
20
|
+
try {
|
|
21
|
+
const s = globalThis.localStorage;
|
|
22
|
+
if (!s)
|
|
23
|
+
return null;
|
|
24
|
+
const probe = "__ck_probe__";
|
|
25
|
+
s.setItem(probe, "1");
|
|
26
|
+
s.removeItem(probe);
|
|
27
|
+
return s;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** What is kept of a message on the device: everything but attachment
|
|
34
|
+
* payloads. A picture is kept by name — a screenshot would spend the whole
|
|
35
|
+
* quota, and a blob: URL is dead after a reload anyway. */
|
|
36
|
+
function forDevice(message) {
|
|
37
|
+
if (!message.attachments?.length)
|
|
38
|
+
return message;
|
|
39
|
+
return {
|
|
40
|
+
...message,
|
|
41
|
+
attachments: message.attachments.map(({ kind, name }) => ({ kind, name })),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Conversations on the device. Never throws: storage that is missing, full,
|
|
46
|
+
* blocked or holding something unreadable degrades to memory for this page,
|
|
47
|
+
* so the chat still works and simply is not there after a reload.
|
|
48
|
+
*
|
|
49
|
+
* Layout (versioned): `<key>:v1` holds the list, `<key>:v1:<id>` each chat's
|
|
50
|
+
* messages — so one long chat can be evicted without losing the others. When
|
|
51
|
+
* the quota is reached the OLDEST chats are dropped until the write fits.
|
|
52
|
+
*/
|
|
53
|
+
export function localConversationStore({ key = "ck-chat", storage, limit = 200, } = {}) {
|
|
54
|
+
const store = storage === undefined ? deviceStorage() : storage;
|
|
55
|
+
const prefix = `${key}:v${LOCAL_STORE_VERSION}`;
|
|
56
|
+
const indexKey = prefix;
|
|
57
|
+
const chatKey = (id) => `${prefix}:${id}`;
|
|
58
|
+
// The memory copy is the truth for this page; storage is a mirror of it.
|
|
59
|
+
let index = null;
|
|
60
|
+
const chats = new Map();
|
|
61
|
+
const read = (k) => {
|
|
62
|
+
if (!store)
|
|
63
|
+
return null;
|
|
64
|
+
try {
|
|
65
|
+
const raw = store.getItem(k);
|
|
66
|
+
return raw ? JSON.parse(raw) : null;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
// "quota" frees room by dropping old chats; "broken" (blocked, private
|
|
73
|
+
// mode, a value that cannot be written) stops mirroring for this page.
|
|
74
|
+
let mirror = store !== null;
|
|
75
|
+
const write = (k, value) => {
|
|
76
|
+
if (!store || !mirror)
|
|
77
|
+
return "broken";
|
|
78
|
+
try {
|
|
79
|
+
store.setItem(k, JSON.stringify(value));
|
|
80
|
+
return "ok";
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
const err = e;
|
|
84
|
+
const quota = err?.name === "QuotaExceededError" ||
|
|
85
|
+
err?.name === "NS_ERROR_DOM_QUOTA_REACHED" ||
|
|
86
|
+
err?.code === 22 ||
|
|
87
|
+
err?.code === 1014 ||
|
|
88
|
+
/quota/i.test(String(err?.message ?? ""));
|
|
89
|
+
if (quota)
|
|
90
|
+
return "quota";
|
|
91
|
+
mirror = false;
|
|
92
|
+
return "broken";
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const drop = (k) => {
|
|
96
|
+
try {
|
|
97
|
+
store?.removeItem(k);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
/* nothing to do: the memory copy is already gone */
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const loadIndex = () => {
|
|
104
|
+
if (index)
|
|
105
|
+
return index;
|
|
106
|
+
const raw = read(indexKey);
|
|
107
|
+
index = Array.isArray(raw)
|
|
108
|
+
? raw.filter((c) => !!c &&
|
|
109
|
+
typeof c.id === "string" &&
|
|
110
|
+
typeof c.title === "string")
|
|
111
|
+
: [];
|
|
112
|
+
return index;
|
|
113
|
+
};
|
|
114
|
+
const loadChat = (id) => {
|
|
115
|
+
const known = chats.get(id);
|
|
116
|
+
if (known)
|
|
117
|
+
return known;
|
|
118
|
+
const raw = read(chatKey(id));
|
|
119
|
+
const messages = Array.isArray(raw)
|
|
120
|
+
? raw.filter((m) => !!m && typeof m.id === "string" && "content" in m)
|
|
121
|
+
: [];
|
|
122
|
+
chats.set(id, messages);
|
|
123
|
+
return messages;
|
|
124
|
+
};
|
|
125
|
+
/** Write, evicting the oldest other chats while the quota says no. */
|
|
126
|
+
const persist = (keep) => {
|
|
127
|
+
const list = sortConversations(loadIndex());
|
|
128
|
+
while (list.length > limit) {
|
|
129
|
+
const gone = list.pop();
|
|
130
|
+
chats.delete(gone.id);
|
|
131
|
+
drop(chatKey(gone.id));
|
|
132
|
+
}
|
|
133
|
+
index = list;
|
|
134
|
+
const fits = () => {
|
|
135
|
+
const listed = write(indexKey, list);
|
|
136
|
+
if (listed !== "ok" || keep === null)
|
|
137
|
+
return listed;
|
|
138
|
+
return write(chatKey(keep), loadChat(keep));
|
|
139
|
+
};
|
|
140
|
+
for (let result = fits(); result === "quota"; result = fits()) {
|
|
141
|
+
const victim = [...list].reverse().find((c) => c.id !== keep);
|
|
142
|
+
if (!victim) {
|
|
143
|
+
// Nothing left to give up: this chat stays in memory for the page.
|
|
144
|
+
if (keep !== null)
|
|
145
|
+
drop(chatKey(keep));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
list.splice(list.indexOf(victim), 1);
|
|
149
|
+
chats.delete(victim.id);
|
|
150
|
+
drop(chatKey(victim.id));
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const touch = (id, patch = {}) => {
|
|
154
|
+
const list = loadIndex();
|
|
155
|
+
const i = list.findIndex((c) => c.id === id);
|
|
156
|
+
if (i < 0)
|
|
157
|
+
return false;
|
|
158
|
+
list[i] = { ...list[i], ...patch };
|
|
159
|
+
return true;
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
async list() {
|
|
163
|
+
return sortConversations(loadIndex()).map((c) => ({ ...c }));
|
|
164
|
+
},
|
|
165
|
+
async get(id) {
|
|
166
|
+
const summary = loadIndex().find((c) => c.id === id);
|
|
167
|
+
if (!summary)
|
|
168
|
+
return null;
|
|
169
|
+
const conversation = { ...summary, messages: [...loadChat(id)] };
|
|
170
|
+
return conversation;
|
|
171
|
+
},
|
|
172
|
+
async create(init) {
|
|
173
|
+
const summary = {
|
|
174
|
+
id: newId(),
|
|
175
|
+
title: init?.title ?? "",
|
|
176
|
+
updatedAt: new Date().toISOString(),
|
|
177
|
+
};
|
|
178
|
+
loadIndex().unshift(summary);
|
|
179
|
+
chats.set(summary.id, []);
|
|
180
|
+
persist(summary.id);
|
|
181
|
+
return { ...summary };
|
|
182
|
+
},
|
|
183
|
+
async append(id, message) {
|
|
184
|
+
if (!touch(id, { updatedAt: new Date().toISOString() }))
|
|
185
|
+
return;
|
|
186
|
+
loadChat(id).push(forDevice(message));
|
|
187
|
+
persist(id);
|
|
188
|
+
},
|
|
189
|
+
async rename(id, title) {
|
|
190
|
+
if (!touch(id, { title }))
|
|
191
|
+
return;
|
|
192
|
+
persist(null);
|
|
193
|
+
},
|
|
194
|
+
async remove(id) {
|
|
195
|
+
index = loadIndex().filter((c) => c.id !== id);
|
|
196
|
+
chats.delete(id);
|
|
197
|
+
drop(chatKey(id));
|
|
198
|
+
persist(null);
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Conversations on the product's server, over this REST shape (Heidi's
|
|
204
|
+
* `/api/conversations`, generalised):
|
|
205
|
+
*
|
|
206
|
+
* GET {base} → { conversations: [{ id, title, updatedAt }] }
|
|
207
|
+
* POST {base} { title } → { conversation: { id, title, updatedAt } }
|
|
208
|
+
* GET {base}/{id} → { conversation, messages: [...] } 404 = gone
|
|
209
|
+
* POST {base}/{id}/messages { message } → 2xx
|
|
210
|
+
* PATCH {base}/{id} { title } → 2xx
|
|
211
|
+
* DELETE {base}/{id} → 2xx
|
|
212
|
+
*
|
|
213
|
+
* A failed request throws an Error naming the call; ChatApp shows it in words.
|
|
214
|
+
*/
|
|
215
|
+
export function httpConversationStore({ baseUrl, headers, fetch: fetchImpl, serverWritesTurns = false, }) {
|
|
216
|
+
const base = baseUrl.replace(/\/+$/, "");
|
|
217
|
+
const call = async (method, path, body) => {
|
|
218
|
+
const f = fetchImpl ?? globalThis.fetch;
|
|
219
|
+
const extra = typeof headers === "function" ? headers() : (headers ?? {});
|
|
220
|
+
const res = await f(`${base}${path}`, {
|
|
221
|
+
method,
|
|
222
|
+
credentials: "same-origin",
|
|
223
|
+
headers: {
|
|
224
|
+
accept: "application/json",
|
|
225
|
+
...(body === undefined ? {} : { "content-type": "application/json" }),
|
|
226
|
+
...extra,
|
|
227
|
+
},
|
|
228
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
229
|
+
});
|
|
230
|
+
if (!res.ok && !(method === "GET" && res.status === 404)) {
|
|
231
|
+
throw new Error(`${method} ${base}${path} answered ${res.status}`);
|
|
232
|
+
}
|
|
233
|
+
return res;
|
|
234
|
+
};
|
|
235
|
+
const json = async (res) => {
|
|
236
|
+
try {
|
|
237
|
+
const v = await res.json();
|
|
238
|
+
return v && typeof v === "object" ? v : {};
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
return {};
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
const summary = (raw) => {
|
|
245
|
+
const r = (raw ?? {});
|
|
246
|
+
return {
|
|
247
|
+
id: String(r.id ?? ""),
|
|
248
|
+
title: typeof r.title === "string" ? r.title : "",
|
|
249
|
+
updatedAt: typeof r.updatedAt === "string" || typeof r.updatedAt === "number"
|
|
250
|
+
? r.updatedAt
|
|
251
|
+
: new Date().toISOString(),
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
const enc = encodeURIComponent;
|
|
255
|
+
return {
|
|
256
|
+
async list() {
|
|
257
|
+
const res = await call("GET", "");
|
|
258
|
+
const body = await res.json().catch(() => null);
|
|
259
|
+
const rows = Array.isArray(body)
|
|
260
|
+
? body
|
|
261
|
+
: Array.isArray(body?.conversations)
|
|
262
|
+
? body.conversations
|
|
263
|
+
: [];
|
|
264
|
+
return sortConversations(rows.map(summary).filter((c) => c.id));
|
|
265
|
+
},
|
|
266
|
+
async get(id) {
|
|
267
|
+
const res = await call("GET", `/${enc(id)}`);
|
|
268
|
+
if (res.status === 404)
|
|
269
|
+
return null;
|
|
270
|
+
const body = await json(res);
|
|
271
|
+
const messages = Array.isArray(body.messages) ? body.messages : [];
|
|
272
|
+
return { ...summary(body.conversation ?? { id }), messages };
|
|
273
|
+
},
|
|
274
|
+
async create(init) {
|
|
275
|
+
const body = await json(await call("POST", "", { title: init?.title ?? "" }));
|
|
276
|
+
return summary(body.conversation);
|
|
277
|
+
},
|
|
278
|
+
async append(id, message) {
|
|
279
|
+
if (serverWritesTurns)
|
|
280
|
+
return;
|
|
281
|
+
await call("POST", `/${enc(id)}/messages`, { message });
|
|
282
|
+
},
|
|
283
|
+
async rename(id, title) {
|
|
284
|
+
await call("PATCH", `/${enc(id)}`, { title });
|
|
285
|
+
},
|
|
286
|
+
async remove(id) {
|
|
287
|
+
await call("DELETE", `/${enc(id)}`);
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=stores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitbaum/chatkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "One chat for every product: a composer with a microphone that always works, a thread that does not fight the reader, messages with copy and retry, and LLM markdown — the fleet's chat standard as a package.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Cato",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"format": "prettier --write .",
|
|
72
72
|
"format:check": "prettier --check .",
|
|
73
73
|
"demo": "esbuild demo/demo.tsx --bundle --jsx=automatic --format=iife --define:process.env.NODE_ENV='\"production\"' --outfile=demo/dist/demo.js --log-level=warning",
|
|
74
|
-
"test:browser": "pnpm run demo && node test/browser.mjs && node test/browser-scroll.mjs"
|
|
74
|
+
"test:browser": "pnpm run demo && node test/browser.mjs && node test/browser-scroll.mjs && node test/browser-app.mjs"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@bitbaum/design-tokens": "github:bitbaum/design-tokens#5c31f48743dabf9294bf9380a15862b4efbc68a0",
|