@ykurilov/agent-chat-images 0.0.0-stage → 0.55.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 (51) hide show
  1. package/CHANGELOG.md +582 -0
  2. package/LICENSE +21 -0
  3. package/README.md +160 -2
  4. package/dist/chunk-33SNN6BB.js +397 -0
  5. package/dist/chunk-33SNN6BB.js.map +1 -0
  6. package/dist/chunk-5IORNMTX.js +88 -0
  7. package/dist/chunk-5IORNMTX.js.map +1 -0
  8. package/dist/chunk-ZMGNR2S5.js +9 -0
  9. package/dist/chunk-ZMGNR2S5.js.map +1 -0
  10. package/dist/index.js +1864 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/postgres.js +187 -0
  13. package/dist/postgres.js.map +1 -0
  14. package/dist/react/index.js +72 -0
  15. package/dist/react/index.js.map +1 -0
  16. package/dist/sqlite.js +171 -0
  17. package/dist/sqlite.js.map +1 -0
  18. package/dist/types/create-image-generation.d.ts +124 -0
  19. package/dist/types/download-address.d.ts +2 -0
  20. package/dist/types/download-image.d.ts +29 -0
  21. package/dist/types/hide-secrets.d.ts +5 -0
  22. package/dist/types/image-catalog.d.ts +154 -0
  23. package/dist/types/image-generation-error.d.ts +11 -0
  24. package/dist/types/image-jobs.d.ts +93 -0
  25. package/dist/types/image-queue/create-image-queue.d.ts +172 -0
  26. package/dist/types/image-queue/image-job-store.d.ts +120 -0
  27. package/dist/types/image-queue/migration-settings.d.ts +4 -0
  28. package/dist/types/image-queue/postgres-image-job-store.d.ts +8 -0
  29. package/dist/types/image-queue/postgres-schema.d.ts +267 -0
  30. package/dist/types/image-queue/sqlite-image-job-store.d.ts +6 -0
  31. package/dist/types/image-queue/sqlite-schema.d.ts +280 -0
  32. package/dist/types/image-queue/turn-counter.d.ts +10 -0
  33. package/dist/types/image-setup.d.ts +79 -0
  34. package/dist/types/image-task-polling.d.ts +20 -0
  35. package/dist/types/images-usage.d.ts +17 -0
  36. package/dist/types/index.d.ts +17 -0
  37. package/dist/types/kie-provider.d.ts +6 -0
  38. package/dist/types/postgres.d.ts +9 -0
  39. package/dist/types/postprocess-image.d.ts +27 -0
  40. package/dist/types/react/images-client.d.ts +6 -0
  41. package/dist/types/react/index.d.ts +2 -0
  42. package/dist/types/runware-provider.d.ts +6 -0
  43. package/dist/types/save-images.d.ts +47 -0
  44. package/dist/types/sqlite.d.ts +8 -0
  45. package/drizzle/postgres/0000_init.sql +24 -0
  46. package/drizzle/postgres/meta/0000_snapshot.json +202 -0
  47. package/drizzle/postgres/meta/_journal.json +13 -0
  48. package/drizzle/sqlite/0000_init.sql +22 -0
  49. package/drizzle/sqlite/meta/0000_snapshot.json +166 -0
  50. package/drizzle/sqlite/meta/_journal.json +13 -0
  51. package/package.json +92 -3
