@taskless-app/shared 0.1.17 → 0.1.19

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.
@@ -431,6 +431,293 @@ export declare const RepoProfilePatch: z.ZodObject<{
431
431
  spine?: string[] | null | undefined;
432
432
  }>;
433
433
  export type RepoProfilePatch = z.infer<typeof RepoProfilePatch>;
434
+ /** Кто и когда предложил. `by` — имя дрона-разведчика, для строки «предложил NN». */
435
+ export declare const RepoProfileProposal: z.ZodObject<{
436
+ brief: z.ZodCatch<z.ZodOptional<z.ZodString>>;
437
+ zones: z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodObject<{
438
+ /** Лейбл задачи, например `area:swarm-model`. */
439
+ label: z.ZodString;
440
+ /** Что это за зона словами — одной строкой, для дрона и для человека. */
441
+ about: z.ZodOptional<z.ZodString>;
442
+ /** Пути (glob или префикс), которые к зоне относятся. */
443
+ paths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
444
+ }, "strip", z.ZodTypeAny, {
445
+ label: string;
446
+ about?: string | undefined;
447
+ paths: string[];
448
+ }, {
449
+ label: string;
450
+ about?: string | undefined;
451
+ paths?: string[] | undefined;
452
+ }>, "many">>>;
453
+ env: z.ZodCatch<z.ZodOptional<z.ZodObject<{
454
+ /** Чем поднять базу данных (`docker compose up -d db`). */
455
+ database: z.ZodOptional<z.ZodString>;
456
+ /** Чем накатить миграции (`pnpm --filter api prisma migrate dev`). */
457
+ migrations: z.ZodOptional<z.ZodString>;
458
+ /**
459
+ * ИМЕНА переменных окружения, без которых репозиторий не заводится. Только
460
+ * имена: значения — секреты, и здесь их быть не должно (разметка едет в
461
+ * промпт дрона и в UI как обычный текст).
462
+ */
463
+ vars: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
464
+ }, "strip", z.ZodTypeAny, {
465
+ database?: string | undefined;
466
+ migrations?: string | undefined;
467
+ vars: string[];
468
+ }, {
469
+ database?: string | undefined;
470
+ migrations?: string | undefined;
471
+ vars?: string[] | undefined;
472
+ }>>>;
473
+ verify: z.ZodCatch<z.ZodOptional<z.ZodObject<{
474
+ /** Команды проверки: typecheck, тесты, линт. */
475
+ commands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
476
+ /**
477
+ * Что здесь считается зелёным — словами. Отдельно от команд сознательно:
478
+ * «зелёное» редко равно «команда вернула 0» (кешированный прогон, известные
479
+ * падающие тесты, гейт в CI, а не локально).
480
+ */
481
+ green: z.ZodOptional<z.ZodString>;
482
+ }, "strip", z.ZodTypeAny, {
483
+ commands: string[];
484
+ green?: string | undefined;
485
+ }, {
486
+ commands?: string[] | undefined;
487
+ green?: string | undefined;
488
+ }>>>;
489
+ conventions: z.ZodCatch<z.ZodOptional<z.ZodObject<{
490
+ /** Язык сообщений коммитов — `ru`, `en` или как принято писать в проекте. */
491
+ commitLanguage: z.ZodOptional<z.ZodString>;
492
+ /** Слаг задачи обязателен в сообщении коммита. */
493
+ slugInCommit: z.ZodOptional<z.ZodBoolean>;
494
+ /**
495
+ * Базовая ветка репозитория — та, от которой ветвятся и в которую идут PR.
496
+ * НАБЛЮДЕНИЕ о репозитории, а не ручка роя: если у проекта задан
497
+ * `swarmConfig.baseBranch` (TASWM-285, интеграционная ветка под пачку задач),
498
+ * побеждает он — это решение человека, а здесь то, что увидела разведка.
499
+ */
500
+ baseBranch: z.ZodOptional<z.ZodString>;
501
+ }, "strip", z.ZodTypeAny, {
502
+ commitLanguage?: string | undefined;
503
+ slugInCommit?: boolean | undefined;
504
+ baseBranch?: string | undefined;
505
+ }, {
506
+ commitLanguage?: string | undefined;
507
+ slugInCommit?: boolean | undefined;
508
+ baseBranch?: string | undefined;
509
+ }>>>;
510
+ spine: z.ZodCatch<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
511
+ /** ISO-время разведки — по нему видно, что предложение старше нынешнего репозитория. */
512
+ at: z.ZodCatch<z.ZodOptional<z.ZodString>>;
513
+ /** Имя дрона-разведчика. */
514
+ by: z.ZodCatch<z.ZodOptional<z.ZodString>>;
515
+ }, "strip", z.ZodTypeAny, {
516
+ brief?: string | undefined;
517
+ zones?: {
518
+ label: string;
519
+ about?: string | undefined;
520
+ paths: string[];
521
+ }[] | undefined;
522
+ env?: {
523
+ database?: string | undefined;
524
+ migrations?: string | undefined;
525
+ vars: string[];
526
+ } | undefined;
527
+ verify?: {
528
+ commands: string[];
529
+ green?: string | undefined;
530
+ } | undefined;
531
+ conventions?: {
532
+ commitLanguage?: string | undefined;
533
+ slugInCommit?: boolean | undefined;
534
+ baseBranch?: string | undefined;
535
+ } | undefined;
536
+ spine?: string[] | undefined;
537
+ at?: string | undefined;
538
+ by?: string | undefined;
539
+ }, {
540
+ brief?: unknown;
541
+ zones?: unknown;
542
+ env?: unknown;
543
+ verify?: unknown;
544
+ conventions?: unknown;
545
+ spine?: unknown;
546
+ at?: unknown;
547
+ by?: unknown;
548
+ }>;
549
+ export type RepoProfileProposal = z.infer<typeof RepoProfileProposal>;
550
+ /**
551
+ * ЧТО предлагает разведчик — строгая схема ЗАПИСИ (как `RepoProfilePatch`, но без
552
+ * `null`: «очистить поле» разведчику не положено — он предлагает наблюдение, а не
553
+ * стирает чужое). Поля, которых разведчик не понял, он просто не присылает.
554
+ */
555
+ export declare const RepoProfileScoutReport: z.ZodObject<{
556
+ brief: z.ZodOptional<z.ZodString>;
557
+ zones: z.ZodOptional<z.ZodArray<z.ZodObject<{
558
+ /** Лейбл задачи, например `area:swarm-model`. */
559
+ label: z.ZodString;
560
+ /** Что это за зона словами — одной строкой, для дрона и для человека. */
561
+ about: z.ZodOptional<z.ZodString>;
562
+ /** Пути (glob или префикс), которые к зоне относятся. */
563
+ paths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
564
+ }, "strip", z.ZodTypeAny, {
565
+ label: string;
566
+ about?: string | undefined;
567
+ paths: string[];
568
+ }, {
569
+ label: string;
570
+ about?: string | undefined;
571
+ paths?: string[] | undefined;
572
+ }>, "many">>;
573
+ env: z.ZodOptional<z.ZodObject<{
574
+ /** Чем поднять базу данных (`docker compose up -d db`). */
575
+ database: z.ZodOptional<z.ZodString>;
576
+ /** Чем накатить миграции (`pnpm --filter api prisma migrate dev`). */
577
+ migrations: z.ZodOptional<z.ZodString>;
578
+ /**
579
+ * ИМЕНА переменных окружения, без которых репозиторий не заводится. Только
580
+ * имена: значения — секреты, и здесь их быть не должно (разметка едет в
581
+ * промпт дрона и в UI как обычный текст).
582
+ */
583
+ vars: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
584
+ }, "strip", z.ZodTypeAny, {
585
+ database?: string | undefined;
586
+ migrations?: string | undefined;
587
+ vars: string[];
588
+ }, {
589
+ database?: string | undefined;
590
+ migrations?: string | undefined;
591
+ vars?: string[] | undefined;
592
+ }>>;
593
+ verify: z.ZodOptional<z.ZodObject<{
594
+ /** Команды проверки: typecheck, тесты, линт. */
595
+ commands: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
596
+ /**
597
+ * Что здесь считается зелёным — словами. Отдельно от команд сознательно:
598
+ * «зелёное» редко равно «команда вернула 0» (кешированный прогон, известные
599
+ * падающие тесты, гейт в CI, а не локально).
600
+ */
601
+ green: z.ZodOptional<z.ZodString>;
602
+ }, "strip", z.ZodTypeAny, {
603
+ commands: string[];
604
+ green?: string | undefined;
605
+ }, {
606
+ commands?: string[] | undefined;
607
+ green?: string | undefined;
608
+ }>>;
609
+ conventions: z.ZodOptional<z.ZodObject<{
610
+ /** Язык сообщений коммитов — `ru`, `en` или как принято писать в проекте. */
611
+ commitLanguage: z.ZodOptional<z.ZodString>;
612
+ /** Слаг задачи обязателен в сообщении коммита. */
613
+ slugInCommit: z.ZodOptional<z.ZodBoolean>;
614
+ /**
615
+ * Базовая ветка репозитория — та, от которой ветвятся и в которую идут PR.
616
+ * НАБЛЮДЕНИЕ о репозитории, а не ручка роя: если у проекта задан
617
+ * `swarmConfig.baseBranch` (TASWM-285, интеграционная ветка под пачку задач),
618
+ * побеждает он — это решение человека, а здесь то, что увидела разведка.
619
+ */
620
+ baseBranch: z.ZodOptional<z.ZodString>;
621
+ }, "strip", z.ZodTypeAny, {
622
+ commitLanguage?: string | undefined;
623
+ slugInCommit?: boolean | undefined;
624
+ baseBranch?: string | undefined;
625
+ }, {
626
+ commitLanguage?: string | undefined;
627
+ slugInCommit?: boolean | undefined;
628
+ baseBranch?: string | undefined;
629
+ }>>;
630
+ spine: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
631
+ }, "strip", z.ZodTypeAny, {
632
+ brief?: string | undefined;
633
+ zones?: {
634
+ label: string;
635
+ about?: string | undefined;
636
+ paths: string[];
637
+ }[] | undefined;
638
+ env?: {
639
+ database?: string | undefined;
640
+ migrations?: string | undefined;
641
+ vars: string[];
642
+ } | undefined;
643
+ verify?: {
644
+ commands: string[];
645
+ green?: string | undefined;
646
+ } | undefined;
647
+ conventions?: {
648
+ commitLanguage?: string | undefined;
649
+ slugInCommit?: boolean | undefined;
650
+ baseBranch?: string | undefined;
651
+ } | undefined;
652
+ spine?: string[] | undefined;
653
+ }, {
654
+ brief?: string | undefined;
655
+ zones?: {
656
+ label: string;
657
+ about?: string | undefined;
658
+ paths?: string[] | undefined;
659
+ }[] | undefined;
660
+ env?: {
661
+ database?: string | undefined;
662
+ migrations?: string | undefined;
663
+ vars?: string[] | undefined;
664
+ } | undefined;
665
+ verify?: {
666
+ commands?: string[] | undefined;
667
+ green?: string | undefined;
668
+ } | undefined;
669
+ conventions?: {
670
+ commitLanguage?: string | undefined;
671
+ slugInCommit?: boolean | undefined;
672
+ baseBranch?: string | undefined;
673
+ } | undefined;
674
+ spine?: string[] | undefined;
675
+ }>;
676
+ export type RepoProfileScoutReport = z.infer<typeof RepoProfileScoutReport>;
677
+ /** Сырой Json из БД → предложение. `null` — предложения нет (или в нём не выжило ни поля). */
678
+ export declare function parseRepoProfileProposal(raw: unknown): RepoProfileProposal | null;
679
+ /**
680
+ * Что стало бы с полем, прими человек предложение:
681
+ * "new" — поля в разметке нет, предложение его добавляет;
682
+ * "changed" — поле есть и отличается;
683
+ * "same" — предложение совпадает с тем, что уже записано (показывать нечего);
684
+ * "gone" — предложения по полю нет, а в разметке оно есть (разведка про него
685
+ * промолчала — НЕ повод стирать: молчание не равно «удалить»).
686
+ */
687
+ export type RepoProfileFieldChange = "new" | "changed" | "same" | "gone";
688
+ /** Строка разницы по одному полю разметки — то, что человек видит на экране приёмки. */
689
+ export interface RepoProfileFieldDiff {
690
+ field: RepoProfileField;
691
+ change: RepoProfileFieldChange;
692
+ /** Кто вписал то, что лежит в разметке сейчас (если лежит). */
693
+ currentSource?: RepoProfileSource;
694
+ /**
695
+ * Правка ЧЕЛОВЕКА, которую предложение переписало бы. Именно на этом стоит
696
+ * «повторная разведка не затирает ручные правки»: такие поля экран приёмки
697
+ * показывает отдельно и по умолчанию НЕ применяет.
698
+ */
699
+ overwritesHuman: boolean;
700
+ }
701
+ /**
702
+ * РАЗНИЦА между живой разметкой и предложением разведчика — по полю верхнего
703
+ * уровня, тем же зерном, каким пишутся источники (`sources`). Тоньше резать
704
+ * нечего: правка человеком любого куска зон означает «зоны теперь мои».
705
+ *
706
+ * Сравнение — по нормализованному JSON: значения приезжают из БД и из ответа
707
+ * разведчика разными путями, и порядок ключей у них не совпадает. Без
708
+ * нормализации каждая повторная разведка показывала бы «изменилось» на полях,
709
+ * которые не менялись, — то есть ровно то, ради чего diff и заводится.
710
+ */
711
+ export declare function diffRepoProfile(current: RepoProfile | null, proposal: RepoProfileProposal | null): RepoProfileFieldDiff[];
712
+ /** Есть ли что показывать человеку: хоть одно поле, которое предложение добавляет или меняет. */
713
+ export declare function hasRepoProfileChanges(diff: RepoProfileFieldDiff[]): boolean;
714
+ /**
715
+ * Патч из предложения по ВЫБРАННЫМ человеком полям. Единственный способ
716
+ * применить предложение: экран приёмки присылает список полей, которые человек
717
+ * подтвердил, — не принятые не попадают в патч вовсе (а не приезжают `null`,
718
+ * что стёрло бы уже записанное).
719
+ */
720
+ export declare function repoProfilePatchFromProposal(proposal: RepoProfileProposal, fields: readonly RepoProfileField[]): RepoProfilePatch;
434
721
  /** Есть ли в разметке хоть что-то, кроме карты источников. */
