@gotcos/glasses-server 6.67.0 → 6.70.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/CHANGELOG.md +67 -0
- package/package.json +2 -1
- package/server/index.ts +9 -0
- package/server/lib/context-library-search.ts +24 -4
- package/server/lib/lens-gist-engines.ts +16 -7
- package/server/lib/live-cos-ask.ts +181 -0
- package/server/lib/maintenance-lifecycle.ts +1 -0
- package/server/lib/meeting-ask-runner.ts +134 -0
- package/server/lib/meeting-ask-runtime.ts +283 -0
- package/server/lib/meeting-ask-search-process.ts +60 -0
- package/server/lib/meeting-ask-store.ts +119 -0
- package/server/lib/meeting-ask-web.ts +325 -0
- package/server/lib/meeting-library-search.ts +22 -2
- package/server/lib/work-search.ts +2 -1
- package/server/routes/health.ts +3 -0
- package/server/routes/live-cos-ask.ts +19 -0
- package/server/routes/meeting-ask.ts +128 -0
- package/shared/meeting-ask.ts +106 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/** Meeting assistance v2. Additive to the legacy /api/meetings/live-ask contract. */
|
|
2
|
+
export type MeetingAskAction = 'catch_up' | 'summary' | 'questions' | 'actions' | 'ask';
|
|
3
|
+
export type MeetingAskEngine = 'claude' | 'codex' | 'cursor' | 'ollama';
|
|
4
|
+
export interface MeetingAskModel {
|
|
5
|
+
engine: MeetingAskEngine;
|
|
6
|
+
model: string;
|
|
7
|
+
}
|
|
8
|
+
export interface MeetingAskTurn {
|
|
9
|
+
id: number;
|
|
10
|
+
elapsedMs: number;
|
|
11
|
+
speaker: string;
|
|
12
|
+
text: string;
|
|
13
|
+
}
|
|
14
|
+
export interface MeetingAskFile {
|
|
15
|
+
id: string;
|
|
16
|
+
revision: string;
|
|
17
|
+
name: string;
|
|
18
|
+
status: 'ready' | 'pending' | 'unsupported' | 'failed' | 'removed' | 'secret-held';
|
|
19
|
+
text: string;
|
|
20
|
+
notice?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface MeetingAskSource {
|
|
23
|
+
id: string;
|
|
24
|
+
kind: 'transcript' | 'memory' | 'meeting' | 'file' | 'web';
|
|
25
|
+
title: string;
|
|
26
|
+
text: string;
|
|
27
|
+
turnId?: number;
|
|
28
|
+
elapsedMs?: number;
|
|
29
|
+
sessionId?: string;
|
|
30
|
+
recordId?: string;
|
|
31
|
+
memoryId?: string;
|
|
32
|
+
domain?: string;
|
|
33
|
+
month?: string;
|
|
34
|
+
filename?: string;
|
|
35
|
+
fileId?: string;
|
|
36
|
+
revision?: string;
|
|
37
|
+
url?: string;
|
|
38
|
+
retrievedAt?: string;
|
|
39
|
+
retrievalId?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface MeetingAskSubmit {
|
|
42
|
+
requestId: string;
|
|
43
|
+
sessionId: string;
|
|
44
|
+
serverInstanceId: string;
|
|
45
|
+
action: MeetingAskAction;
|
|
46
|
+
question: string;
|
|
47
|
+
elapsedMs: number;
|
|
48
|
+
turns: MeetingAskTurn[];
|
|
49
|
+
model?: MeetingAskModel;
|
|
50
|
+
files?: Array<{
|
|
51
|
+
id: string;
|
|
52
|
+
revision: string;
|
|
53
|
+
}>;
|
|
54
|
+
retryOf?: string;
|
|
55
|
+
}
|
|
56
|
+
export type MeetingAskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
|
|
57
|
+
export interface MeetingAskExchange {
|
|
58
|
+
requestId: string;
|
|
59
|
+
sessionId: string;
|
|
60
|
+
serverInstanceId: string;
|
|
61
|
+
action: MeetingAskAction;
|
|
62
|
+
question: string;
|
|
63
|
+
status: MeetingAskStatus;
|
|
64
|
+
createdAt: string;
|
|
65
|
+
updatedAt: string;
|
|
66
|
+
completedAt?: string;
|
|
67
|
+
selectedModel: MeetingAskModel;
|
|
68
|
+
model?: string;
|
|
69
|
+
answer?: string;
|
|
70
|
+
sources: MeetingAskSource[];
|
|
71
|
+
notices: string[];
|
|
72
|
+
throughMs: number;
|
|
73
|
+
files: MeetingAskFile[];
|
|
74
|
+
error?: string;
|
|
75
|
+
retryOf?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface MeetingAskCapabilities {
|
|
78
|
+
protocolVersion: 2;
|
|
79
|
+
durableHistory: true;
|
|
80
|
+
attachmentContext: true;
|
|
81
|
+
webRetrieval: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface MeetingAskConfig {
|
|
84
|
+
protocolVersion: 2;
|
|
85
|
+
serverInstanceId: string;
|
|
86
|
+
selected: MeetingAskModel;
|
|
87
|
+
models: Array<MeetingAskModel & {
|
|
88
|
+
available: boolean;
|
|
89
|
+
reason?: string;
|
|
90
|
+
}>;
|
|
91
|
+
web: {
|
|
92
|
+
available: boolean;
|
|
93
|
+
reason?: string;
|
|
94
|
+
engine?: string;
|
|
95
|
+
};
|
|
96
|
+
capabilities: MeetingAskCapabilities;
|
|
97
|
+
}
|
|
98
|
+
/** All paths under /api/meeting-ask. GET config; PUT config {engine,model}.
|
|
99
|
+
* POST requests MeetingAskSubmit -> 202 {exchange}; GET requests/:requestId -> {exchange}.
|
|
100
|
+
* POST requests/:requestId/cancel {serverInstanceId} -> {exchange}.
|
|
101
|
+
* GET history?sessionId=...&serverInstanceId=...&offset=0&limit=50&order=asc|desc -> {exchanges,nextOffset,files}.
|
|
102
|
+
* PUT files {sessionId,serverInstanceId,files:MeetingAskFile[]} -> {files}. Upsert only; removed is explicit.
|
|
103
|
+
* GET export?sessionId=...&serverInstanceId=... -> {text}; composes persisted Ask/file context,
|
|
104
|
+
* client prepends its current canonical transcript. All operations use X-Cos-Token.
|
|
105
|
+
* GET config is the capability probe (404 means old server); health.capabilities.meetingAsk mirrors capabilities.
|
|
106
|
+
*/
|