package/CHANGELOG.md ADDED
@@ -0,0 +1,582 @@
1
+ # @ykurilov/agent-chat-images
2
+
3
+ ## 0.55.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [51f7b38]
8
+ - Updated dependencies [cdc7dd7]
9
+ - @ykurilov/agent-chat-core@0.55.0
10
+ - @ykurilov/agent-chat-react@0.55.0
11
+ - @ykurilov/agent-chat-attachments@0.55.0
12
+
13
+ ## 0.54.0
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [c8fb0dd]
18
+ - Updated dependencies [73d3aaa]
19
+ - Updated dependencies [fa90219]
20
+ - @ykurilov/agent-chat-react@0.54.0
21
+ - @ykurilov/agent-chat-core@0.54.0
22
+ - @ykurilov/agent-chat-attachments@0.54.0
23
+
24
+ ## 0.53.0
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [b6a7786]
29
+ - @ykurilov/agent-chat-core@0.53.0
30
+ - @ykurilov/agent-chat-react@0.53.0
31
+ - @ykurilov/agent-chat-attachments@0.53.0
32
+
33
+ ## 0.52.0
34
+
35
+ ### Patch Changes
36
+
37
+ - @ykurilov/agent-chat-attachments@0.52.0
38
+ - @ykurilov/agent-chat-core@0.52.0
39
+ - @ykurilov/agent-chat-react@0.52.0
40
+
41
+ ## 0.51.0
42
+
43
+ ### Patch Changes
44
+
45
+ - Updated dependencies [41b1726]
46
+ - @ykurilov/agent-chat-core@0.51.0
47
+ - @ykurilov/agent-chat-attachments@0.51.0
48
+ - @ykurilov/agent-chat-react@0.51.0
49
+
50
+ ## 0.50.0
51
+
52
+ ### Patch Changes
53
+
54
+ - @ykurilov/agent-chat-attachments@0.50.0
55
+ - @ykurilov/agent-chat-core@0.50.0
56
+ - @ykurilov/agent-chat-react@0.50.0
57
+
58
+ ## 0.49.0
59
+
60
+ ### Patch Changes
61
+
62
+ - Updated dependencies [084cef7]
63
+ - @ykurilov/agent-chat-core@0.49.0
64
+ - @ykurilov/agent-chat-react@0.49.0
65
+ - @ykurilov/agent-chat-attachments@0.49.0
66
+
67
+ ## 0.48.0
68
+
69
+ ### Patch Changes
70
+
71
+ - Updated dependencies [fa10d5a]
72
+ - @ykurilov/agent-chat-core@0.48.0
73
+ - @ykurilov/agent-chat-attachments@0.48.0
74
+ - @ykurilov/agent-chat-react@0.48.0
75
+
76
+ ## 0.47.0
77
+
78
+ ### Patch Changes
79
+
80
+ - Updated dependencies [5a59c33]
81
+ - @ykurilov/agent-chat-core@0.47.0
82
+ - @ykurilov/agent-chat-attachments@0.47.0
83
+ - @ykurilov/agent-chat-react@0.47.0
84
+
85
+ ## 0.46.2
86
+
87
+ ### Patch Changes
88
+
89
+ - Updated dependencies [3d0d2f2]
90
+ - @ykurilov/agent-chat-core@0.46.2
91
+ - @ykurilov/agent-chat-attachments@0.46.2
92
+ - @ykurilov/agent-chat-react@0.46.2
93
+
94
+ ## 0.46.1
95
+
96
+ ### Patch Changes
97
+
98
+ - @ykurilov/agent-chat-attachments@0.46.1
99
+ - @ykurilov/agent-chat-core@0.46.1
100
+ - @ykurilov/agent-chat-react@0.46.1
101
+
102
+ ## 0.46.0
103
+
104
+ ### Patch Changes
105
+
106
+ - Updated dependencies [56d7528]
107
+ - Updated dependencies [a1933fd]
108
+ - Updated dependencies [52cc67d]
109
+ - @ykurilov/agent-chat-core@0.46.0
110
+ - @ykurilov/agent-chat-react@0.46.0
111
+ - @ykurilov/agent-chat-attachments@0.46.0
112
+
113
+ ## 0.45.0
114
+
115
+ ### Patch Changes
116
+
117
+ - Updated dependencies [eb74c58]
118
+ - Updated dependencies [ac9aede]
119
+ - @ykurilov/agent-chat-react@0.45.0
120
+ - @ykurilov/agent-chat-attachments@0.45.0
121
+ - @ykurilov/agent-chat-core@0.45.0
122
+
123
+ ## 0.44.0
124
+
125
+ ### Patch Changes
126
+
127
+ - Updated dependencies [6a2b5d9]
128
+ - @ykurilov/agent-chat-core@0.44.0
129
+ - @ykurilov/agent-chat-react@0.44.0
130
+ - @ykurilov/agent-chat-attachments@0.44.0
131
+
132
+ ## 0.43.0
133
+
134
+ ### Patch Changes
135
+
136
+ - Updated dependencies [763f4c5]
137
+ - @ykurilov/agent-chat-core@0.43.0
138
+ - @ykurilov/agent-chat-attachments@0.43.0
139
+ - @ykurilov/agent-chat-react@0.43.0
140
+
141
+ ## 0.42.0
142
+
143
+ ### Patch Changes
144
+
145
+ - Updated dependencies [a385276]
146
+ - @ykurilov/agent-chat-core@0.42.0
147
+ - @ykurilov/agent-chat-react@0.42.0
148
+ - @ykurilov/agent-chat-attachments@0.42.0
149
+
150
+ ## 0.41.0
151
+
152
+ ### Patch Changes
153
+
154
+ - Updated dependencies [9472fcb]
155
+ - @ykurilov/agent-chat-core@0.41.0
156
+ - @ykurilov/agent-chat-react@0.41.0
157
+ - @ykurilov/agent-chat-attachments@0.41.0
158
+
159
+ ## 0.40.0
160
+
161
+ ### Patch Changes
162
+
163
+ - Updated dependencies [0e7aab3]
164
+ - @ykurilov/agent-chat-core@0.40.0
165
+ - @ykurilov/agent-chat-react@0.40.0
166
+ - @ykurilov/agent-chat-attachments@0.40.0
167
+
168
+ ## 0.39.1
169
+
170
+ ### Patch Changes
171
+
172
+ - Updated dependencies [5c0f3af]
173
+ - @ykurilov/agent-chat-react@0.39.1
174
+ - @ykurilov/agent-chat-attachments@0.39.1
175
+ - @ykurilov/agent-chat-core@0.39.1
176
+
177
+ ## 0.39.0
178
+
179
+ ### Patch Changes
180
+
181
+ - Updated dependencies [3b90429]
182
+ - @ykurilov/agent-chat-core@0.39.0
183
+ - @ykurilov/agent-chat-react@0.39.0
184
+ - @ykurilov/agent-chat-attachments@0.39.0
185
+
186
+ ## 0.38.0
187
+
188
+ ### Patch Changes
189
+
190
+ - Updated dependencies [1cae504]
191
+ - Updated dependencies [4065a4a]
192
+ - @ykurilov/agent-chat-core@0.38.0
193
+ - @ykurilov/agent-chat-attachments@0.38.0
194
+ - @ykurilov/agent-chat-react@0.38.0
195
+
196
+ ## 0.37.0
197
+
198
+ ### Patch Changes
199
+
200
+ - Updated dependencies [7f49d12]
201
+ - Updated dependencies [ea78982]
202
+ - @ykurilov/agent-chat-core@0.37.0
203
+ - @ykurilov/agent-chat-attachments@0.37.0
204
+ - @ykurilov/agent-chat-react@0.37.0
205
+
206
+ ## 0.36.0
207
+
208
+ ### Patch Changes
209
+
210
+ - Updated dependencies [3487fb4]
211
+ - Updated dependencies [8c43b86]
212
+ - Updated dependencies [6f42418]
213
+ - Updated dependencies [5f13c74]
214
+ - @ykurilov/agent-chat-core@0.36.0
215
+ - @ykurilov/agent-chat-react@0.36.0
216
+ - @ykurilov/agent-chat-attachments@0.36.0
217
+
218
+ ## 0.35.0
219
+
220
+ ### Patch Changes
221
+
222
+ - Updated dependencies [6ceee78]
223
+ - Updated dependencies [2382026]
224
+ - @ykurilov/agent-chat-react@0.35.0
225
+ - @ykurilov/agent-chat-core@0.35.0
226
+ - @ykurilov/agent-chat-attachments@0.35.0
227
+
228
+ ## 0.34.0
229
+
230
+ ### Patch Changes
231
+
232
+ - Updated dependencies [d039ce4]
233
+ - @ykurilov/agent-chat-core@0.34.0
234
+ - @ykurilov/agent-chat-react@0.34.0
235
+ - @ykurilov/agent-chat-attachments@0.34.0
236
+
237
+ ## 0.33.0
238
+
239
+ ### Patch Changes
240
+
241
+ - Updated dependencies [4a72339]
242
+ - @ykurilov/agent-chat-core@0.33.0
243
+ - @ykurilov/agent-chat-attachments@0.33.0
244
+ - @ykurilov/agent-chat-react@0.33.0
245
+
246
+ ## 0.32.0
247
+
248
+ ### Patch Changes
249
+
250
+ - Updated dependencies [bc78aec]
251
+ - Updated dependencies [4087a22]
252
+ - Updated dependencies [71c32b7]
253
+ - Updated dependencies [cae13bf]
254
+ - Updated dependencies [a94bda9]
255
+ - Updated dependencies [4e44492]
256
+ - Updated dependencies [ac9b7d3]
257
+ - Updated dependencies [27f4b1e]
258
+ - @ykurilov/agent-chat-attachments@0.32.0
259
+ - @ykurilov/agent-chat-react@0.32.0
260
+ - @ykurilov/agent-chat-core@0.32.0
261
+
262
+ ## 0.31.2
263
+
264
+ ### Patch Changes
265
+
266
+ - @ykurilov/agent-chat-attachments@0.31.2
267
+ - @ykurilov/agent-chat-core@0.31.2
268
+ - @ykurilov/agent-chat-react@0.31.2
269
+
270
+ ## 0.31.1
271
+
272
+ ### Patch Changes
273
+
274
+ - @ykurilov/agent-chat-attachments@0.31.1
275
+ - @ykurilov/agent-chat-core@0.31.1
276
+ - @ykurilov/agent-chat-react@0.31.1
277
+
278
+ ## 0.31.0
279
+
280
+ ### Patch Changes
281
+
282
+ - @ykurilov/agent-chat-attachments@0.31.0
283
+ - @ykurilov/agent-chat-core@0.31.0
284
+ - @ykurilov/agent-chat-react@0.31.0
285
+
286
+ ## 0.30.0
287
+
288
+ ### Patch Changes
289
+
290
+ - @ykurilov/agent-chat-attachments@0.30.0
291
+ - @ykurilov/agent-chat-core@0.30.0
292
+ - @ykurilov/agent-chat-react@0.30.0
293
+
294
+ ## 0.29.0
295
+
296
+ ### Patch Changes
297
+
298
+ - @ykurilov/agent-chat-attachments@0.29.0
299
+ - @ykurilov/agent-chat-core@0.29.0
300
+ - @ykurilov/agent-chat-react@0.29.0
301
+
302
+ ## 0.28.0
303
+
304
+ ### Patch Changes
305
+
306
+ - Updated dependencies [11c3c97]
307
+ - Updated dependencies [d63ccaa]
308
+ - Updated dependencies [6a2f903]
309
+ - Updated dependencies [189cba9]
310
+ - @ykurilov/agent-chat-core@0.28.0
311
+ - @ykurilov/agent-chat-react@0.28.0
312
+ - @ykurilov/agent-chat-attachments@0.28.0
313
+
314
+ ## 0.27.0
315
+
316
+ ### Patch Changes
317
+
318
+ - Updated dependencies [d8341b2]
319
+ - Updated dependencies [5e4ed28]
320
+ - Updated dependencies [e0bb519]
321
+ - @ykurilov/agent-chat-core@0.27.0
322
+ - @ykurilov/agent-chat-react@0.27.0
323
+ - @ykurilov/agent-chat-attachments@0.27.0
324
+
325
+ ## 0.26.2
326
+
327
+ ### Patch Changes
328
+
329
+ - Updated dependencies [f24858a]
330
+ - @ykurilov/agent-chat-core@0.26.2
331
+ - @ykurilov/agent-chat-attachments@0.26.2
332
+ - @ykurilov/agent-chat-react@0.26.2
333
+
334
+ ## 0.26.1
335
+
336
+ ### Patch Changes
337
+
338
+ - Updated dependencies [5b52515]
339
+ - @ykurilov/agent-chat-react@0.26.1
340
+ - @ykurilov/agent-chat-attachments@0.26.1
341
+ - @ykurilov/agent-chat-core@0.26.1
342
+
343
+ ## 0.26.0
344
+
345
+ ### Patch Changes
346
+
347
+ - Updated dependencies [eb43e47]
348
+ - @ykurilov/agent-chat-core@0.26.0
349
+ - @ykurilov/agent-chat-attachments@0.26.0
350
+ - @ykurilov/agent-chat-react@0.26.0
351
+
352
+ ## 0.25.0
353
+
354
+ ### Patch Changes
355
+
356
+ - Updated dependencies [99d426e]
357
+ - Updated dependencies [d8201f6]
358
+ - @ykurilov/agent-chat-core@0.25.0
359
+ - @ykurilov/agent-chat-attachments@0.25.0
360
+ - @ykurilov/agent-chat-react@0.25.0
361
+
362
+ ## 0.24.0
363
+
364
+ ### Patch Changes
365
+
366
+ - Updated dependencies [9b895cd]
367
+ - @ykurilov/agent-chat-core@0.24.0
368
+ - @ykurilov/agent-chat-react@0.24.0
369
+ - @ykurilov/agent-chat-attachments@0.24.0
370
+
371
+ ## 0.23.0
372
+
373
+ ### Patch Changes
374
+
375
+ - Updated dependencies [30fb729]
376
+ - @ykurilov/agent-chat-react@0.23.0
377
+ - @ykurilov/agent-chat-attachments@0.23.0
378
+ - @ykurilov/agent-chat-core@0.23.0
379
+
380
+ ## 0.22.0
381
+
382
+ ### Minor Changes
383
+
384
+ - e9c768f: Размер 1K, цены GPT Image по замеру Runware, GPT Image 2 без прозрачного фона.
385
+
386
+ - `size: "1k"` в `createImageGeneration`, `createImageQueue` и в назначении: длинная сторона около 1024 (1:1 — 1024×1024, 16:9 — 1088×608), стороны кратны 16, площадь не меньше 655 360. Без настройки — размер как раньше (1:1 — 816×816). Назначение главнее общей настройки.
387
+ - Цены GPT Image 2, 2.5 Flare и 2.5 Sunburst — по замеру Runware (1024×1024, low: $0.00602, $0.00602, $0.00599). Было 0.02, 0.04 и 0.02. Цена из каталога учитывает размер и качество: medium вчетверо дороже low, high и auto — в 16 раз. По ней бронь в лимитах и расход, если провайдер не прислал цену.
388
+ - GPT Image 2 больше не обещает прозрачный фон: Runware отвечает `invalidOpenAiBackground`. Настройка `transparentBackground: true` с этой моделью — ошибка при создании.
389
+ - Очередь с Runware проверена тестами: ответ сразу, без опроса; прозрачный фон без `removeBackground`; `maxImagesPerTurn`.
390
+
391
+ ### Как обновить приложение
392
+
393
+ 1. `pnpm up "@ykurilov/agent-chat-*@^0.22.0"`.
394
+ 2. Нужна картинка покрупнее — добавить `size: "1k"` рядом с `model` или в назначении.
395
+ 3. Если где-то стоит `gpt-image-2` с `transparentBackground: true` — сервер не запустится с ошибкой «модель gpt-image-2 не умеет прозрачный фон». Поменять модель на `gpt-image-2.5-sunburst` (или `gpt-image-2.5-flare`).
396
+ 4. Свои тесты, которые сверяли расход GPT Image с 0.02 или 0.04, обновить: без цены от провайдера теперь пишется 0.005 (наименьший размер, low) или 0.007 (1K, low).
397
+
398
+ ### Patch Changes
399
+
400
+ - @ykurilov/agent-chat-attachments@0.22.0
401
+ - @ykurilov/agent-chat-core@0.22.0
402
+ - @ykurilov/agent-chat-react@0.22.0
403
+
404
+ ## 0.21.0
405
+
406
+ ### Minor Changes
407
+
408
+ - 7c3bcc4: Картинки в файлы приложения и ход, который не ждёт картинку. Всё новое включается опциями: без них `createImageGeneration` работает как раньше.
409
+
410
+ - `createImageQueue` — своя очередь картинок для инструментов приложения: заказ отвечает сразу, готовая картинка приходит в `deliver(image, job, ctx)`; `ctx.isCurrent()` и `ctx.signal` — картинка ещё нужна (запись файла делать условной). Задачи лежат в базе (`sqliteImageJobStore` из `@ykurilov/agent-chat-images/sqlite`, `postgresImageJobStore` из `/postgres`), переживают перезапуск сервера, расход пишется ровно один раз. Есть «Повторить» (`retry`), замена прежнего заказа на то же место (`key`), предел за ход, `stop()`.
411
+ - `createImageGeneration`: `deliver` — картинка приложению, а не во вложения; `mode: "background"` — инструмент отвечает сразу (с `jobStore`, `pollIntervalMs`, `attempts`, `onQueued`); `maxImagesPerTurn` — предел картинок за ход; `start()` и `stop()`.
412
+ - Ядро: `agent.tools(model)` получает `model.turnId` — номер хода, один на все попытки и запасного провайдера.
413
+ - Ядро: необязательный `ChatStorage.hasUsageRecord(id)` — есть ли запись расхода (память, SQLite, PostgreSQL). Своё хранилище может его не делать.
414
+ - Хранилища задач картинок: одна открытая задача на место (`ownerId` + `key`) — уникальный индекс; своё хранилище бросает `ImageJobKeyTakenError`.
415
+ - Экспорт `DEFAULT_REMOVE_BACKGROUND_PROMPT` — подсказка разделения фона.
416
+ - Защита денег: срок у каждого обращения к провайдеру, повторное скачивание того же адреса вместо нового заказа, второй шаг не оплачивает первый заново.
417
+
418
+ Фоновый режим и очередь с базой: при остановке сервера до закрытия базы вызвать `await images.stop()` (или `imageQueue.stop()`).
419
+
420
+ ### Patch Changes
421
+
422
+ - Updated dependencies [7c3bcc4]
423
+ - @ykurilov/agent-chat-core@0.21.0
424
+ - @ykurilov/agent-chat-attachments@0.21.0
425
+ - @ykurilov/agent-chat-react@0.21.0
426
+
427
+ ## 0.20.0
428
+
429
+ ### Patch Changes
430
+
431
+ - Updated dependencies [fd16b01]
432
+ - Updated dependencies [fd16b01]
433
+ - Updated dependencies [fd16b01]
434
+ - @ykurilov/agent-chat-core@0.20.0
435
+ - @ykurilov/agent-chat-attachments@0.20.0
436
+ - @ykurilov/agent-chat-react@0.20.0
437
+
438
+ ## 0.19.0
439
+
440
+ ### Minor Changes
441
+
442
+ - 427e742: Картинки умеют больше, старые приложения работают как раньше. По умолчанию по-прежнему GPT Image 2 в низком качестве, JPG.
443
+
444
+ - Второй провайдер — KIE.ai (`KIE_API_KEY`): `z-image` (дешёвая картинка без текста, $0.004), `seedream-5-flash-kie` (держит надписи)
445
+ и `seedream-5-flash-layers` (разделение на слои, для предмета без фона). Не успела к сроку — опрос продолжается в фоне,
446
+ повтор того же вызова не создаёт новую платную задачу, о поздней картинке приложение узнаёт в `onLateImage`.
447
+ - `purposes`: приложение задаёт назначения (имя → модель и описание), агент выбирает нужное параметром `purpose`.
448
+ Описание инструмента постоянное. `removeBackground` — сначала картинка, потом предмет без фона.
449
+ - `quality` (`low`, `medium`, `high`, `auto`) и `transparentBackground` для GPT Image 2 и 2.5 у Runware.
450
+ - `output: { format, maxSide }` — формат файла и предел большей стороны; прозрачность сохраняется.
451
+
452
+ Подробно — `docs/images.md`, разделы «Назначения» и «KIE.ai: очередь, повтор и поздний результат».
453
+
454
+ ### Как обновить приложение
455
+
456
+ Ничего менять не нужно. Если в приложении есть тест, который ждёт в `standardImageCatalog` ровно пять моделей
457
+ или одного провайдера, — теперь их восемь и два (`runware`, `kie`), модели Runware идут первыми, как раньше.
458
+ - aa0fd51: Расход картинок будит пороги лимитов: после каждой записи расхода зовётся `limits.afterSpending` (если он есть), так что
459
+ события 80% и 100% (`onThreshold` в `@ykurilov/agent-chat-limits`) приходят и от картинок. Зовётся фоном, сбой уходит
460
+ в `logError`, картинка не теряется.
461
+
462
+ Обновление ничего не требует: `spending.limits` из `createSpendingLimits` уже содержит `afterSpending`.
463
+
464
+ ### Patch Changes
465
+
466
+ - Updated dependencies [fde2297]
467
+ - Updated dependencies [aa0fd51]
468
+ - Updated dependencies [6f26b93]
469
+ - Updated dependencies [9f94dbe]
470
+ - Updated dependencies [2013f15]
471
+ - Updated dependencies [aa0fd51]
472
+ - Updated dependencies [05e258b]
473
+ - Updated dependencies [aa0fd51]
474
+ - @ykurilov/agent-chat-core@0.19.0
475
+ - @ykurilov/agent-chat-react@0.19.0
476
+ - @ykurilov/agent-chat-attachments@0.19.0
477
+
478
+ ## 0.18.6
479
+
480
+ ### Patch Changes
481
+
482
+ - @ykurilov/agent-chat-attachments@0.18.6
483
+ - @ykurilov/agent-chat-core@0.18.6
484
+ - @ykurilov/agent-chat-react@0.18.6
485
+
486
+ ## 0.18.5
487
+
488
+ ### Patch Changes
489
+
490
+ - Updated dependencies [56b9ab6]
491
+ - @ykurilov/agent-chat-react@0.18.5
492
+ - @ykurilov/agent-chat-attachments@0.18.5
493
+ - @ykurilov/agent-chat-core@0.18.5
494
+
495
+ ## 0.18.4
496
+
497
+ ### Patch Changes
498
+
499
+ - @ykurilov/agent-chat-attachments@0.18.4
500
+ - @ykurilov/agent-chat-core@0.18.4
501
+ - @ykurilov/agent-chat-react@0.18.4
502
+
503
+ ## 0.18.3
504
+
505
+ ### Patch Changes
506
+
507
+ - Updated dependencies [ce3c26f]
508
+ - @ykurilov/agent-chat-react@0.18.3
509
+ - @ykurilov/agent-chat-attachments@0.18.3
510
+ - @ykurilov/agent-chat-core@0.18.3
511
+
512
+ ## 0.18.2
513
+
514
+ ### Patch Changes
515
+
516
+ - Updated dependencies [7e7e966]
517
+ - @ykurilov/agent-chat-react@0.18.2
518
+ - @ykurilov/agent-chat-attachments@0.18.2
519
+ - @ykurilov/agent-chat-core@0.18.2
520
+
521
+ ## 0.18.1
522
+
523
+ ### Patch Changes
524
+
525
+ - Updated dependencies [179ad9d]
526
+ - @ykurilov/agent-chat-react@0.18.1
527
+ - @ykurilov/agent-chat-attachments@0.18.1
528
+ - @ykurilov/agent-chat-core@0.18.1
529
+
530
+ ## 0.18.0
531
+
532
+ ### Patch Changes
533
+
534
+ - Updated dependencies [43d7ebe]
535
+ - @ykurilov/agent-chat-core@0.18.0
536
+ - @ykurilov/agent-chat-react@0.18.0
537
+ - @ykurilov/agent-chat-attachments@0.18.0
538
+
539
+ ## 0.17.0
540
+
541
+ ### Patch Changes
542
+
543
+ - Updated dependencies [e5d0860]
544
+ - @ykurilov/agent-chat-react@0.17.0
545
+ - @ykurilov/agent-chat-attachments@0.17.0
546
+ - @ykurilov/agent-chat-core@0.17.0
547
+
548
+ ## 0.16.0
549
+
550
+ ### Minor Changes
551
+
552
+ - cf52f10: **Ломает только исчерпывающие проверки:** у `UsageSource` появилось значение `images`, у видов ошибок сервера — `widget_not_pending` и `invalid_answer`, у `ChatService` — метод `answerWidget`. Своё хранилище должно поддержать условную запись `AwaitingMessagePatch.expectedParts` (при несовпадении частей — `MessageNotAwaitingError`; помощник `sameMessageParts` из core), иначе две копии сервера могут затереть ответы друг друга; общие тесты хранилищ это проверяют. Остальное необязательно, приложение без правок работает как раньше.
553
+
554
+ Что нового: агент может спросить кнопками, звёздами или формой (виджеты), нарисовать схему блоком ` ```mermaid ` и создать картинки через Runware. Всё включается отдельно:
555
+
556
+ - виджеты: `agent: { widgets: { basic: true, custom: [свойВиджет] } }`, свой виджет — `defineWidget` из core и компонент в `widgets={{ … }}` у `AgentChat`; ответ человека идёт на `POST /:chatId/widgets/:toolCallId`, ход ждёт со статусом `awaiting_approval`;
557
+ - схемы: новый пакет `@ykurilov/agent-chat-diagrams`, `agent: { diagrams: true }` на сервере и `diagrams={diagramsClient}` на странице;
558
+ - картинки: новый пакет `@ykurilov/agent-chat-images` (нужен пакет вложений и `RUNWARE_API_KEY`), `images.tools(model)` в `agent.tools`, `images={imagesClient}` на странице; свой срок ожидания (210 с) инструмент сообщает ядру сам (`declareToolTimeout`), расход бронируется до заказа (`assertWithinLimit({ pendingUsd })`);
559
+ - окно просмотра картинок и схем: Тандем готов, своему скину — необязательные части договора версии 13 (`Widget`, `SuggestedReplies`, `GeneratedImages`, `MediaViewer`, `diagramColors`, `renderDiagram`). `splitMermaidBlocks` экспортируется из react;
560
+ - вложения: `Attachments.storage` и `detectFileKind` экспортируются из пакета вложений;
561
+ - голосовой режим произносит вопрос и варианты ждущего виджета и говорит «схема на экране» вместо блока схемы;
562
+ - «Стоп» на экране закрывает висящие вызовы так же, как сервер, разрешённые без результата — «результат неизвестен» (`stoppedToolCallReasons.resultUnknown`);
563
+ - упавший свой виджет страницы заменяется запасным видом скина, лента цела.
564
+
565
+ Подробно: `docs/widgets.md`, `docs/diagrams.md`, `docs/images.md`, `docs/media-viewer.md`.
566
+
567
+ ### Как обновить приложение
568
+
569
+ Обычному приложению на SQLite или PostgreSQL из набора делать ничего не нужно: миграций нет, всё новое включается отдельно.
570
+
571
+ 1. Исчерпывающий `switch` по `UsageSource` — добавьте ветку `"images"`; по видам ошибок сервера — `"widget_not_pending"` и `"invalid_answer"`.
572
+ 2. Своя реализация `ChatService` — добавьте метод `answerWidget({ chatId, ownerId, toolCallId, answer, page }): Promise<{ resumed: boolean }>` (тип `WidgetAnswerRequest` из core, образец — служба из core).
573
+ 3. Своё хранилище: `updateAwaitingMessage` получает необязательное поле `expectedParts`. Если оно есть и части сообщения в базе с ним не совпадают (`sameMessageParts` из core), бросайте `MessageNotAwaitingError`; проверку и запись делайте в одной транзакции. Прогоните общие тесты хранилищ из core.
574
+ 4. Своя обёртка `assertWithinLimit` из limits — пробрасывайте новое необязательное поле `pendingUsd`.
575
+ 5. Проверка: `pnpm typecheck`, затем в чате отправить сообщение и получить ответ.
576
+
577
+ ### Patch Changes
578
+
579
+ - Updated dependencies [cf52f10]
580
+ - @ykurilov/agent-chat-core@0.16.0
581
+ - @ykurilov/agent-chat-react@0.16.0
582
+ - @ykurilov/agent-chat-attachments@0.16.0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yury Kurilov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.