435
722
  export declare function isEmptyRepoProfile(profile: RepoProfile): boolean;
436
723
  /**
@@ -159,6 +159,120 @@ export const RepoProfilePatch = z.object({
159
159
  conventions: RepoConventions.nullable().optional(),
160
160
  spine: z.array(z.string().min(1).max(REPO_PATH_MAX)).max(REPO_PATHS_MAX).nullable().optional(),
161
161
  });
162
+ // ── ПРЕДЛОЖЕНИЕ РАЗВЕДЧИКА (TASWM-382) ──────────────────────────────────────
163
+ //
164
+ // Разведчик НЕ ПИШЕТ разметку. Он кладёт рядом ПРЕДЛОЖЕНИЕ, а применяет его
165
+ // человек — по одному полю, глазами. Причина в цене ошибки: неверно угаданная
166
+ // зона разложит задачи по кривым лейблам, а неверная команда миграции испортит
167
+ // локальную базу. Поэтому предложение живёт в отдельной колонке
168
+ // (`ProjectRepo.repoProfileProposal`) и на чтение разметки не влияет вовсе:
169
+ // пока человек не принял, рой работает так, будто разведки не было.
170
+ //
171
+ // Повторная разведка кладёт НОВОЕ предложение поверх старого (непринятое
172
+ // предложение — черновик, копить их незачем), но живую разметку по-прежнему не
173
+ // трогает — отсюда и требование «повторный запуск показывает разницу, а не
174
+ // затирает ручные правки»: разницу считает `diffRepoProfile`.
175
+ /** Кто и когда предложил. `by` — имя дрона-разведчика, для строки «предложил NN». */
176
+ export const RepoProfileProposal = z.object({
177
+ brief: z.string().max(REPO_BRIEF_MAX).optional().catch(undefined),
178
+ zones: z.array(RepoZone).max(REPO_ZONES_MAX).optional().catch(undefined),
179
+ env: RepoEnvSetup.optional().catch(undefined),
180
+ verify: RepoVerify.optional().catch(undefined),
181
+ conventions: RepoConventions.optional().catch(undefined),
182
+ spine: z.array(z.string().min(1).max(REPO_PATH_MAX)).max(REPO_PATHS_MAX).optional().catch(undefined),
183
+ /** ISO-время разведки — по нему видно, что предложение старше нынешнего репозитория. */
184
+ at: z.string().max(40).optional().catch(undefined),
185
+ /** Имя дрона-разведчика. */
186
+ by: z.string().max(80).optional().catch(undefined),
187
+ });
188
+ /**
189
+ * ЧТО предлагает разведчик — строгая схема ЗАПИСИ (как `RepoProfilePatch`, но без
190
+ * `null`: «очистить поле» разведчику не положено — он предлагает наблюдение, а не
191
+ * стирает чужое). Поля, которых разведчик не понял, он просто не присылает.
192
+ */
193
+ export const RepoProfileScoutReport = z.object({
194
+ brief: z.string().max(REPO_BRIEF_MAX).optional(),
195
+ zones: z.array(RepoZone).max(REPO_ZONES_MAX).optional(),
196
+ env: RepoEnvSetup.optional(),
197
+ verify: RepoVerify.optional(),
198
+ conventions: RepoConventions.optional(),
199
+ spine: z.array(z.string().min(1).max(REPO_PATH_MAX)).max(REPO_PATHS_MAX).optional(),
200
+ });
201
+ /** Сырой Json из БД → предложение. `null` — предложения нет (или в нём не выжило ни поля). */
202
+ export function parseRepoProfileProposal(raw) {
203
+ if (raw == null || typeof raw !== "object" || Array.isArray(raw))
204
+ return null;
205
+ const parsed = RepoProfileProposal.safeParse(raw);
206
+ if (!parsed.success)
207
+ return null;
208
+ return REPO_PROFILE_FIELDS.every((f) => parsed.data[f] === undefined) ? null : parsed.data;
209
+ }
210
+ /**
211
+ * РАЗНИЦА между живой разметкой и предложением разведчика — по полю верхнего
212
+ * уровня, тем же зерном, каким пишутся источники (`sources`). Тоньше резать
213
+ * нечего: правка человеком любого куска зон означает «зоны теперь мои».
214
+ *
215
+ * Сравнение — по нормализованному JSON: значения приезжают из БД и из ответа
216
+ * разведчика разными путями, и порядок ключей у них не совпадает. Без
217
+ * нормализации каждая повторная разведка показывала бы «изменилось» на полях,
218
+ * которые не менялись, — то есть ровно то, ради чего diff и заводится.
219
+ */
220
+ export function diffRepoProfile(current, proposal) {
221
+ const out = [];
222
+ for (const field of REPO_PROFILE_FIELDS) {
223
+ const now = current?.[field];
224
+ const next = proposal?.[field];
225
+ if (now === undefined && next === undefined)
226
+ continue;
227
+ const currentSource = current?.sources[field];
228
+ const change = next === undefined ? "gone" : now === undefined ? "new" : sameValue(now, next) ? "same" : "changed";
229
+ out.push({
230
+ field,
231
+ change,
232
+ ...(currentSource ? { currentSource } : {}),
233
+ overwritesHuman: change === "changed" && currentSource === "human",
234
+ });
235
+ }
236
+ return out;
237
+ }
238
+ /** Есть ли что показывать человеку: хоть одно поле, которое предложение добавляет или меняет. */
239
+ export function hasRepoProfileChanges(diff) {
240
+ return diff.some((d) => d.change === "new" || d.change === "changed");
241
+ }
242
+ /**
243
+ * Патч из предложения по ВЫБРАННЫМ человеком полям. Единственный способ
244
+ * применить предложение: экран приёмки присылает список полей, которые человек
245
+ * подтвердил, — не принятые не попадают в патч вовсе (а не приезжают `null`,
246
+ * что стёрло бы уже записанное).
247
+ */
248
+ export function repoProfilePatchFromProposal(proposal, fields) {
249
+ const patch = {};
250
+ for (const field of REPO_PROFILE_FIELDS) {
251
+ if (!fields.includes(field))
252
+ continue;
253
+ const value = proposal[field];
254
+ if (value === undefined)
255
+ continue;
256
+ patch[field] = value;
257
+ }
258
+ return patch;
259
+ }
260
+ /** Сравнение значений полей по нормализованному JSON (порядок ключей не значим). */
261
+ function sameValue(a, b) {
262
+ return stableJson(a) === stableJson(b);
263
+ }
264
+ function stableJson(value) {
265
+ return JSON.stringify(value, (_key, v) => {
266
+ if (v && typeof v === "object" && !Array.isArray(v)) {
267
+ const src = v;
268
+ const sorted = {};
269
+ for (const k of Object.keys(src).sort())
270
+ sorted[k] = src[k];
271
+ return sorted;
272
+ }
273
+ return v;
274
+ });
275
+ }
162
276
  /** Есть ли в разметке хоть что-то, кроме карты источников. */
