@remnic/core 9.12.0 → 9.13.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/dist/access-cli.js +1 -1
- package/dist/access-operations.d.ts +3 -3
- package/dist/access-schema.d.ts +76 -76
- package/dist/{chunk-3VBXP5HS.js → chunk-5RZHHANR.js} +195 -14
- package/dist/chunk-5RZHHANR.js.map +1 -0
- package/dist/index.d.ts +509 -405
- package/dist/index.js +9 -1
- package/dist/orchestrator.js +1 -1
- package/dist/schemas.d.ts +76 -76
- package/dist/shared-context/manager.d.ts +8 -8
- package/dist/transfer/types.d.ts +66 -66
- package/package.json +2 -2
- package/src/index.ts +1 -1
- package/src/meetings/detect.test.ts +366 -0
- package/src/meetings/detect.ts +287 -0
- package/src/meetings/index.ts +8 -0
- package/src/meetings/types.ts +76 -0
- package/dist/chunk-3VBXP5HS.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meeting-intelligence subsystem — shared types (issue #1900).
|
|
3
|
+
*
|
|
4
|
+
* Retrospective meeting detection over already-ingested day signals: audio
|
|
5
|
+
* conversation windows (from wearable day transcripts, any source) plus
|
|
6
|
+
* meeting-app foreground spans (derived from screen activity in a later slice).
|
|
7
|
+
* This slice is pure detection — no store, no fusion, no surfaces. All
|
|
8
|
+
* timestamps are UTC ISO-8601; windows are half-open [startUtc, endUtc).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** A contiguous meeting-app foreground span (derived from activity in a later slice). */
|
|
12
|
+
export interface MeetingAppSpan {
|
|
13
|
+
/** Meeting app label (e.g. "Zoom", "Google Meet"). */
|
|
14
|
+
app: string;
|
|
15
|
+
startUtc: string;
|
|
16
|
+
endUtc: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** An audio conversation window from a wearable/connector day transcript. */
|
|
20
|
+
export interface MeetingAudioWindow {
|
|
21
|
+
/** Wearable source id the conversation came from (desktop, limitless, granola, …). */
|
|
22
|
+
source: string;
|
|
23
|
+
startUtc: string;
|
|
24
|
+
endUtc: string;
|
|
25
|
+
/** Distinct non-wearer speakers in the conversation (drives the audio-only rule). */
|
|
26
|
+
distinctNonWearerSpeakers: number;
|
|
27
|
+
/**
|
|
28
|
+
* True when the source is a cloud meeting provider that supplies explicit
|
|
29
|
+
* meeting boundaries (Granola/Fireflies): such a window is a meeting on its
|
|
30
|
+
* own, without a matching app span.
|
|
31
|
+
*/
|
|
32
|
+
providerMeeting?: boolean;
|
|
33
|
+
/** Provider-supplied meeting title, when available. */
|
|
34
|
+
title?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** How a meeting was detected. */
|
|
38
|
+
export type MeetingDetectionSource = "app+audio" | "audio" | "provider";
|
|
39
|
+
|
|
40
|
+
/** One detected meeting for a day (non-overlapping after merge). */
|
|
41
|
+
export interface DetectedMeeting {
|
|
42
|
+
/** Stable id `mtg-<date>-<hash>`, hashed from date + the exact START instant
|
|
43
|
+
* (app + end deliberately excluded) so a resync that grows the meeting never
|
|
44
|
+
* renumbers it, while non-overlapping meetings keep distinct ids. */
|
|
45
|
+
id: string;
|
|
46
|
+
/** Local day YYYY-MM-DD. */
|
|
47
|
+
date: string;
|
|
48
|
+
startUtc: string;
|
|
49
|
+
endUtc: string;
|
|
50
|
+
/** Meeting app, when app context contributed to detection. */
|
|
51
|
+
app?: string;
|
|
52
|
+
detectionSource: MeetingDetectionSource;
|
|
53
|
+
/** Contributing wearable source ids, sorted, de-duplicated. */
|
|
54
|
+
sources: string[];
|
|
55
|
+
/** Title, when a provider supplied one. */
|
|
56
|
+
title?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Per-day detection input (assembled by a later wiring slice). */
|
|
60
|
+
export interface MeetingsDetectionInput {
|
|
61
|
+
date: string;
|
|
62
|
+
appSpans: MeetingAppSpan[];
|
|
63
|
+
audioWindows: MeetingAudioWindow[];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Detection-relevant configuration (full parseConfig wiring lands in a later slice). */
|
|
67
|
+
export interface MeetingsDetectionConfig {
|
|
68
|
+
/** Meeting-app match patterns (used when deriving app spans from activity). */
|
|
69
|
+
appPatterns: string[];
|
|
70
|
+
/** Min app-span ∩ audio-window overlap to pair them (minutes). */
|
|
71
|
+
minOverlapMinutes: number;
|
|
72
|
+
/** Audio-only fallback: min conversation length (minutes). */
|
|
73
|
+
audioOnlyMinMinutes: number;
|
|
74
|
+
/** Merge candidates within this gap of each other (minutes). */
|
|
75
|
+
mergeGapMinutes: number;
|
|
76
|
+
}
|