@company-semantics/contracts 2.7.0 → 2.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@company-semantics/contracts",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Run pnpm generate:spec-hash to regenerate.
2
- export const SPEC_HASH = 'dfd003162bb3' as const;
3
- export const SPEC_HASH_FULL = 'dfd003162bb3d11c451864139ca8ba09e494cfd652b177f8b5ee8611c0f54e2a' as const;
2
+ export const SPEC_HASH = '5639583592f3' as const;
3
+ export const SPEC_HASH_FULL = '5639583592f37a84aa028b360d1cda28ec19a2e6bd82f053276349e646ec6809' as const;
@@ -2262,7 +2262,7 @@ export interface paths {
2262
2262
  patch?: never;
2263
2263
  trace?: never;
2264
2264
  };
2265
- "/api/me/meetings/recordings": {
2265
+ "/api/me/meetings/recordings/start": {
2266
2266
  parameters: {
2267
2267
  query?: never;
2268
2268
  header?: never;
@@ -2271,8 +2271,42 @@ export interface paths {
2271
2271
  };
2272
2272
  get?: never;
2273
2273
  put?: never;
2274
- /** Mint a transcription session grant for a new recording */
2275
- post: operations["issueMeetingRecordingGrant"];
2274
+ /** Start a recording: create draft rows and mint a transcription grant */
2275
+ post: operations["startMeetingRecording"];
2276
+ delete?: never;
2277
+ options?: never;
2278
+ head?: never;
2279
+ patch?: never;
2280
+ trace?: never;
2281
+ };
2282
+ "/api/me/meetings/recordings/{id}/events": {
2283
+ parameters: {
2284
+ query?: never;
2285
+ header?: never;
2286
+ path?: never;
2287
+ cookie?: never;
2288
+ };
2289
+ get?: never;
2290
+ put?: never;
2291
+ /** Apply a batch of recording events (v1 envelope) */
2292
+ post: operations["appendMeetingRecordingEvents"];
2293
+ delete?: never;
2294
+ options?: never;
2295
+ head?: never;
2296
+ patch?: never;
2297
+ trace?: never;
2298
+ };
2299
+ "/api/me/meetings/recordings/{id}/complete": {
2300
+ parameters: {
2301
+ query?: never;
2302
+ header?: never;
2303
+ path?: never;
2304
+ cookie?: never;
2305
+ };
2306
+ get?: never;
2307
+ put?: never;
2308
+ /** Finalize (or cancel) a recording; idempotent on checksum */
2309
+ post: operations["completeMeetingRecording"];
2276
2310
  delete?: never;
2277
2311
  options?: never;
2278
2312
  head?: never;
@@ -3921,35 +3955,42 @@ export interface components {
3921
3955
  UpdateWorkItemTitleRequest: {
3922
3956
  title: string;
3923
3957
  };
3924
- /** @description Provider-agnostic grant the mac shell consumes. Mac never sees provider name (INV-MTG-15). */
3925
- TranscriptionSessionGrant: {
3958
+ /** @description Recording + work_item ids and the transcription session grant. */
3959
+ StartMeetingRecordingResponse: {
3926
3960
  /** @description ULID; unified trace key for the recording (INV-MTG-7). */
3927
- sessionId: string;
3928
- /** Format: uri */
3929
- connectUrl: string;
3930
- authHeaders: {
3931
- [key: string]: string;
3932
- };
3933
- /** Format: date-time */
3934
- expiresAt: string;
3935
- audioConfig: {
3936
- /** @constant */
3937
- sampleRateHz: 16000;
3938
- /** @constant */
3939
- channels: 2;
3940
- /** @constant */
3941
- encoding: "linear16";
3942
- /** @constant */
3943
- chunkMs: 200;
3944
- };
3945
- capabilities: {
3946
- interimResults: boolean;
3947
- multichannelDiarization: boolean;
3948
- reconnectionTokens: boolean;
3961
+ recordingId: string;
3962
+ /** Format: uuid */
3963
+ workItemId: string;
3964
+ /** @description Provider-agnostic grant the mac shell consumes. Mac never sees provider name (INV-MTG-15). */
3965
+ grant: {
3966
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
3967
+ sessionId: string;
3968
+ /** Format: uri */
3969
+ connectUrl: string;
3970
+ authHeaders: {
3971
+ [key: string]: string;
3972
+ };
3973
+ /** Format: date-time */
3974
+ expiresAt: string;
3975
+ audioConfig: {
3976
+ /** @constant */
3977
+ sampleRateHz: 16000;
3978
+ /** @constant */
3979
+ channels: 2;
3980
+ /** @constant */
3981
+ encoding: "linear16";
3982
+ /** @constant */
3983
+ chunkMs: 200;
3984
+ };
3985
+ capabilities: {
3986
+ interimResults: boolean;
3987
+ multichannelDiarization: boolean;
3988
+ reconnectionTokens: boolean;
3989
+ };
3949
3990
  };
3950
3991
  };
3951
- /** @description Request a transcription session grant for a new recording. */
3952
- IssueMeetingRecordingGrantRequest: {
3992
+ /** @description Start a recording: create draft rows and mint a grant. */
3993
+ StartMeetingRecordingRequest: {
3953
3994
  /** @description ULID; unified trace key for the recording (INV-MTG-7). */
3954
3995
  clientRecordingId: string;
3955
3996
  /**
@@ -3958,6 +3999,75 @@ export interface components {
3958
3999
  */
3959
4000
  detectedApp: "zoom" | "teams" | "meet-browser" | "slack-huddle" | "manual";
3960
4001
  };
4002
+ /** @description Result of applying an event batch. */
4003
+ AppendMeetingRecordingEventsResponse: {
4004
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4005
+ recordingId: string;
4006
+ status: string;
4007
+ chunksAccepted: number;
4008
+ };
4009
+ /** @description A batch of recording events (v1 envelope). */
4010
+ AppendMeetingRecordingEventsRequest: {
4011
+ eventSchemaVersion: number;
4012
+ events: ({
4013
+ /** @constant */
4014
+ kind: "session_opened";
4015
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4016
+ recordingId: string;
4017
+ atMs: number;
4018
+ } | {
4019
+ /** @constant */
4020
+ kind: "chunk_batch";
4021
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4022
+ recordingId: string;
4023
+ chunks: {
4024
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4025
+ recordingId: string;
4026
+ /**
4027
+ * @description Capture stream identity. Mic = channel 0, system audio = channel 1.
4028
+ * @enum {string}
4029
+ */
4030
+ source: "mic" | "system";
4031
+ sequence: number;
4032
+ startedAtMs: number;
4033
+ endedAtMs: number;
4034
+ text: string;
4035
+ final: boolean;
4036
+ speakerLabel?: string | null;
4037
+ confidence?: number;
4038
+ }[];
4039
+ } | {
4040
+ /** @constant */
4041
+ kind: "quality_degraded";
4042
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4043
+ recordingId: string;
4044
+ reason: string;
4045
+ atMs: number;
4046
+ } | {
4047
+ /** @constant */
4048
+ kind: "session_stopped";
4049
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4050
+ recordingId: string;
4051
+ atMs: number;
4052
+ expectedLastSequence: number;
4053
+ })[];
4054
+ };
4055
+ /** @description Result of finalizing or cancelling a recording. */
4056
+ CompleteMeetingRecordingResponse: {
4057
+ /** @description ULID; unified trace key for the recording (INV-MTG-7). */
4058
+ recordingId: string;
4059
+ status: string;
4060
+ workItemId: string | null;
4061
+ transcriptDocumentId: string | null;
4062
+ idempotent: boolean;
4063
+ };
4064
+ /** @description Finalize (or cancel) a recording. Idempotent on checksum. */
4065
+ CompleteMeetingRecordingRequest: {
4066
+ expectedLastSequence: number;
4067
+ totalDurationMs: number;
4068
+ checksum: string;
4069
+ cancelled?: boolean;
4070
+ };
3961
4071
  ImpersonationSessionResponse: {
3962
4072
  session: {
3963
4073
  impersonationSessionId: string;
@@ -7541,7 +7651,7 @@ export interface operations {
7541
7651
  };
7542
7652
  };
7543
7653
  };
7544
- issueMeetingRecordingGrant: {
7654
+ startMeetingRecording: {
7545
7655
  parameters: {
7546
7656
  query?: never;
7547
7657
  header?: never;
@@ -7550,20 +7660,27 @@ export interface operations {
7550
7660
  };
7551
7661
  requestBody: {
7552
7662
  content: {
7553
- "application/json": components["schemas"]["IssueMeetingRecordingGrantRequest"];
7663
+ "application/json": components["schemas"]["StartMeetingRecordingRequest"];
7554
7664
  };
7555
7665
  };
7556
7666
  responses: {
7557
- /** @description Provider-agnostic transcription session grant */
7667
+ /** @description Recording + work_item ids and the provider-agnostic grant */
7558
7668
  200: {
7559
7669
  headers: {
7560
7670
  [name: string]: unknown;
7561
7671
  };
7562
7672
  content: {
7563
- "application/json": components["schemas"]["TranscriptionSessionGrant"];
7673
+ "application/json": components["schemas"]["StartMeetingRecordingResponse"];
7564
7674
  };
7565
7675
  };
7566
- /** @description Rate limit exceeded (10 issuances/user/hour) */
7676
+ /** @description A recording is already in progress for this user */
7677
+ 409: {
7678
+ headers: {
7679
+ [name: string]: unknown;
7680
+ };
7681
+ content?: never;
7682
+ };
7683
+ /** @description Rate limit exceeded (10 starts/user/hour) */
7567
7684
  429: {
7568
7685
  headers: {
7569
7686
  [name: string]: unknown;
@@ -7579,6 +7696,93 @@ export interface operations {
7579
7696
  };
7580
7697
  };
7581
7698
  };
7699
+ appendMeetingRecordingEvents: {
7700
+ parameters: {
7701
+ query?: never;
7702
+ header?: never;
7703
+ path: {
7704
+ id: string;
7705
+ };
7706
+ cookie?: never;
7707
+ };
7708
+ requestBody: {
7709
+ content: {
7710
+ "application/json": components["schemas"]["AppendMeetingRecordingEventsRequest"];
7711
+ };
7712
+ };
7713
+ responses: {
7714
+ /** @description Event batch applied */
7715
+ 200: {
7716
+ headers: {
7717
+ [name: string]: unknown;
7718
+ };
7719
+ content: {
7720
+ "application/json": components["schemas"]["AppendMeetingRecordingEventsResponse"];
7721
+ };
7722
+ };
7723
+ /** @description Unknown eventSchemaVersion */
7724
+ 400: {
7725
+ headers: {
7726
+ [name: string]: unknown;
7727
+ };
7728
+ content?: never;
7729
+ };
7730
+ /** @description Recording not found or not owned by this user */
7731
+ 404: {
7732
+ headers: {
7733
+ [name: string]: unknown;
7734
+ };
7735
+ content?: never;
7736
+ };
7737
+ /** @description Illegal state transition */
7738
+ 409: {
7739
+ headers: {
7740
+ [name: string]: unknown;
7741
+ };
7742
+ content?: never;
7743
+ };
7744
+ };
7745
+ };
7746
+ completeMeetingRecording: {
7747
+ parameters: {
7748
+ query?: never;
7749
+ header?: never;
7750
+ path: {
7751
+ id: string;
7752
+ };
7753
+ cookie?: never;
7754
+ };
7755
+ requestBody: {
7756
+ content: {
7757
+ "application/json": components["schemas"]["CompleteMeetingRecordingRequest"];
7758
+ };
7759
+ };
7760
+ responses: {
7761
+ /** @description Recording finalized or cancelled */
7762
+ 200: {
7763
+ headers: {
7764
+ [name: string]: unknown;
7765
+ };
7766
+ content: {
7767
+ "application/json": components["schemas"]["CompleteMeetingRecordingResponse"];
7768
+ };
7769
+ };
7770
+ /** @description Recording not found or not owned by this user */
7771
+ 404: {
7772
+ headers: {
7773
+ [name: string]: unknown;
7774
+ };
7775
+ content?: never;
7776
+ };
7777
+ /** @description Conflicting checksum on an already-finalized recording */
7778
+ 409: {
7779
+ headers: {
7780
+ [name: string]: unknown;
7781
+ };
7782
+ content?: never;
7783
+ };
7784
+ };
7785
+ };
7582
7786
  startImpersonation: {
7583
7787
  parameters: {
7584
7788
  query?: never;