163
277
  export function isEmptyRepoProfile(profile) {
164
278
  return REPO_PROFILE_FIELDS.every((field) => profile[field] === undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"repoProfile.js","sourceRoot":"","sources":["../src/repoProfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repoProfile.js","sourceRoot":"","sources":["../src/repoProfile.ts"],"names":[],"mappings":"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"}
@@ -69,10 +69,46 @@ export declare const TranscriptCoverage: z.ZodObject<{
69
69
  reason: "no_audio" | "not_subscribed" | "suppressed";
70
70
  }>, "many">>;
71
71
  gapCount: z.ZodDefault<z.ZodNumber>;
72
- /** Сколько дорожек пришлось чинить реконсиляцией подписок. */
72
+ /**
73
+ * Сколько дорожек реконсиляция починила ПО-НАСТОЯЩЕМУ: дожала подписку, и
74
+ * она доехала. С v2 (TAS-500) сюда не попадают неудачные попытки — до этого
75
+ * попадали, и две мёртвые дорожки давали `repairedSubscriptions: 248`.
76
+ */
73
77
  repairedSubscriptions: z.ZodDefault<z.ZodNumber>;
78
+ /**
79
+ * Сколько раз вообще пришлось просить подписку. Много при нулевых починках —
80
+ * SFU не отдаёт трек, сколько ни проси (v2+).
81
+ */
82
+ subscriptionRetries: z.ZodDefault<z.ZodNumber>;
83
+ /** Поимённо те, у кого подписка так и не встала — это сигнал, а не шум (v2+). */
84
+ stuckSubscriptions: z.ZodDefault<z.ZodArray<z.ZodObject<{
85
+ identity: z.ZodString;
86
+ name: z.ZodDefault<z.ZodString>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ identity: string;
89
+ name: string;
90
+ }, {
91
+ identity: string;
92
+ name?: string | undefined;
93
+ }>, "many">>;
94
+ stuckCount: z.ZodDefault<z.ZodNumber>;
74
95
  /** Сколько распознанных сегментов выброшено анти-дублем «вышедшего». */
75
96
  suppressedSegments: z.ZodDefault<z.ZodNumber>;
97
+ /**
98
+ * Чем кончился выход джоба. `drain: "cancelled" | "abandoned"` означает, что
99
+ * хвост очереди распознавания не доехал до базы, — снаружи это выглядит как
100
+ * «человек замолчал под конец», и молчать об этом нельзя (TAS-500).
101
+ */
102
+ shutdown: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodObject<{
103
+ drain: z.ZodDefault<z.ZodEnum<["drained", "cancelled", "abandoned"]>>;
104
+ unfinishedRecorders: z.ZodDefault<z.ZodNumber>;
105
+ }, "strip", z.ZodTypeAny, {
106
+ drain: "abandoned" | "cancelled" | "drained";
107
+ unfinishedRecorders: number;
108
+ }, {
109
+ drain?: "abandoned" | "cancelled" | "drained" | undefined;
110
+ unfinishedRecorders?: number | undefined;
111
+ }>>>>;
76
112
  }, "strip", z.ZodTypeAny, {
77
113
  v: number;
78
114
  participants: number;
@@ -94,7 +130,17 @@ export declare const TranscriptCoverage: z.ZodObject<{
94
130
  }[];
95
131
  gapCount: number;
96
132
  repairedSubscriptions: number;
133
+ subscriptionRetries: number;
134
+ stuckSubscriptions: {
135
+ identity: string;
136
+ name: string;
137
+ }[];
138
+ stuckCount: number;
97
139
  suppressedSegments: number;
140
+ shutdown: {
141
+ drain: "abandoned" | "cancelled" | "drained";
142
+ unfinishedRecorders: number;
143
+ } | null;
98
144
  }, {
99
145
  v?: number | undefined;
100
146
  participants?: number | undefined;
@@ -116,7 +162,17 @@ export declare const TranscriptCoverage: z.ZodObject<{
116
162
  }[] | undefined;
117
163
  gapCount?: number | undefined;
118
164
  repairedSubscriptions?: number | undefined;
165
+ subscriptionRetries?: number | undefined;
166
+ stuckSubscriptions?: {
167
+ identity: string;
168
+ name?: string | undefined;
169
+ }[] | undefined;
170
+ stuckCount?: number | undefined;
119
171
  suppressedSegments?: number | undefined;
172
+ shutdown?: {
173
+ drain?: "abandoned" | "cancelled" | "drained" | undefined;
174
+ unfinishedRecorders?: number | undefined;
175
+ } | null | undefined;
120
176
  }>;
121
177
  export type TranscriptCoverage = z.infer<typeof TranscriptCoverage>;
122
178
  /**
@@ -60,10 +60,34 @@ export const TranscriptCoverage = z.object({
60
60
  /** Те, у кого речь могла потеряться. Список урезан, счётчик — нет. */
61
61
  gaps: z.array(Person.extend({ reason: TranscriptCoverageGapReason })).default([]),
62
62
  gapCount: z.number().int().min(0).default(0),
63
- /** Сколько дорожек пришлось чинить реконсиляцией подписок. */
63
+ /**
64
+ * Сколько дорожек реконсиляция починила ПО-НАСТОЯЩЕМУ: дожала подписку, и
65
+ * она доехала. С v2 (TAS-500) сюда не попадают неудачные попытки — до этого
66
+ * попадали, и две мёртвые дорожки давали `repairedSubscriptions: 248`.
67
+ */
64
68
  repairedSubscriptions: z.number().int().min(0).default(0),
69
+ /**
70
+ * Сколько раз вообще пришлось просить подписку. Много при нулевых починках —
71
+ * SFU не отдаёт трек, сколько ни проси (v2+).
72
+ */
73
+ subscriptionRetries: z.number().int().min(0).default(0),
74
+ /** Поимённо те, у кого подписка так и не встала — это сигнал, а не шум (v2+). */
75
+ stuckSubscriptions: z.array(Person).default([]),
76
+ stuckCount: z.number().int().min(0).default(0),
65
77
  /** Сколько распознанных сегментов выброшено анти-дублем «вышедшего». */
66
78
  suppressedSegments: z.number().int().min(0).default(0),
79
+ /**
80
+ * Чем кончился выход джоба. `drain: "cancelled" | "abandoned"` означает, что
81
+ * хвост очереди распознавания не доехал до базы, — снаружи это выглядит как
82
+ * «человек замолчал под конец», и молчать об этом нельзя (TAS-500).
83
+ */
84
+ shutdown: z
85
+ .object({
86
+ drain: z.enum(["drained", "cancelled", "abandoned"]).default("drained"),
87
+ unfinishedRecorders: z.number().int().min(0).default(0),
88
+ })
89
+ .nullish()
90
+ .default(null),
67
91
  });
68
92
  /**
69
93
  * Разобрать значение JSON-колонки. Мусор и `null` дают `null` — «данных нет»,
@@ -1 +1 @@
1
- {"version":3,"file":"transcriptCoverage.js","sourceRoot":"","sources":["../src/transcriptCoverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcriptCoverage.js","sourceRoot":"","sources":["../src/transcriptCoverage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taskless-app/shared",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "type": "module",
5
5
  "description": "Shared types, Zod schemas and design tokens for the Taskless API contract — consumed by @taskless/api, @taskless/web and the Taskless mobile app.",
6
6
  "license": "MIT",