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