@opendatalabs/connect 0.12.2 → 0.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/cli/telemetry-contract.d.ts +146 -0
- package/dist/cli/telemetry-contract.d.ts.map +1 -0
- package/dist/cli/telemetry-contract.js +56 -0
- package/dist/cli/telemetry-contract.js.map +1 -0
- package/dist/cli/telemetry.d.ts +15 -31
- package/dist/cli/telemetry.d.ts.map +1 -1
- package/dist/cli/telemetry.js +388 -261
- package/dist/cli/telemetry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
export declare const TELEMETRY_PRODUCERS: readonly ["cli", "data_connect", "personal_server"];
|
|
2
|
+
export type TelemetryProducer = (typeof TELEMETRY_PRODUCERS)[number];
|
|
3
|
+
export declare const TELEMETRY_ERROR_CLASSES: readonly ["auth_failed", "personal_server_unavailable", "network_error", "timeout", "runtime_error", "unknown"];
|
|
4
|
+
export type TelemetryErrorClass = (typeof TELEMETRY_ERROR_CLASSES)[number];
|
|
5
|
+
export declare const TELEMETRY_CANCELLATION_REASONS: readonly ["user_aborted", "abandoned", "timeout"];
|
|
6
|
+
export type TelemetryCancellationReason = (typeof TELEMETRY_CANCELLATION_REASONS)[number];
|
|
7
|
+
export declare const TELEMETRY_INTERACTION_KINDS: readonly ["login", "otp", "captcha", "manual_action"];
|
|
8
|
+
export type TelemetryInteractionKind = (typeof TELEMETRY_INTERACTION_KINDS)[number];
|
|
9
|
+
export declare const TELEMETRY_SYNC_SKIP_REASONS: readonly ["server_unavailable", "not_requested"];
|
|
10
|
+
export type TelemetrySyncSkipReason = (typeof TELEMETRY_SYNC_SKIP_REASONS)[number];
|
|
11
|
+
export declare const TELEMETRY_OS_VALUES: readonly ["linux", "macos", "windows"];
|
|
12
|
+
export type TelemetryOs = (typeof TELEMETRY_OS_VALUES)[number];
|
|
13
|
+
export declare const TELEMETRY_ARCH_VALUES: readonly ["x86_64", "arm64"];
|
|
14
|
+
export type TelemetryArch = (typeof TELEMETRY_ARCH_VALUES)[number];
|
|
15
|
+
export interface TelemetryIdentity {
|
|
16
|
+
eventId: string;
|
|
17
|
+
eventVersion: number;
|
|
18
|
+
}
|
|
19
|
+
export interface TelemetryTime {
|
|
20
|
+
occurredAt: string;
|
|
21
|
+
durationMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface TelemetryAttribution {
|
|
24
|
+
producer: TelemetryProducer;
|
|
25
|
+
installId: string;
|
|
26
|
+
appSessionId?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface TelemetryContext {
|
|
29
|
+
hostPlatform: string;
|
|
30
|
+
os: TelemetryOs;
|
|
31
|
+
arch: TelemetryArch;
|
|
32
|
+
producerVersion: string;
|
|
33
|
+
connectorVersion?: string;
|
|
34
|
+
authMode?: string;
|
|
35
|
+
}
|
|
36
|
+
export type TelemetryCorrelation = {
|
|
37
|
+
scope: "host";
|
|
38
|
+
hostRunId: string;
|
|
39
|
+
} | {
|
|
40
|
+
scope: "collection";
|
|
41
|
+
hostRunId: string;
|
|
42
|
+
collectionRunId: string;
|
|
43
|
+
source: string;
|
|
44
|
+
} | {
|
|
45
|
+
scope: "sync";
|
|
46
|
+
hostRunId: string;
|
|
47
|
+
syncRunId: string;
|
|
48
|
+
source: string;
|
|
49
|
+
collectionRunId?: string;
|
|
50
|
+
} | {
|
|
51
|
+
scope: "grant";
|
|
52
|
+
hostRunId: string;
|
|
53
|
+
grantFlowId: string;
|
|
54
|
+
};
|
|
55
|
+
export type TelemetryKind = {
|
|
56
|
+
lifecycle: "host";
|
|
57
|
+
phase: "started";
|
|
58
|
+
} | {
|
|
59
|
+
lifecycle: "host";
|
|
60
|
+
phase: "terminal";
|
|
61
|
+
outcome: "success";
|
|
62
|
+
} | {
|
|
63
|
+
lifecycle: "host";
|
|
64
|
+
phase: "terminal";
|
|
65
|
+
outcome: "failure";
|
|
66
|
+
errorClass: TelemetryErrorClass;
|
|
67
|
+
} | {
|
|
68
|
+
lifecycle: "collection";
|
|
69
|
+
phase: "started";
|
|
70
|
+
} | {
|
|
71
|
+
lifecycle: "collection";
|
|
72
|
+
phase: "needs_input";
|
|
73
|
+
interactionKind?: TelemetryInteractionKind;
|
|
74
|
+
} | {
|
|
75
|
+
lifecycle: "collection";
|
|
76
|
+
phase: "terminal";
|
|
77
|
+
outcome: "success";
|
|
78
|
+
recordCount?: number;
|
|
79
|
+
} | {
|
|
80
|
+
lifecycle: "collection";
|
|
81
|
+
phase: "terminal";
|
|
82
|
+
outcome: "failure";
|
|
83
|
+
errorClass: TelemetryErrorClass;
|
|
84
|
+
} | {
|
|
85
|
+
lifecycle: "collection";
|
|
86
|
+
phase: "terminal";
|
|
87
|
+
outcome: "cancelled";
|
|
88
|
+
reason?: TelemetryCancellationReason;
|
|
89
|
+
} | {
|
|
90
|
+
lifecycle: "sync";
|
|
91
|
+
phase: "started";
|
|
92
|
+
} | {
|
|
93
|
+
lifecycle: "sync";
|
|
94
|
+
phase: "terminal";
|
|
95
|
+
outcome: "success";
|
|
96
|
+
storedScopeCount: number;
|
|
97
|
+
failedScopeCount: number;
|
|
98
|
+
} | {
|
|
99
|
+
lifecycle: "sync";
|
|
100
|
+
phase: "terminal";
|
|
101
|
+
outcome: "failure";
|
|
102
|
+
errorClass: TelemetryErrorClass;
|
|
103
|
+
} | {
|
|
104
|
+
lifecycle: "sync";
|
|
105
|
+
phase: "skipped";
|
|
106
|
+
reason: TelemetrySyncSkipReason;
|
|
107
|
+
} | {
|
|
108
|
+
lifecycle: "grant";
|
|
109
|
+
phase: "started";
|
|
110
|
+
} | {
|
|
111
|
+
lifecycle: "grant";
|
|
112
|
+
phase: "terminal";
|
|
113
|
+
outcome: "approved";
|
|
114
|
+
} | {
|
|
115
|
+
lifecycle: "grant";
|
|
116
|
+
phase: "terminal";
|
|
117
|
+
outcome: "denied";
|
|
118
|
+
} | {
|
|
119
|
+
lifecycle: "grant";
|
|
120
|
+
phase: "terminal";
|
|
121
|
+
outcome: "expired";
|
|
122
|
+
} | {
|
|
123
|
+
lifecycle: "grant";
|
|
124
|
+
phase: "terminal";
|
|
125
|
+
outcome: "failure";
|
|
126
|
+
errorClass: TelemetryErrorClass;
|
|
127
|
+
};
|
|
128
|
+
export interface TelemetryEvent {
|
|
129
|
+
identity: TelemetryIdentity;
|
|
130
|
+
time: TelemetryTime;
|
|
131
|
+
attribution: TelemetryAttribution;
|
|
132
|
+
context: TelemetryContext;
|
|
133
|
+
correlation: TelemetryCorrelation;
|
|
134
|
+
kind: TelemetryKind;
|
|
135
|
+
debug?: string;
|
|
136
|
+
extensions?: Record<string, unknown>;
|
|
137
|
+
}
|
|
138
|
+
export interface TelemetryBatch {
|
|
139
|
+
batchId: string;
|
|
140
|
+
sentAt: string;
|
|
141
|
+
events: TelemetryEvent[];
|
|
142
|
+
}
|
|
143
|
+
export declare const TELEMETRY_ENDPOINT = "https://telemetry.opendatalabs.com/v1/telemetry/events";
|
|
144
|
+
export declare const TELEMETRY_EVENT_VERSION = 1;
|
|
145
|
+
export declare const TELEMETRY_PRODUCER_NAME: TelemetryProducer;
|
|
146
|
+
//# sourceMappingURL=telemetry-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-contract.d.ts","sourceRoot":"","sources":["../../src/cli/telemetry-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Canonical telemetry contract — copied from context-gateway.
|
|
3
|
+
//
|
|
4
|
+
// SOURCE OF TRUTH:
|
|
5
|
+
// https://github.com/vana-com/context-gateway/blob/main/packages/contracts/src/telemetry.ts
|
|
6
|
+
// https://github.com/vana-com/context-gateway/blob/main/packages/contracts/TELEMETRY.md
|
|
7
|
+
//
|
|
8
|
+
// Context-gateway is a private monorepo, so this file is manually synced
|
|
9
|
+
// rather than imported from npm. When the canonical contract changes, this
|
|
10
|
+
// file MUST be updated to match. The server validates events against its
|
|
11
|
+
// own copy; a mismatch will cause events from this client to be rejected.
|
|
12
|
+
//
|
|
13
|
+
// See TELEMETRY.md in context-gateway for the state machine and the rollup
|
|
14
|
+
// rules. All type definitions below mirror the upstream contract exactly.
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// ── Producers ───────────────────────────────────────────────────────────────
|
|
17
|
+
export const TELEMETRY_PRODUCERS = [
|
|
18
|
+
"cli",
|
|
19
|
+
"data_connect",
|
|
20
|
+
"personal_server",
|
|
21
|
+
];
|
|
22
|
+
// ── Error classes ───────────────────────────────────────────────────────────
|
|
23
|
+
export const TELEMETRY_ERROR_CLASSES = [
|
|
24
|
+
"auth_failed",
|
|
25
|
+
"personal_server_unavailable",
|
|
26
|
+
"network_error",
|
|
27
|
+
"timeout",
|
|
28
|
+
"runtime_error",
|
|
29
|
+
"unknown",
|
|
30
|
+
];
|
|
31
|
+
// ── Cancellation reasons ────────────────────────────────────────────────────
|
|
32
|
+
export const TELEMETRY_CANCELLATION_REASONS = [
|
|
33
|
+
"user_aborted",
|
|
34
|
+
"abandoned",
|
|
35
|
+
"timeout",
|
|
36
|
+
];
|
|
37
|
+
// ── Interaction kinds ───────────────────────────────────────────────────────
|
|
38
|
+
export const TELEMETRY_INTERACTION_KINDS = [
|
|
39
|
+
"login",
|
|
40
|
+
"otp",
|
|
41
|
+
"captcha",
|
|
42
|
+
"manual_action",
|
|
43
|
+
];
|
|
44
|
+
// ── Sync skip reasons ───────────────────────────────────────────────────────
|
|
45
|
+
export const TELEMETRY_SYNC_SKIP_REASONS = [
|
|
46
|
+
"server_unavailable",
|
|
47
|
+
"not_requested",
|
|
48
|
+
];
|
|
49
|
+
// ── Host context enums ──────────────────────────────────────────────────────
|
|
50
|
+
export const TELEMETRY_OS_VALUES = ["linux", "macos", "windows"];
|
|
51
|
+
export const TELEMETRY_ARCH_VALUES = ["x86_64", "arm64"];
|
|
52
|
+
// ── Endpoint ────────────────────────────────────────────────────────────────
|
|
53
|
+
export const TELEMETRY_ENDPOINT = "https://telemetry.opendatalabs.com/v1/telemetry/events";
|
|
54
|
+
export const TELEMETRY_EVENT_VERSION = 1;
|
|
55
|
+
export const TELEMETRY_PRODUCER_NAME = "cli";
|
|
56
|
+
//# sourceMappingURL=telemetry-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-contract.js","sourceRoot":"","sources":["../../src/cli/telemetry-contract.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,mBAAmB;AACnB,8FAA8F;AAC9F,0FAA0F;AAC1F,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAE9E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK;IACL,cAAc;IACd,iBAAiB;CACT,CAAC;AAGX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,aAAa;IACb,6BAA6B;IAC7B,eAAe;IACf,SAAS;IACT,eAAe;IACf,SAAS;CACD,CAAC;AAGX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,cAAc;IACd,WAAW;IACX,SAAS;CACD,CAAC;AAIX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,OAAO;IACP,KAAK;IACL,SAAS;IACT,eAAe;CACP,CAAC;AAIX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,oBAAoB;IACpB,eAAe;CACP,CAAC;AAIX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAG1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AA8IlE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAC7B,wDAAwD,CAAC;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAsB,KAAK,CAAC"}
|
package/dist/cli/telemetry.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { CliChannel, CliEvent, CliInstallMethod, CliOutcome } from "../core/cli-types.js";
|
|
2
2
|
type TelemetryReason = "default" | "config_enabled" | "config_disabled" | "env_disabled" | "env_debug" | "local_only";
|
|
3
|
-
type TelemetryMetadata = Record<string, string | number | boolean | null>;
|
|
4
3
|
export interface TelemetryCommandContext {
|
|
5
4
|
command: string;
|
|
6
5
|
subcommand?: string;
|
|
@@ -25,44 +24,26 @@ export interface TelemetryStatus {
|
|
|
25
24
|
endpoint: string;
|
|
26
25
|
queuedBatches: number;
|
|
27
26
|
}
|
|
28
|
-
interface TelemetryStoredEvent {
|
|
29
|
-
eventId: string;
|
|
30
|
-
eventVersion: number;
|
|
31
|
-
timestamp: string;
|
|
32
|
-
installId: string;
|
|
33
|
-
runId: string;
|
|
34
|
-
eventName: string;
|
|
35
|
-
command: string;
|
|
36
|
-
subcommand: string | null;
|
|
37
|
-
source: string | null;
|
|
38
|
-
connectorVersion: string | null;
|
|
39
|
-
authMode: string | null;
|
|
40
|
-
platform: string;
|
|
41
|
-
os: string;
|
|
42
|
-
arch: string;
|
|
43
|
-
cliVersion: string;
|
|
44
|
-
channel: CliChannel;
|
|
45
|
-
installMethod: CliInstallMethod;
|
|
46
|
-
ci: boolean;
|
|
47
|
-
agent: boolean;
|
|
48
|
-
interactive: boolean;
|
|
49
|
-
outcome: string | null;
|
|
50
|
-
errorClass: string | null;
|
|
51
|
-
durationMs: number | null;
|
|
52
|
-
storedScopeCount: number | null;
|
|
53
|
-
failedScopeCount: number | null;
|
|
54
|
-
metadata: TelemetryMetadata | null;
|
|
55
|
-
}
|
|
56
27
|
interface CommandResult {
|
|
57
28
|
exitCode: number;
|
|
58
29
|
outcome?: string | null;
|
|
59
30
|
errorClass?: string | null;
|
|
60
31
|
}
|
|
61
32
|
export interface CliTelemetrySession {
|
|
33
|
+
/** Translate a CLI-native event into canonical telemetry events. */
|
|
62
34
|
trackCliEvent(event: CliEvent | CliOutcome): void;
|
|
63
|
-
|
|
35
|
+
/**
|
|
36
|
+
* No-op shim for call sites that emitted ad-hoc custom events. The
|
|
37
|
+
* canonical contract does not support arbitrary event names; the
|
|
38
|
+
* intended way to carry producer-specific detail is via
|
|
39
|
+
* `extensions` on host events, already handled by the session.
|
|
40
|
+
*/
|
|
41
|
+
trackCustomEvent(eventName: string, patch?: Record<string, unknown>): void;
|
|
42
|
+
/** Mark the overall command result and emit host/collection terminals. */
|
|
64
43
|
markCommandResult(result: CommandResult): void;
|
|
44
|
+
/** Persist queued events to the outbox. */
|
|
65
45
|
persist(): Promise<void>;
|
|
46
|
+
/** Attempt to flush outbox files to the server. */
|
|
66
47
|
flush(): Promise<void>;
|
|
67
48
|
}
|
|
68
49
|
export declare function flushTelemetryOutbox(): Promise<void>;
|
|
@@ -70,7 +51,10 @@ export declare function getTelemetryStatus(): Promise<TelemetryStatus>;
|
|
|
70
51
|
export declare function setTelemetryEnabled(enabled: boolean): Promise<void>;
|
|
71
52
|
export declare function setActiveTelemetrySession(session: CliTelemetrySession | null): void;
|
|
72
53
|
export declare function getActiveTelemetrySession(): CliTelemetrySession | null;
|
|
73
|
-
export declare function trackActiveTelemetryEvent(eventName: string, patch?: Partial<TelemetryStoredEvent>): void;
|
|
74
54
|
export declare function createCliTelemetrySession(context: TelemetryCommandContext): Promise<CliTelemetrySession>;
|
|
55
|
+
/** @deprecated trackCustomEvent on the session is a no-op in the canonical
|
|
56
|
+
* model. This top-level helper is also a no-op — kept only to satisfy
|
|
57
|
+
* existing call sites. */
|
|
58
|
+
export declare function trackActiveTelemetryEvent(_eventName?: string, _patch?: unknown): void;
|
|
75
59
|
export {};
|
|
76
60
|
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACX,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACX,MAAM,sBAAsB,CAAC;AA6B9B,KAAK,eAAe,GAChB,SAAS,GACT,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,aAAa,EAAE,gBAAgB,CAAC;IAChC,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;QAChB,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAWD,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IAClD;;;;;OAKG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3E,0EAA0E;IAC1E,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/C,2CAA2C;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAuSD,wBAAsB,oBAAoB,kBA8BzC;AAID,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAUnE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,iBAEzD;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,QAE5E;AAED,wBAAgB,yBAAyB,+BAExC;AAID,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CA2V9B;AAID;;2BAE2B;AAC3B,wBAAgB,yBAAyB,CACvC,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,QAGjB"}
|
package/dist/cli/telemetry.js
CHANGED
|
@@ -3,13 +3,14 @@ import fs from "node:fs/promises";
|
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { getTelemetryOutboxDir, readCliConfig, updateCliConfig, } from "../core/index.js";
|
|
6
|
-
|
|
6
|
+
import { TELEMETRY_ENDPOINT, TELEMETRY_EVENT_VERSION, TELEMETRY_PRODUCER_NAME, } from "./telemetry-contract.js";
|
|
7
|
+
// ── Config ──────────────────────────────────────────────────────────────────
|
|
7
8
|
const MAX_EVENTS_PER_BATCH = 100;
|
|
8
9
|
const MAX_BATCH_BYTES = 64 * 1024;
|
|
9
10
|
const MAX_FILES_PER_FLUSH = 10;
|
|
10
11
|
const FLUSH_TIMEOUT_MS = 1500;
|
|
11
|
-
const EVENT_VERSION = 1;
|
|
12
12
|
let activeSession = null;
|
|
13
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
13
14
|
function randomId(prefix) {
|
|
14
15
|
return `${prefix}_${crypto.randomUUID()}`;
|
|
15
16
|
}
|
|
@@ -19,177 +20,74 @@ function nowIso() {
|
|
|
19
20
|
function getEndpoint() {
|
|
20
21
|
return process.env.VANA_TELEMETRY_URL?.trim() || TELEMETRY_ENDPOINT;
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
-
|
|
23
|
+
function detectOs() {
|
|
24
|
+
const platform = process.platform;
|
|
25
|
+
if (platform === "linux")
|
|
26
|
+
return "linux";
|
|
27
|
+
if (platform === "darwin")
|
|
28
|
+
return "macos";
|
|
29
|
+
if (platform === "win32")
|
|
30
|
+
return "windows";
|
|
31
|
+
return "linux"; // fallback
|
|
24
32
|
}
|
|
25
|
-
function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return
|
|
33
|
+
function detectArch() {
|
|
34
|
+
const arch = os.arch();
|
|
35
|
+
if (arch === "arm64")
|
|
36
|
+
return "arm64";
|
|
37
|
+
return "x86_64";
|
|
30
38
|
}
|
|
31
|
-
function
|
|
32
|
-
return {
|
|
33
|
-
storedScopeCount: scopeResults?.filter((item) => item.status === "stored").length ?? null,
|
|
34
|
-
failedScopeCount: scopeResults?.filter((item) => item.status === "failed").length ?? null,
|
|
35
|
-
};
|
|
39
|
+
function makeHostPlatform(osName, arch) {
|
|
40
|
+
return `${osName}-${arch}`;
|
|
36
41
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return "source_required";
|
|
47
|
-
if (value.includes("prompt_cancelled") || value.includes("cancelled"))
|
|
48
|
-
return "prompt_cancelled";
|
|
49
|
-
if (value.includes("needs_input") ||
|
|
50
|
-
value.includes("needs input") ||
|
|
51
|
-
value.includes("input required") ||
|
|
52
|
-
value.includes("manual step"))
|
|
53
|
-
return "needs_input";
|
|
54
|
-
if (value.includes("auth expired"))
|
|
55
|
-
return "auth_expired";
|
|
56
|
-
if (value.includes("auth"))
|
|
57
|
-
return "auth_failed";
|
|
58
|
-
if (value.includes("legacy"))
|
|
59
|
-
return "legacy_auth";
|
|
60
|
-
if (value.includes("personal_server_unavailable") ||
|
|
61
|
-
value.includes("personal server unavailable"))
|
|
42
|
+
// Classify a free-form CLI error/reason string into a canonical error class.
|
|
43
|
+
// The CLI's own classification produced richer values (e.g. setup_required,
|
|
44
|
+
// legacy_auth); we collapse these into the canonical whitelist here.
|
|
45
|
+
function classifyCanonicalError(value) {
|
|
46
|
+
const normalized = (value ?? "").toLowerCase();
|
|
47
|
+
if (!normalized)
|
|
48
|
+
return "unknown";
|
|
49
|
+
if (normalized.includes("personal_server_unavailable") ||
|
|
50
|
+
normalized.includes("personal server")) {
|
|
62
51
|
return "personal_server_unavailable";
|
|
63
|
-
|
|
52
|
+
}
|
|
53
|
+
if (normalized.includes("auth") || normalized.includes("legacy")) {
|
|
54
|
+
return "auth_failed";
|
|
55
|
+
}
|
|
56
|
+
if (normalized.includes("timeout") || normalized.includes("timed out")) {
|
|
64
57
|
return "timeout";
|
|
65
|
-
|
|
58
|
+
}
|
|
59
|
+
if (normalized.includes("network")) {
|
|
66
60
|
return "network_error";
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
61
|
+
}
|
|
62
|
+
if (normalized.includes("runtime") ||
|
|
63
|
+
normalized.includes("connector") ||
|
|
64
|
+
normalized.includes("unexpected") ||
|
|
65
|
+
normalized.includes("ingest_failed") ||
|
|
66
|
+
normalized.includes("setup_required") ||
|
|
67
|
+
normalized.includes("invalid_connector")) {
|
|
72
68
|
return "runtime_error";
|
|
73
|
-
return "unknown";
|
|
74
|
-
}
|
|
75
|
-
function classifyOutcomeStatus(outcome) {
|
|
76
|
-
switch (outcome) {
|
|
77
|
-
case "needs_input":
|
|
78
|
-
return "needs_input";
|
|
79
|
-
case "auth_failed":
|
|
80
|
-
return "auth_failed";
|
|
81
|
-
case "legacy_auth":
|
|
82
|
-
return "legacy_auth";
|
|
83
|
-
case "personal_server_unavailable":
|
|
84
|
-
return "personal_server_unavailable";
|
|
85
|
-
case "ingest_failed":
|
|
86
|
-
return "ingest_failed";
|
|
87
|
-
case "connector_unavailable":
|
|
88
|
-
return "connector_unavailable";
|
|
89
|
-
case "runtime_error":
|
|
90
|
-
return "runtime_error";
|
|
91
|
-
case "setup_required":
|
|
92
|
-
return "setup_required";
|
|
93
|
-
case "setup_declined":
|
|
94
|
-
return "setup_declined";
|
|
95
|
-
case "source_required":
|
|
96
|
-
return "source_required";
|
|
97
|
-
case "prompt_cancelled":
|
|
98
|
-
return "prompt_cancelled";
|
|
99
|
-
case "invalid_connector":
|
|
100
|
-
return "invalid_connector";
|
|
101
|
-
case "unexpected_internal_error":
|
|
102
|
-
return "unexpected_internal_error";
|
|
103
|
-
default:
|
|
104
|
-
return null;
|
|
105
69
|
}
|
|
70
|
+
return "unknown";
|
|
106
71
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
eventName: "runtime_check_completed",
|
|
120
|
-
patch: {
|
|
121
|
-
metadata: sanitizeMetadata({ runtime: event.runtime ?? null }),
|
|
122
|
-
},
|
|
123
|
-
};
|
|
124
|
-
case "setup-complete":
|
|
125
|
-
return {
|
|
126
|
-
eventName: "runtime_install_completed",
|
|
127
|
-
patch: {
|
|
128
|
-
metadata: sanitizeMetadata({ runtime: event.runtime ?? null }),
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
case "connector-resolved":
|
|
132
|
-
return { eventName: "connector_resolved" };
|
|
133
|
-
case "needs-input":
|
|
134
|
-
return {
|
|
135
|
-
eventName: "input_required",
|
|
136
|
-
patch: {
|
|
137
|
-
errorClass: "needs_input",
|
|
138
|
-
metadata: sanitizeMetadata({ fieldCount: event.fields?.length ?? 0 }),
|
|
139
|
-
},
|
|
140
|
-
};
|
|
141
|
-
case "legacy-auth":
|
|
142
|
-
return {
|
|
143
|
-
eventName: "legacy_auth_required",
|
|
144
|
-
patch: { errorClass: "legacy_auth" },
|
|
145
|
-
};
|
|
146
|
-
case "collection-complete":
|
|
147
|
-
return { eventName: "collection_completed" };
|
|
148
|
-
case "runtime-error":
|
|
149
|
-
return {
|
|
150
|
-
eventName: "collection_failed",
|
|
151
|
-
patch: { errorClass: classifyError(event.message) ?? "runtime_error" },
|
|
152
|
-
};
|
|
153
|
-
case "ingest-started":
|
|
154
|
-
return { eventName: "ingest_started" };
|
|
155
|
-
case "ingest-complete":
|
|
156
|
-
return {
|
|
157
|
-
eventName: "ingest_completed",
|
|
158
|
-
patch: countScopeResults(event.scopeResults),
|
|
159
|
-
};
|
|
160
|
-
case "ingest-partial":
|
|
161
|
-
return {
|
|
162
|
-
eventName: "ingest_partial",
|
|
163
|
-
patch: {
|
|
164
|
-
...countScopeResults(event.scopeResults),
|
|
165
|
-
errorClass: "ingest_failed",
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
case "ingest-failed":
|
|
169
|
-
return {
|
|
170
|
-
eventName: "ingest_failed",
|
|
171
|
-
patch: {
|
|
172
|
-
...countScopeResults(event.scopeResults),
|
|
173
|
-
errorClass: "ingest_failed",
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
case "ingest-skipped":
|
|
177
|
-
return {
|
|
178
|
-
eventName: "ingest_skipped",
|
|
179
|
-
patch: {
|
|
180
|
-
errorClass: classifyError(event.reason) ?? null,
|
|
181
|
-
metadata: sanitizeMetadata({ reason: event.reason ?? null }),
|
|
182
|
-
},
|
|
183
|
-
};
|
|
184
|
-
case "outcome":
|
|
185
|
-
case "progress-update":
|
|
186
|
-
case "status-update":
|
|
187
|
-
case "headed-required":
|
|
188
|
-
case "jpeg":
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
return null;
|
|
72
|
+
// Map a CLI interaction indicator to a canonical InteractionKind.
|
|
73
|
+
function mapInteractionKind(value) {
|
|
74
|
+
const normalized = (value ?? "").toLowerCase();
|
|
75
|
+
if (!normalized)
|
|
76
|
+
return undefined;
|
|
77
|
+
if (normalized.includes("otp"))
|
|
78
|
+
return "otp";
|
|
79
|
+
if (normalized.includes("captcha"))
|
|
80
|
+
return "captcha";
|
|
81
|
+
if (normalized.includes("login") || normalized.includes("credential"))
|
|
82
|
+
return "login";
|
|
83
|
+
return "manual_action";
|
|
192
84
|
}
|
|
85
|
+
// ── Outbox (file-backed) ────────────────────────────────────────────────────
|
|
86
|
+
//
|
|
87
|
+
// Events are batched into TelemetryBatch envelopes, written to individual
|
|
88
|
+
// JSON files in getTelemetryOutboxDir(), and flushed on command exit and on
|
|
89
|
+
// subsequent runs (retry across restarts). This survives crashes — the
|
|
90
|
+
// pattern is worth preserving for the desktop app too.
|
|
193
91
|
async function ensureOutboxDir() {
|
|
194
92
|
await fs.mkdir(getTelemetryOutboxDir(), { recursive: true });
|
|
195
93
|
}
|
|
@@ -272,52 +170,64 @@ async function resolveTelemetryState(localOnly = false) {
|
|
|
272
170
|
queuedBatches,
|
|
273
171
|
};
|
|
274
172
|
}
|
|
173
|
+
// ── Event factory ───────────────────────────────────────────────────────────
|
|
174
|
+
//
|
|
175
|
+
// Builds canonical TelemetryEvent values with identity + time + attribution +
|
|
176
|
+
// context auto-populated. The caller supplies correlation + kind.
|
|
275
177
|
function createEventFactory(context, state) {
|
|
276
|
-
const
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
178
|
+
const hostRunId = randomId("host");
|
|
179
|
+
const osName = detectOs();
|
|
180
|
+
const arch = detectArch();
|
|
181
|
+
const hostPlatform = makeHostPlatform(osName, arch);
|
|
182
|
+
const baseContext = {
|
|
183
|
+
hostPlatform,
|
|
184
|
+
os: osName,
|
|
185
|
+
arch,
|
|
186
|
+
producerVersion: context.cliVersion,
|
|
187
|
+
};
|
|
188
|
+
return {
|
|
189
|
+
hostRunId,
|
|
190
|
+
build(args) {
|
|
191
|
+
return {
|
|
192
|
+
identity: {
|
|
193
|
+
eventId: randomId("evt"),
|
|
194
|
+
eventVersion: TELEMETRY_EVENT_VERSION,
|
|
195
|
+
},
|
|
196
|
+
time: {
|
|
197
|
+
occurredAt: nowIso(),
|
|
198
|
+
...(args.durationMs !== undefined
|
|
199
|
+
? { durationMs: args.durationMs }
|
|
200
|
+
: {}),
|
|
201
|
+
},
|
|
202
|
+
attribution: {
|
|
203
|
+
producer: TELEMETRY_PRODUCER_NAME,
|
|
204
|
+
installId: state.installId,
|
|
205
|
+
},
|
|
206
|
+
context: {
|
|
207
|
+
...baseContext,
|
|
208
|
+
...(args.connectorVersion
|
|
209
|
+
? { connectorVersion: args.connectorVersion }
|
|
210
|
+
: {}),
|
|
211
|
+
...(args.authMode ? { authMode: args.authMode } : {}),
|
|
212
|
+
},
|
|
213
|
+
correlation: args.correlation,
|
|
214
|
+
kind: args.kind,
|
|
215
|
+
...(args.debug ? { debug: args.debug } : {}),
|
|
216
|
+
...(args.extensions ? { extensions: args.extensions } : {}),
|
|
217
|
+
};
|
|
218
|
+
},
|
|
294
219
|
};
|
|
295
|
-
return (eventName, patch = {}) => ({
|
|
296
|
-
eventId: randomId("evt"),
|
|
297
|
-
eventVersion: EVENT_VERSION,
|
|
298
|
-
timestamp: nowIso(),
|
|
299
|
-
eventName,
|
|
300
|
-
...base,
|
|
301
|
-
...patch,
|
|
302
|
-
outcome: patch.outcome ?? null,
|
|
303
|
-
errorClass: patch.errorClass ?? null,
|
|
304
|
-
durationMs: patch.durationMs ?? null,
|
|
305
|
-
storedScopeCount: patch.storedScopeCount ?? null,
|
|
306
|
-
failedScopeCount: patch.failedScopeCount ?? null,
|
|
307
|
-
metadata: sanitizeMetadata(patch.metadata),
|
|
308
|
-
});
|
|
309
220
|
}
|
|
310
|
-
|
|
221
|
+
// ── Batch serialization ─────────────────────────────────────────────────────
|
|
222
|
+
function splitIntoEnvelopes(events) {
|
|
311
223
|
const envelopes = [];
|
|
312
224
|
let current = [];
|
|
313
225
|
const flushCurrent = () => {
|
|
314
|
-
if (current.length === 0)
|
|
226
|
+
if (current.length === 0)
|
|
315
227
|
return;
|
|
316
|
-
}
|
|
317
228
|
envelopes.push({
|
|
318
229
|
batchId: randomId("batch"),
|
|
319
230
|
sentAt: nowIso(),
|
|
320
|
-
client: { name: "vana-cli", version: cliVersion },
|
|
321
231
|
events: current,
|
|
322
232
|
});
|
|
323
233
|
current = [];
|
|
@@ -327,7 +237,6 @@ function splitIntoEnvelopes(events, cliVersion) {
|
|
|
327
237
|
const candidate = {
|
|
328
238
|
batchId: "batch_candidate",
|
|
329
239
|
sentAt: nowIso(),
|
|
330
|
-
client: { name: "vana-cli", version: cliVersion },
|
|
331
240
|
events: current,
|
|
332
241
|
};
|
|
333
242
|
const tooManyEvents = current.length > MAX_EVENTS_PER_BATCH;
|
|
@@ -335,25 +244,23 @@ function splitIntoEnvelopes(events, cliVersion) {
|
|
|
335
244
|
if (tooManyEvents || tooLarge) {
|
|
336
245
|
const overflow = current.pop();
|
|
337
246
|
flushCurrent();
|
|
338
|
-
if (overflow)
|
|
247
|
+
if (overflow)
|
|
339
248
|
current.push(overflow);
|
|
340
|
-
}
|
|
341
249
|
}
|
|
342
250
|
}
|
|
343
251
|
flushCurrent();
|
|
344
252
|
return envelopes;
|
|
345
253
|
}
|
|
346
|
-
async function writeEnvelope(envelope,
|
|
254
|
+
async function writeEnvelope(envelope, hostRunId) {
|
|
347
255
|
await ensureOutboxDir();
|
|
348
|
-
const filename = `${Date.now()}-${process.pid}-${
|
|
256
|
+
const filename = `${Date.now()}-${process.pid}-${hostRunId}-${crypto.randomUUID()}.json`;
|
|
349
257
|
const outboxPath = path.join(getTelemetryOutboxDir(), filename);
|
|
350
258
|
await fs.writeFile(outboxPath, `${JSON.stringify(envelope)}\n`, "utf8");
|
|
351
259
|
}
|
|
352
260
|
export async function flushTelemetryOutbox() {
|
|
353
261
|
const state = await resolveTelemetryState();
|
|
354
|
-
if (!state.enabled || state.mode !== "normal")
|
|
262
|
+
if (!state.enabled || state.mode !== "normal")
|
|
355
263
|
return;
|
|
356
|
-
}
|
|
357
264
|
const files = (await listOutboxFiles()).slice(0, MAX_FILES_PER_FLUSH);
|
|
358
265
|
for (const filePath of files) {
|
|
359
266
|
let contents;
|
|
@@ -368,7 +275,7 @@ export async function flushTelemetryOutbox() {
|
|
|
368
275
|
method: "POST",
|
|
369
276
|
headers: {
|
|
370
277
|
"Content-Type": "application/json",
|
|
371
|
-
"User-Agent": `vana-cli
|
|
278
|
+
"User-Agent": `vana-cli/unknown`,
|
|
372
279
|
},
|
|
373
280
|
body: contents,
|
|
374
281
|
signal: AbortSignal.timeout(FLUSH_TIMEOUT_MS),
|
|
@@ -382,6 +289,7 @@ export async function flushTelemetryOutbox() {
|
|
|
382
289
|
}
|
|
383
290
|
}
|
|
384
291
|
}
|
|
292
|
+
// ── Public helpers ──────────────────────────────────────────────────────────
|
|
385
293
|
export async function getTelemetryStatus() {
|
|
386
294
|
const state = await resolveTelemetryState();
|
|
387
295
|
return {
|
|
@@ -402,93 +310,312 @@ export function setActiveTelemetrySession(session) {
|
|
|
402
310
|
export function getActiveTelemetrySession() {
|
|
403
311
|
return activeSession;
|
|
404
312
|
}
|
|
405
|
-
|
|
406
|
-
activeSession?.trackCustomEvent(eventName, patch);
|
|
407
|
-
}
|
|
313
|
+
// ── Session ─────────────────────────────────────────────────────────────────
|
|
408
314
|
export async function createCliTelemetrySession(context) {
|
|
409
315
|
const state = await resolveTelemetryState(Boolean(context.localOnly));
|
|
410
|
-
const
|
|
316
|
+
const factory = createEventFactory(context, state);
|
|
411
317
|
const startedAt = Date.now();
|
|
412
318
|
const events = [];
|
|
413
|
-
|
|
414
|
-
|
|
319
|
+
// Per-session state. A single CLI invocation is ONE host run, with zero
|
|
320
|
+
// or more collection runs and sync attempts nested within.
|
|
321
|
+
const hostRunId = factory.hostRunId;
|
|
322
|
+
let collectionRunId = null;
|
|
323
|
+
let collectionSource = context.source ?? null;
|
|
324
|
+
let connectorVersion;
|
|
325
|
+
let authMode;
|
|
326
|
+
let syncRunId = null;
|
|
327
|
+
let latestOutcomeRaw = null;
|
|
415
328
|
let persisted = false;
|
|
416
|
-
|
|
417
|
-
|
|
329
|
+
// Host-level extensions captured from the command context. These are
|
|
330
|
+
// producer-specific details that don't belong in the canonical Kind.
|
|
331
|
+
const hostExtensions = {
|
|
332
|
+
command: context.command,
|
|
333
|
+
subcommand: context.subcommand ?? null,
|
|
334
|
+
channel: context.channel,
|
|
335
|
+
installMethod: context.installMethod,
|
|
336
|
+
isCi: Boolean(process.env.CI),
|
|
337
|
+
isAgent: Boolean(process.env.AGENT),
|
|
338
|
+
isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY && !context.options.noInput),
|
|
339
|
+
};
|
|
340
|
+
const push = (event) => {
|
|
341
|
+
if (!state.enabled && state.mode !== "debug")
|
|
418
342
|
return;
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
343
|
+
events.push(event);
|
|
344
|
+
};
|
|
345
|
+
// Emit host/started immediately.
|
|
346
|
+
push(factory.build({
|
|
347
|
+
correlation: { scope: "host", hostRunId },
|
|
348
|
+
kind: { lifecycle: "host", phase: "started" },
|
|
349
|
+
extensions: hostExtensions,
|
|
350
|
+
}));
|
|
351
|
+
// Helper to lazily start a collection run the first time we see collection activity.
|
|
352
|
+
const ensureCollectionStarted = () => {
|
|
353
|
+
if (collectionRunId)
|
|
354
|
+
return;
|
|
355
|
+
if (!collectionSource)
|
|
356
|
+
return;
|
|
357
|
+
collectionRunId = randomId("col");
|
|
358
|
+
push(factory.build({
|
|
359
|
+
correlation: {
|
|
360
|
+
scope: "collection",
|
|
361
|
+
hostRunId,
|
|
362
|
+
collectionRunId,
|
|
363
|
+
source: collectionSource,
|
|
364
|
+
},
|
|
365
|
+
kind: { lifecycle: "collection", phase: "started" },
|
|
366
|
+
connectorVersion,
|
|
367
|
+
authMode,
|
|
368
|
+
}));
|
|
369
|
+
};
|
|
370
|
+
const emitCollectionEvent = (kind) => {
|
|
371
|
+
ensureCollectionStarted();
|
|
372
|
+
if (!collectionRunId || !collectionSource)
|
|
373
|
+
return;
|
|
374
|
+
push(factory.build({
|
|
375
|
+
correlation: {
|
|
376
|
+
scope: "collection",
|
|
377
|
+
hostRunId,
|
|
378
|
+
collectionRunId,
|
|
379
|
+
source: collectionSource,
|
|
380
|
+
},
|
|
381
|
+
kind,
|
|
382
|
+
connectorVersion,
|
|
383
|
+
}));
|
|
384
|
+
};
|
|
385
|
+
const ensureSyncRunId = () => {
|
|
386
|
+
if (!syncRunId)
|
|
387
|
+
syncRunId = randomId("sync");
|
|
388
|
+
return syncRunId;
|
|
389
|
+
};
|
|
390
|
+
const emitSyncEvent = (kind) => {
|
|
391
|
+
if (!collectionSource)
|
|
392
|
+
return;
|
|
393
|
+
push(factory.build({
|
|
394
|
+
correlation: {
|
|
395
|
+
scope: "sync",
|
|
396
|
+
hostRunId,
|
|
397
|
+
syncRunId: ensureSyncRunId(),
|
|
398
|
+
source: collectionSource,
|
|
399
|
+
...(collectionRunId ? { collectionRunId } : {}),
|
|
400
|
+
},
|
|
401
|
+
kind,
|
|
402
|
+
}));
|
|
403
|
+
};
|
|
404
|
+
const countScopeResults = (scopeResults) => {
|
|
405
|
+
const stored = scopeResults?.filter((s) => s.status === "stored").length ?? 0;
|
|
406
|
+
const failed = scopeResults?.filter((s) => s.status === "failed").length ?? 0;
|
|
407
|
+
return { stored, failed };
|
|
422
408
|
};
|
|
423
|
-
push("command_started", {
|
|
424
|
-
metadata: sanitizeMetadata({
|
|
425
|
-
launchMode: context.options.detach ? "detached" : "direct",
|
|
426
|
-
inputMode: context.options.ipc
|
|
427
|
-
? "ipc"
|
|
428
|
-
: context.options.noInput
|
|
429
|
-
? "no_input"
|
|
430
|
-
: "interactive",
|
|
431
|
-
}),
|
|
432
|
-
});
|
|
433
409
|
return {
|
|
434
410
|
trackCliEvent(event) {
|
|
435
|
-
|
|
436
|
-
if (
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
411
|
+
// Capture connector version / source / auth mode from any event that carries them.
|
|
412
|
+
if ("source" in event && event.source)
|
|
413
|
+
collectionSource = event.source;
|
|
414
|
+
switch (event.type) {
|
|
415
|
+
case "setup-check":
|
|
416
|
+
// Setup-phase events are producer-specific and don't fit the shared
|
|
417
|
+
// lifecycle. Attach them to the host extensions instead.
|
|
418
|
+
hostExtensions.runtimeCheckCompleted = true;
|
|
419
|
+
break;
|
|
420
|
+
case "setup-complete":
|
|
421
|
+
hostExtensions.runtimeInstallCompleted = true;
|
|
422
|
+
break;
|
|
423
|
+
case "connector-resolved":
|
|
424
|
+
hostExtensions.connectorResolved = true;
|
|
425
|
+
break;
|
|
426
|
+
case "needs-input":
|
|
427
|
+
emitCollectionEvent({
|
|
428
|
+
lifecycle: "collection",
|
|
429
|
+
phase: "needs_input",
|
|
430
|
+
...(mapInteractionKind(event.fields?.join(",") ?? null)
|
|
431
|
+
? {
|
|
432
|
+
interactionKind: mapInteractionKind(event.fields?.join(",") ?? null),
|
|
433
|
+
}
|
|
434
|
+
: {}),
|
|
435
|
+
});
|
|
436
|
+
break;
|
|
437
|
+
case "legacy-auth":
|
|
438
|
+
// Legacy auth is effectively a "needs manual action" interaction.
|
|
439
|
+
emitCollectionEvent({
|
|
440
|
+
lifecycle: "collection",
|
|
441
|
+
phase: "needs_input",
|
|
442
|
+
interactionKind: "manual_action",
|
|
443
|
+
});
|
|
444
|
+
break;
|
|
445
|
+
case "collection-complete":
|
|
446
|
+
emitCollectionEvent({
|
|
447
|
+
lifecycle: "collection",
|
|
448
|
+
phase: "terminal",
|
|
449
|
+
outcome: "success",
|
|
450
|
+
});
|
|
451
|
+
break;
|
|
452
|
+
case "runtime-error":
|
|
453
|
+
emitCollectionEvent({
|
|
454
|
+
lifecycle: "collection",
|
|
455
|
+
phase: "terminal",
|
|
456
|
+
outcome: "failure",
|
|
457
|
+
errorClass: classifyCanonicalError(event.message),
|
|
458
|
+
});
|
|
459
|
+
break;
|
|
460
|
+
case "ingest-started":
|
|
461
|
+
emitSyncEvent({ lifecycle: "sync", phase: "started" });
|
|
462
|
+
break;
|
|
463
|
+
case "ingest-complete": {
|
|
464
|
+
const { stored, failed } = countScopeResults(event.scopeResults);
|
|
465
|
+
emitSyncEvent({
|
|
466
|
+
lifecycle: "sync",
|
|
467
|
+
phase: "terminal",
|
|
468
|
+
outcome: "success",
|
|
469
|
+
storedScopeCount: stored,
|
|
470
|
+
failedScopeCount: failed,
|
|
471
|
+
});
|
|
472
|
+
syncRunId = null;
|
|
473
|
+
break;
|
|
440
474
|
}
|
|
441
|
-
|
|
475
|
+
case "ingest-partial": {
|
|
476
|
+
// Partial in the CLI means "some scopes stored, some failed" — in
|
|
477
|
+
// the canonical contract that is `outcome: success` with
|
|
478
|
+
// failedScopeCount > 0. The UI derives the "partial" label.
|
|
479
|
+
const { stored, failed } = countScopeResults(event.scopeResults);
|
|
480
|
+
emitSyncEvent({
|
|
481
|
+
lifecycle: "sync",
|
|
482
|
+
phase: "terminal",
|
|
483
|
+
outcome: "success",
|
|
484
|
+
storedScopeCount: stored,
|
|
485
|
+
failedScopeCount: failed,
|
|
486
|
+
});
|
|
487
|
+
syncRunId = null;
|
|
488
|
+
break;
|
|
489
|
+
}
|
|
490
|
+
case "ingest-failed":
|
|
491
|
+
emitSyncEvent({
|
|
492
|
+
lifecycle: "sync",
|
|
493
|
+
phase: "terminal",
|
|
494
|
+
outcome: "failure",
|
|
495
|
+
errorClass: classifyCanonicalError("ingest_failed"),
|
|
496
|
+
});
|
|
497
|
+
syncRunId = null;
|
|
498
|
+
break;
|
|
499
|
+
case "ingest-skipped":
|
|
500
|
+
// Skip is standalone — no preceding `started` event.
|
|
501
|
+
syncRunId = randomId("sync"); // fresh ID for the standalone skip
|
|
502
|
+
emitSyncEvent({
|
|
503
|
+
lifecycle: "sync",
|
|
504
|
+
phase: "skipped",
|
|
505
|
+
reason: classifyCanonicalError(event.reason) ===
|
|
506
|
+
"personal_server_unavailable"
|
|
507
|
+
? "server_unavailable"
|
|
508
|
+
: "not_requested",
|
|
509
|
+
});
|
|
510
|
+
syncRunId = null;
|
|
511
|
+
break;
|
|
512
|
+
case "outcome":
|
|
513
|
+
latestOutcomeRaw = event.status ?? null;
|
|
514
|
+
break;
|
|
515
|
+
case "progress-update":
|
|
516
|
+
case "status-update":
|
|
517
|
+
case "headed-required":
|
|
518
|
+
case "jpeg":
|
|
519
|
+
// Not modeled in canonical telemetry.
|
|
520
|
+
break;
|
|
442
521
|
}
|
|
443
|
-
push(mapped.eventName, {
|
|
444
|
-
...mapped.patch,
|
|
445
|
-
source: event.source ?? context.source ?? null,
|
|
446
|
-
});
|
|
447
|
-
},
|
|
448
|
-
trackCustomEvent(eventName, patch = {}) {
|
|
449
|
-
push(eventName, patch);
|
|
450
522
|
},
|
|
451
523
|
markCommandResult(result) {
|
|
452
|
-
latestOutcome = result.outcome ?? latestOutcome;
|
|
453
|
-
latestErrorClass = resolveErrorClass(result.errorClass, latestErrorClass, classifyOutcomeStatus(latestOutcome));
|
|
454
524
|
const durationMs = Date.now() - startedAt;
|
|
525
|
+
latestOutcomeRaw = result.outcome ?? latestOutcomeRaw;
|
|
526
|
+
// If a collection run was started but never terminated, close it here.
|
|
527
|
+
// If the CLI exited with a non-zero code, record collection_failed;
|
|
528
|
+
// otherwise let the lifecycle's own terminal stand.
|
|
529
|
+
if (collectionRunId && collectionSource) {
|
|
530
|
+
const hasCollectionTerminal = events.some((e) => e.correlation.scope === "collection" &&
|
|
531
|
+
e.correlation.collectionRunId === collectionRunId &&
|
|
532
|
+
e.kind.lifecycle === "collection" &&
|
|
533
|
+
e.kind.phase === "terminal");
|
|
534
|
+
if (!hasCollectionTerminal) {
|
|
535
|
+
if (result.exitCode === 0) {
|
|
536
|
+
push(factory.build({
|
|
537
|
+
correlation: {
|
|
538
|
+
scope: "collection",
|
|
539
|
+
hostRunId,
|
|
540
|
+
collectionRunId,
|
|
541
|
+
source: collectionSource,
|
|
542
|
+
},
|
|
543
|
+
kind: {
|
|
544
|
+
lifecycle: "collection",
|
|
545
|
+
phase: "terminal",
|
|
546
|
+
outcome: "success",
|
|
547
|
+
},
|
|
548
|
+
}));
|
|
549
|
+
}
|
|
550
|
+
else {
|
|
551
|
+
push(factory.build({
|
|
552
|
+
correlation: {
|
|
553
|
+
scope: "collection",
|
|
554
|
+
hostRunId,
|
|
555
|
+
collectionRunId,
|
|
556
|
+
source: collectionSource,
|
|
557
|
+
},
|
|
558
|
+
kind: {
|
|
559
|
+
lifecycle: "collection",
|
|
560
|
+
phase: "terminal",
|
|
561
|
+
outcome: "failure",
|
|
562
|
+
errorClass: classifyCanonicalError(result.errorClass ?? latestOutcomeRaw),
|
|
563
|
+
},
|
|
564
|
+
}));
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
// Host terminal.
|
|
455
569
|
if (result.exitCode === 0) {
|
|
456
|
-
push(
|
|
570
|
+
push(factory.build({
|
|
571
|
+
correlation: { scope: "host", hostRunId },
|
|
572
|
+
kind: { lifecycle: "host", phase: "terminal", outcome: "success" },
|
|
457
573
|
durationMs,
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
574
|
+
}));
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
push(factory.build({
|
|
578
|
+
correlation: { scope: "host", hostRunId },
|
|
579
|
+
kind: {
|
|
580
|
+
lifecycle: "host",
|
|
581
|
+
phase: "terminal",
|
|
582
|
+
outcome: "failure",
|
|
583
|
+
errorClass: classifyCanonicalError(result.errorClass ?? latestOutcomeRaw),
|
|
584
|
+
},
|
|
585
|
+
durationMs,
|
|
586
|
+
}));
|
|
462
587
|
}
|
|
463
|
-
push("command_failed", {
|
|
464
|
-
durationMs,
|
|
465
|
-
outcome: latestOutcome,
|
|
466
|
-
errorClass: latestErrorClass ?? "unknown",
|
|
467
|
-
});
|
|
468
588
|
},
|
|
469
589
|
async persist() {
|
|
470
|
-
if (persisted)
|
|
590
|
+
if (persisted)
|
|
471
591
|
return;
|
|
472
|
-
}
|
|
473
592
|
persisted = true;
|
|
474
593
|
if (state.mode === "debug") {
|
|
475
|
-
for (const envelope of splitIntoEnvelopes(events
|
|
594
|
+
for (const envelope of splitIntoEnvelopes(events)) {
|
|
476
595
|
process.stderr.write(`${JSON.stringify(envelope)}\n`);
|
|
477
596
|
}
|
|
478
597
|
return;
|
|
479
598
|
}
|
|
480
|
-
if (!state.enabled)
|
|
599
|
+
if (!state.enabled)
|
|
481
600
|
return;
|
|
482
|
-
|
|
483
|
-
const envelopes = splitIntoEnvelopes(events, context.cliVersion);
|
|
484
|
-
const runId = events[0]?.runId ?? randomId("run");
|
|
601
|
+
const envelopes = splitIntoEnvelopes(events);
|
|
485
602
|
for (const envelope of envelopes) {
|
|
486
|
-
await writeEnvelope(envelope,
|
|
603
|
+
await writeEnvelope(envelope, hostRunId);
|
|
487
604
|
}
|
|
488
605
|
},
|
|
606
|
+
trackCustomEvent() {
|
|
607
|
+
// No-op. See the CliTelemetrySession interface doc.
|
|
608
|
+
},
|
|
489
609
|
async flush() {
|
|
490
610
|
await flushTelemetryOutbox();
|
|
491
611
|
},
|
|
492
612
|
};
|
|
493
613
|
}
|
|
614
|
+
// ── Deprecated ──────────────────────────────────────────────────────────────
|
|
615
|
+
/** @deprecated trackCustomEvent on the session is a no-op in the canonical
|
|
616
|
+
* model. This top-level helper is also a no-op — kept only to satisfy
|
|
617
|
+
* existing call sites. */
|
|
618
|
+
export function trackActiveTelemetryEvent(_eventName, _patch) {
|
|
619
|
+
/* intentionally blank */
|
|
620
|
+
}
|
|
494
621
|
//# sourceMappingURL=telemetry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"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"}
|