@okostream/mcp 0.6.0 → 0.7.1
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 +12 -0
- package/README.md +1 -0
- package/dist/server.js +1 -1
- package/dist/tools.js +12 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.1 - 2026-07-22
|
|
4
|
+
|
|
5
|
+
- Refreshed transitive dependencies after new npm advisories without changing the MCP tool/resource/prompt surface.
|
|
6
|
+
- Kept the remaining Windows-only static-server advisory below the release threshold; OKO MCP continues to run over stdio.
|
|
7
|
+
|
|
8
|
+
## 0.7.0 - 2026-07-22
|
|
9
|
+
|
|
10
|
+
- Routed standard webinar analytics Start/End through the same idempotent server callables used by the dashboard.
|
|
11
|
+
- Added Analytics v3 report fields for deduplicated session visitors, watch time, Geo v2, timeline quality, and cleanup warnings.
|
|
12
|
+
- Made chat counter bookkeeping best-effort after confirmed delivery so a delivered message is never reported as failed.
|
|
13
|
+
- Kept the unfinished NMO special mode on its existing isolated session path.
|
|
14
|
+
|
|
3
15
|
## 0.6.0 - 2026-07-10
|
|
4
16
|
|
|
5
17
|
- Replaced legacy profile/workspace Telegram arrays with canonical server-owned channel operations.
|
package/README.md
CHANGED
|
@@ -79,6 +79,7 @@ Every tool returns JSON text plus MCP `structuredContent`. List-like tools use b
|
|
|
79
79
|
- `oko_list_my_events`, `oko_get_analytics`, `oko_list_recent_chat`, `oko_list_participants`, `oko_list_leads`, `oko_list_notifications`, `oko_list_workspace_access`, `oko_list_workspace_invites`, and `oko_list_telegram_posts` support pagination.
|
|
80
80
|
- `oko_get_analytics` omits heavy `timeline`, baseline/final snapshots, and NMO participant rows by default. Request `includeTimeline`, `includeSnapshots`, or `includeNmoRows` only when needed.
|
|
81
81
|
- `oko_get_session_report` returns a compact structured session report plus markdown suitable for a human handoff.
|
|
82
|
+
- Standard webinar Start/End uses server-owned Analytics v3 callables shared with the dashboard; completed reports include explicit data-quality markers. NMO remains a separate unfinished special-mode workflow.
|
|
82
83
|
- Oversized responses are truncated with `truncated: true` and a `truncationMessage`.
|
|
83
84
|
|
|
84
85
|
The server also exposes MCP-native onboarding:
|
package/dist/server.js
CHANGED
package/dist/tools.js
CHANGED
|
@@ -2688,6 +2688,11 @@ export function registerTools(server) {
|
|
|
2688
2688
|
requireConfirm(confirm, "oko_start_session", { eventId, title: event.title ?? null });
|
|
2689
2689
|
if (event.activeAnalyticsSessionId)
|
|
2690
2690
|
throw new Error("An analytics session is already active.");
|
|
2691
|
+
if (event.nmoMode !== true) {
|
|
2692
|
+
const start = httpsCallable(functions, "startAnalyticsSessionV3");
|
|
2693
|
+
const result = await start({ eventId });
|
|
2694
|
+
return textResult({ started: true, ...result.data });
|
|
2695
|
+
}
|
|
2691
2696
|
let sessionId = null;
|
|
2692
2697
|
try {
|
|
2693
2698
|
const agg = await readAgg(eventId);
|
|
@@ -2779,6 +2784,11 @@ export function registerTools(server) {
|
|
|
2779
2784
|
if (!sessionId)
|
|
2780
2785
|
throw new Error("No active analytics session.");
|
|
2781
2786
|
requireConfirm(confirm, "oko_end_session", { eventId, sessionId });
|
|
2787
|
+
if (event.nmoMode !== true) {
|
|
2788
|
+
const end = httpsCallable(functions, "endAnalyticsSessionV3");
|
|
2789
|
+
const result = await end({ eventId, sessionId });
|
|
2790
|
+
return textResult(result.data);
|
|
2791
|
+
}
|
|
2782
2792
|
const sessionDocRef = doc(firestore, "events", eventId, "analyticsSessions", sessionId);
|
|
2783
2793
|
const [finalAgg, baselineSnap, sessionSnap, firestoreSessionSnap] = await Promise.all([
|
|
2784
2794
|
readAgg(eventId),
|
|
@@ -3200,7 +3210,8 @@ export function registerTools(server) {
|
|
|
3200
3210
|
[`messages/${eventId}/${msgRef.key}`]: { text, uid, name, role, ts: timestamp },
|
|
3201
3211
|
[`rate_limits/${eventId}/${uid}`]: { ts: timestamp, messageId: msgRef.key },
|
|
3202
3212
|
});
|
|
3203
|
-
await runTransaction(ref(rtdb, `events/${eventId}/agg/chatMessages`), (n) => (n ?? 0) + 1)
|
|
3213
|
+
await runTransaction(ref(rtdb, `events/${eventId}/agg/chatMessages`), (n) => (n ?? 0) + 1)
|
|
3214
|
+
.catch(() => undefined);
|
|
3204
3215
|
return textResult({ eventId, messageId: msgRef.key, sent: true });
|
|
3205
3216
|
});
|
|
3206
3217
|
server.registerTool("oko_delete_chat_message", {
|