@legioncodeinc/hive 0.3.1 → 0.5.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/README.md +1 -1
- package/dist/daemon/dashboard/app.js +11 -11
- package/dist/daemon/gate.d.ts +10 -6
- package/dist/daemon/gate.js +20 -8
- package/dist/daemon/gate.js.map +1 -1
- package/dist/daemon/installer/config.d.ts +2 -0
- package/dist/daemon/installer/config.js +5 -3
- package/dist/daemon/installer/config.js.map +1 -1
- package/dist/daemon/installer/funnel-telemetry.d.ts +17 -2
- package/dist/daemon/installer/funnel-telemetry.js +34 -3
- package/dist/daemon/installer/funnel-telemetry.js.map +1 -1
- package/dist/daemon/installer/routes.js +6 -2
- package/dist/daemon/installer/routes.js.map +1 -1
- package/dist/daemon/installer/security.d.ts +9 -2
- package/dist/daemon/installer/security.js +8 -0
- package/dist/daemon/installer/security.js.map +1 -1
- package/dist/daemon/installer/token.d.ts +8 -7
- package/dist/daemon/installer/token.js +40 -18
- package/dist/daemon/installer/token.js.map +1 -1
- package/dist/daemon/registry.d.ts +6 -0
- package/dist/daemon/registry.js +15 -17
- package/dist/daemon/registry.js.map +1 -1
- package/dist/daemon/server.d.ts +14 -0
- package/dist/daemon/server.js +19 -0
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/setup-tenancy.d.ts +18 -0
- package/dist/daemon/setup-tenancy.js +37 -0
- package/dist/daemon/setup-tenancy.js.map +1 -0
- package/dist/dashboard/web/active-tenancy-display.d.ts +34 -0
- package/dist/dashboard/web/active-tenancy-display.js +84 -0
- package/dist/dashboard/web/active-tenancy-display.js.map +1 -0
- package/dist/dashboard/web/app.js +6 -2
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/onboarding/contracts.d.ts +1 -1
- package/dist/dashboard/web/onboarding/contracts.js +9 -1
- package/dist/dashboard/web/onboarding/contracts.js.map +1 -1
- package/dist/dashboard/web/onboarding/login-step.d.ts +3 -4
- package/dist/dashboard/web/onboarding/login-step.js +12 -18
- package/dist/dashboard/web/onboarding/login-step.js.map +1 -1
- package/dist/dashboard/web/onboarding/onboarding-screen.d.ts +8 -4
- package/dist/dashboard/web/onboarding/onboarding-screen.js +90 -13
- package/dist/dashboard/web/onboarding/onboarding-screen.js.map +1 -1
- package/dist/dashboard/web/onboarding/tenancy-client.d.ts +19 -0
- package/dist/dashboard/web/onboarding/tenancy-client.js +84 -0
- package/dist/dashboard/web/onboarding/tenancy-client.js.map +1 -0
- package/dist/dashboard/web/onboarding/tenancy-contracts.d.ts +119 -0
- package/dist/dashboard/web/onboarding/tenancy-contracts.js +79 -0
- package/dist/dashboard/web/onboarding/tenancy-contracts.js.map +1 -0
- package/dist/dashboard/web/onboarding/tenancy-step.d.ts +32 -0
- package/dist/dashboard/web/onboarding/tenancy-step.js +223 -0
- package/dist/dashboard/web/onboarding/tenancy-step.js.map +1 -0
- package/dist/dashboard/web/pages/hive-graph.js +138 -43
- package/dist/dashboard/web/pages/hive-graph.js.map +1 -1
- package/dist/dashboard/web/wire.d.ts +111 -14
- package/dist/dashboard/web/wire.js +105 -0
- package/dist/dashboard/web/wire.js.map +1 -1
- package/dist/install/registry.d.ts +2 -2
- package/dist/install/registry.js +14 -7
- package/dist/install/registry.js.map +1 -1
- package/dist/lock.d.ts +5 -2
- package/dist/lock.js +36 -1
- package/dist/lock.js.map +1 -1
- package/dist/service/index.d.ts +5 -0
- package/dist/service/index.js +9 -1
- package/dist/service/index.js.map +1 -1
- package/dist/service/templates.d.ts +22 -3
- package/dist/service/templates.js +47 -10
- package/dist/service/templates.js.map +1 -1
- package/dist/shared/apiary-root.d.ts +28 -0
- package/dist/shared/apiary-root.js +71 -0
- package/dist/shared/apiary-root.js.map +1 -0
- package/dist/shared/constants.d.ts +0 -1
- package/dist/shared/constants.js +3 -5
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/legacy-paths.d.ts +22 -0
- package/dist/shared/legacy-paths.js +48 -0
- package/dist/shared/legacy-paths.js.map +1 -0
- package/dist/shared/registry-paths.d.ts +19 -0
- package/dist/shared/registry-paths.js +52 -0
- package/dist/shared/registry-paths.js.map +1 -0
- package/dist/shared/state-migration.d.ts +13 -0
- package/dist/shared/state-migration.js +92 -0
- package/dist/shared/state-migration.js.map +1 -0
- package/dist/telemetry/emit.d.ts +27 -14
- package/dist/telemetry/emit.js +20 -4
- package/dist/telemetry/emit.js.map +1 -1
- package/package.json +1 -1
package/dist/telemetry/emit.d.ts
CHANGED
|
@@ -17,9 +17,8 @@
|
|
|
17
17
|
*
|
|
18
18
|
* The payload is BUILT FROM A CLOSED ALLOW-LIST: exactly `{package, version, os, arch, node}`. There
|
|
19
19
|
* is no free-form property path, so a leak is structurally impossible. `distinct_id` prefers the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* (`~/.honeycomb/hive/`, mode 0o700).
|
|
20
|
+
* fleet-root install-id, then the legacy shared install-id during the compatibility window, then a
|
|
21
|
+
* UUID persisted in hive's state dir (mode 0o700).
|
|
23
22
|
*
|
|
24
23
|
* Fail-soft everywhere: the POST is wrapped in a 2s AbortController timeout and a try/catch that
|
|
25
24
|
* swallows EVERYTHING (timeout, network error, 4xx, 5xx, ledger IO). `emitTelemetry` resolves to a
|
|
@@ -54,13 +53,11 @@ export declare const ENV_DO_NOT_TRACK: "DO_NOT_TRACK";
|
|
|
54
53
|
*/
|
|
55
54
|
export declare function isOptedOut(env?: NodeJS.ProcessEnv): boolean;
|
|
56
55
|
/**
|
|
57
|
-
* hive's own state dir
|
|
58
|
-
* `~/.honeycomb/hive/` (the staged Windows service unit lives there), so the telemetry install-id
|
|
59
|
-
* fallback and the dedupe ledger live beside it. Created lazily with mode 0o700.
|
|
56
|
+
* hive's own state dir under the fleet root (`<apiary>/hive/`). Created lazily with mode 0o700.
|
|
60
57
|
*/
|
|
61
58
|
export declare const HIVE_STATE_DIR: string;
|
|
62
59
|
/**
|
|
63
|
-
* The shared install-id written by the
|
|
60
|
+
* The fleet-root shared install-id written by the installer. When present, its contents are used as
|
|
64
61
|
* `distinct_id` so hive's lifecycle events correlate with the installer funnel.
|
|
65
62
|
*/
|
|
66
63
|
export declare const SHARED_INSTALL_ID_PATH: string;
|
|
@@ -74,8 +71,12 @@ export declare const LEDGER_FILENAME: "telemetry.json";
|
|
|
74
71
|
* path at all, so nothing else can egress.
|
|
75
72
|
*/
|
|
76
73
|
export declare const ALLOWED_PROPERTY_KEYS: readonly ["package", "version", "os", "arch", "node"];
|
|
77
|
-
/**
|
|
78
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Funnel-only property keys extending the lifecycle allow-list (PRD-009c tm-AC-4; `org_count` and
|
|
76
|
+
* `single_org_confirm` added by PRD-011a ts-AC-13 for `tenancy_selected`: a bucketed count and a
|
|
77
|
+
* flag, never an org/workspace id or name).
|
|
78
|
+
*/
|
|
79
|
+
export declare const FUNNEL_PROPERTY_KEYS: readonly ["mode", "product", "failure_stage", "org_count", "single_org_confirm"];
|
|
79
80
|
/** One allow-listed property key. */
|
|
80
81
|
export type AllowedPropertyKey = (typeof ALLOWED_PROPERTY_KEYS)[number];
|
|
81
82
|
/** One funnel-specific property key. */
|
|
@@ -96,8 +97,11 @@ export declare function buildAllowedProperties(version: string): AllowedProperti
|
|
|
96
97
|
export declare function buildTelemetryProperties(version: string, extras?: FunnelExtras): TelemetryProperties;
|
|
97
98
|
/** The four hive lifecycle events. */
|
|
98
99
|
export type HiveTelemetryEvent = "hive_installed" | "hive_uninstalled" | "hive_first_run" | "hive_updated";
|
|
99
|
-
/**
|
|
100
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Onboarding funnel events (PRD-009c, extended by PRD-011a ts-AC-13 with the tenancy milestones).
|
|
102
|
+
* Emitted daemon-side through this same chokepoint.
|
|
103
|
+
*/
|
|
104
|
+
export type OnboardingFunnelEvent = "onboarding_started" | "mode_selected" | "login_shown" | "tenancy_shown" | "tenancy_selected" | "workspace_created" | "dashboard_reached" | "product_install_started" | "product_install_completed" | "product_install_failed" | "health_check_passed" | "login_completed";
|
|
101
105
|
/** The closed event vocabulary that may egress through {@link emitTelemetry}. */
|
|
102
106
|
export type TelemetryEvent = HiveTelemetryEvent | OnboardingFunnelEvent;
|
|
103
107
|
/** Closed funnel `mode` values (tm-AC-4). */
|
|
@@ -106,11 +110,17 @@ export type FunnelMode = "standard" | "advanced";
|
|
|
106
110
|
export type FunnelProduct = "doctor" | "honeycomb" | "nectar";
|
|
107
111
|
/** Closed failure-stage discriminators on `product_install_failed` (tm-AC-4). */
|
|
108
112
|
export type FunnelFailureStage = "resolving" | "downloading" | "linking" | "registering_service";
|
|
113
|
+
/** Closed bucketed org-count values on `tenancy_selected` (PRD-011a ts-AC-13; never a raw count). */
|
|
114
|
+
export type FunnelOrgCount = "single" | "few" | "many";
|
|
115
|
+
/** Closed single-org-confirm flag on `tenancy_selected` (PRD-011a ts-AC-13). */
|
|
116
|
+
export type FunnelSingleOrgConfirm = "true" | "false";
|
|
109
117
|
/** Optional funnel extras validated before they join the allow-listed payload. */
|
|
110
118
|
export interface FunnelExtras {
|
|
111
119
|
readonly mode?: FunnelMode;
|
|
112
120
|
readonly product?: FunnelProduct;
|
|
113
121
|
readonly failure_stage?: FunnelFailureStage;
|
|
122
|
+
readonly org_count?: FunnelOrgCount;
|
|
123
|
+
readonly single_org_confirm?: FunnelSingleOrgConfirm;
|
|
114
124
|
}
|
|
115
125
|
/**
|
|
116
126
|
* The dedupe ledger persisted at `${stateDir}/telemetry.json`. `reported` maps a dedupe key (an event
|
|
@@ -130,9 +140,10 @@ export declare function loadLedger(stateDir: string): TelemetryLedger;
|
|
|
130
140
|
export declare function saveLedger(stateDir: string, ledger: TelemetryLedger): void;
|
|
131
141
|
/**
|
|
132
142
|
* Resolve the anonymized `distinct_id`, in preference order:
|
|
133
|
-
* 1. The
|
|
134
|
-
* 2.
|
|
135
|
-
* 3.
|
|
143
|
+
* 1. The fleet-root `install-id` (mg-AC-8), when present.
|
|
144
|
+
* 2. The legacy shared install-id (legacy-window read; see legacy-paths.ts), when present.
|
|
145
|
+
* 3. hive's own previously generated id at `${stateDir}/install-id`.
|
|
146
|
+
* 4. A fresh UUID, persisted best-effort at `${stateDir}/install-id` (dir mode 0o700).
|
|
136
147
|
* Never an email, account id, hostname, or path. Never throws: a persist failure still returns the
|
|
137
148
|
* generated id (that emit just will not correlate with later ones).
|
|
138
149
|
*/
|
|
@@ -167,6 +178,8 @@ export interface EmitDeps {
|
|
|
167
178
|
readonly stateDir?: string;
|
|
168
179
|
/** Override the shared install-id path (tests point this at a temp file). */
|
|
169
180
|
readonly sharedInstallIdPath?: string;
|
|
181
|
+
/** Override the legacy shared install-id path (tests point this at a temp file). */
|
|
182
|
+
readonly legacySharedInstallIdPath?: string;
|
|
170
183
|
/** The bounded POST timeout in ms (defaults to {@link DEFAULT_EMIT_TIMEOUT_MS}). */
|
|
171
184
|
readonly timeoutMs?: number;
|
|
172
185
|
/** The clock stamping ledger entries (defaults to `new Date().toISOString()`). */
|
package/dist/telemetry/emit.js
CHANGED
|
@@ -2,7 +2,9 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { arch, platform } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
-
import {
|
|
5
|
+
import { HIVE_VERSION } from "../shared/constants.js";
|
|
6
|
+
import { resolveHiveStateDir, resolveSharedInstallIdPath } from "../shared/apiary-root.js";
|
|
7
|
+
import { LEGACY_SHARED_INSTALL_ID_PATH } from "../shared/legacy-paths.js";
|
|
6
8
|
const POSTHOG_KEY = true ? "phc_wjWdFZfMRtUATshcoBRkZ3FiSMmAKEuVuP6ftraTCiPz" : "";
|
|
7
9
|
const POSTHOG_HOST = "https://us.i.posthog.com".length > 0 ? "https://us.i.posthog.com" : "https://us.i.posthog.com";
|
|
8
10
|
const POSTHOG_CAPTURE_PATH = "/i/v0/e/";
|
|
@@ -17,12 +19,12 @@ function isOptedOut(env = process.env) {
|
|
|
17
19
|
const dnt = env[ENV_DO_NOT_TRACK];
|
|
18
20
|
return dnt !== void 0 && dnt !== "" && dnt !== "0";
|
|
19
21
|
}
|
|
20
|
-
const HIVE_STATE_DIR =
|
|
21
|
-
const SHARED_INSTALL_ID_PATH =
|
|
22
|
+
const HIVE_STATE_DIR = resolveHiveStateDir();
|
|
23
|
+
const SHARED_INSTALL_ID_PATH = resolveSharedInstallIdPath();
|
|
22
24
|
const INSTALL_ID_FILENAME = "install-id";
|
|
23
25
|
const LEDGER_FILENAME = "telemetry.json";
|
|
24
26
|
const ALLOWED_PROPERTY_KEYS = ["package", "version", "os", "arch", "node"];
|
|
25
|
-
const FUNNEL_PROPERTY_KEYS = ["mode", "product", "failure_stage"];
|
|
27
|
+
const FUNNEL_PROPERTY_KEYS = ["mode", "product", "failure_stage", "org_count", "single_org_confirm"];
|
|
26
28
|
function buildAllowedProperties(version) {
|
|
27
29
|
return {
|
|
28
30
|
package: "hive",
|
|
@@ -42,6 +44,11 @@ function buildTelemetryProperties(version, extras = {}) {
|
|
|
42
44
|
if (extras.failure_stage !== void 0 && FUNNEL_FAILURE_STAGES.has(extras.failure_stage)) {
|
|
43
45
|
out.failure_stage = extras.failure_stage;
|
|
44
46
|
}
|
|
47
|
+
if (extras.org_count !== void 0 && FUNNEL_ORG_COUNTS.has(extras.org_count))
|
|
48
|
+
out.org_count = extras.org_count;
|
|
49
|
+
if (extras.single_org_confirm !== void 0 && FUNNEL_SINGLE_ORG_CONFIRMS.has(extras.single_org_confirm)) {
|
|
50
|
+
out.single_org_confirm = extras.single_org_confirm;
|
|
51
|
+
}
|
|
45
52
|
return out;
|
|
46
53
|
}
|
|
47
54
|
const FUNNEL_MODES = /* @__PURE__ */ new Set(["standard", "advanced"]);
|
|
@@ -52,6 +59,8 @@ const FUNNEL_FAILURE_STAGES = /* @__PURE__ */ new Set([
|
|
|
52
59
|
"linking",
|
|
53
60
|
"registering_service"
|
|
54
61
|
]);
|
|
62
|
+
const FUNNEL_ORG_COUNTS = /* @__PURE__ */ new Set(["single", "few", "many"]);
|
|
63
|
+
const FUNNEL_SINGLE_ORG_CONFIRMS = /* @__PURE__ */ new Set(["true", "false"]);
|
|
55
64
|
function emptyLedger() {
|
|
56
65
|
return { reported: {} };
|
|
57
66
|
}
|
|
@@ -87,6 +96,13 @@ function resolveDistinctId(deps = {}) {
|
|
|
87
96
|
return shared;
|
|
88
97
|
} catch {
|
|
89
98
|
}
|
|
99
|
+
const legacySharedPath = deps.legacySharedInstallIdPath ?? LEGACY_SHARED_INSTALL_ID_PATH;
|
|
100
|
+
try {
|
|
101
|
+
const legacyShared = readFileSync(legacySharedPath, "utf8").trim();
|
|
102
|
+
if (legacyShared.length > 0)
|
|
103
|
+
return legacyShared;
|
|
104
|
+
} catch {
|
|
105
|
+
}
|
|
90
106
|
const stateDir = deps.stateDir ?? HIVE_STATE_DIR;
|
|
91
107
|
const ownPath = join(stateDir, INSTALL_ID_FILENAME);
|
|
92
108
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/telemetry/emit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/telemetry/emit.ts"],"names":[],"mappings":"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"}
|