@legioncodeinc/hive 0.2.1 → 0.3.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.
Files changed (132) hide show
  1. package/README.md +2 -2
  2. package/assets/brand/activeloop-full-mark-logo-on-dark.svg +209 -0
  3. package/assets/brand/activeloop-full-mark-logo.svg +208 -0
  4. package/assets/brand/divider-major.svg +1 -0
  5. package/assets/brand/divider-minor.svg +1 -0
  6. package/assets/brand/doctor-mark.svg +1 -0
  7. package/assets/brand/hive-mark.svg +1 -0
  8. package/assets/brand/hive-wordmark-black.svg +1 -0
  9. package/assets/brand/hive-wordmark-on-dark.svg +1 -0
  10. package/assets/brand/legion-logo-dark.svg +16 -0
  11. package/assets/brand/legion-logo-light.svg +16 -0
  12. package/assets/brand/nectar-mark.svg +1 -0
  13. package/assets/logos/fonts/Inter-Italic-VariableFont_opsz_wght.ttf +0 -0
  14. package/assets/logos/fonts/Inter-VariableFont_opsz_wght.ttf +0 -0
  15. package/assets/logos/fonts/JetBrainsMono-Bold.woff2 +0 -0
  16. package/assets/logos/fonts/JetBrainsMono-Medium.woff2 +0 -0
  17. package/assets/logos/fonts/JetBrainsMono-Regular.woff2 +0 -0
  18. package/assets/logos/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  19. package/assets/logos/honeycomb-memory-cluster.svg +17 -0
  20. package/assets/styles.css +11 -0
  21. package/assets/tokens/base.css +76 -0
  22. package/assets/tokens/colors.css +111 -0
  23. package/assets/tokens/fonts.css +32 -0
  24. package/assets/tokens/spacing.css +48 -0
  25. package/assets/tokens/typography.css +38 -0
  26. package/dist/daemon/dashboard/app.js +26 -25
  27. package/dist/daemon/dashboard/host.d.ts +7 -0
  28. package/dist/daemon/dashboard/host.js +16 -0
  29. package/dist/daemon/dashboard/host.js.map +1 -1
  30. package/dist/daemon/dashboard/web-assets.d.ts +2 -0
  31. package/dist/daemon/dashboard/web-assets.js +19 -0
  32. package/dist/daemon/dashboard/web-assets.js.map +1 -1
  33. package/dist/daemon/gate.d.ts +2 -2
  34. package/dist/daemon/gate.js +15 -4
  35. package/dist/daemon/gate.js.map +1 -1
  36. package/dist/daemon/installer/bin-resolver.d.ts +34 -0
  37. package/dist/daemon/installer/bin-resolver.js +107 -0
  38. package/dist/daemon/installer/bin-resolver.js.map +1 -0
  39. package/dist/daemon/installer/config.d.ts +63 -0
  40. package/dist/daemon/installer/config.js +74 -0
  41. package/dist/daemon/installer/config.js.map +1 -0
  42. package/dist/daemon/installer/detection.d.ts +20 -0
  43. package/dist/daemon/installer/detection.js +73 -0
  44. package/dist/daemon/installer/detection.js.map +1 -0
  45. package/dist/daemon/installer/funnel-telemetry.d.ts +54 -0
  46. package/dist/daemon/installer/funnel-telemetry.js +134 -0
  47. package/dist/daemon/installer/funnel-telemetry.js.map +1 -0
  48. package/dist/daemon/installer/index.d.ts +12 -0
  49. package/dist/daemon/installer/index.js +10 -0
  50. package/dist/daemon/installer/index.js.map +1 -0
  51. package/dist/daemon/installer/install-state.d.ts +56 -0
  52. package/dist/daemon/installer/install-state.js +159 -0
  53. package/dist/daemon/installer/install-state.js.map +1 -0
  54. package/dist/daemon/installer/manifest-snapshot.json +25 -0
  55. package/dist/daemon/installer/manifest.d.ts +47 -0
  56. package/dist/daemon/installer/manifest.js +103 -0
  57. package/dist/daemon/installer/manifest.js.map +1 -0
  58. package/dist/daemon/installer/products.d.ts +33 -0
  59. package/dist/daemon/installer/products.js +42 -0
  60. package/dist/daemon/installer/products.js.map +1 -0
  61. package/dist/daemon/installer/routes.d.ts +43 -0
  62. package/dist/daemon/installer/routes.js +201 -0
  63. package/dist/daemon/installer/routes.js.map +1 -0
  64. package/dist/daemon/installer/security.d.ts +33 -0
  65. package/dist/daemon/installer/security.js +80 -0
  66. package/dist/daemon/installer/security.js.map +1 -0
  67. package/dist/daemon/installer/spawn.d.ts +49 -0
  68. package/dist/daemon/installer/spawn.js +63 -0
  69. package/dist/daemon/installer/spawn.js.map +1 -0
  70. package/dist/daemon/installer/token.d.ts +23 -0
  71. package/dist/daemon/installer/token.js +56 -0
  72. package/dist/daemon/installer/token.js.map +1 -0
  73. package/dist/daemon/server.d.ts +6 -0
  74. package/dist/daemon/server.js +7 -0
  75. package/dist/daemon/server.js.map +1 -1
  76. package/dist/dashboard/web/app.js +42 -20
  77. package/dist/dashboard/web/app.js.map +1 -1
  78. package/dist/dashboard/web/boot-route.d.ts +11 -7
  79. package/dist/dashboard/web/boot-route.js +12 -6
  80. package/dist/dashboard/web/boot-route.js.map +1 -1
  81. package/dist/dashboard/web/main.js +2 -1
  82. package/dist/dashboard/web/main.js.map +1 -1
  83. package/dist/dashboard/web/onboarding/advanced-picker.d.ts +16 -0
  84. package/dist/dashboard/web/onboarding/advanced-picker.js +59 -0
  85. package/dist/dashboard/web/onboarding/advanced-picker.js.map +1 -0
  86. package/dist/dashboard/web/onboarding/contracts.d.ts +188 -0
  87. package/dist/dashboard/web/onboarding/contracts.js +161 -0
  88. package/dist/dashboard/web/onboarding/contracts.js.map +1 -0
  89. package/dist/dashboard/web/onboarding/health-view.d.ts +17 -0
  90. package/dist/dashboard/web/onboarding/health-view.js +79 -0
  91. package/dist/dashboard/web/onboarding/health-view.js.map +1 -0
  92. package/dist/dashboard/web/onboarding/install-card.d.ts +28 -0
  93. package/dist/dashboard/web/onboarding/install-card.js +171 -0
  94. package/dist/dashboard/web/onboarding/install-card.js.map +1 -0
  95. package/dist/dashboard/web/onboarding/login-step.d.ts +29 -0
  96. package/dist/dashboard/web/onboarding/login-step.js +104 -0
  97. package/dist/dashboard/web/onboarding/login-step.js.map +1 -0
  98. package/dist/dashboard/web/onboarding/onboarding-client.d.ts +52 -0
  99. package/dist/dashboard/web/onboarding/onboarding-client.js +133 -0
  100. package/dist/dashboard/web/onboarding/onboarding-client.js.map +1 -0
  101. package/dist/dashboard/web/onboarding/onboarding-hero.d.ts +24 -0
  102. package/dist/dashboard/web/onboarding/onboarding-hero.js +70 -0
  103. package/dist/dashboard/web/onboarding/onboarding-hero.js.map +1 -0
  104. package/dist/dashboard/web/onboarding/onboarding-screen.d.ts +43 -0
  105. package/dist/dashboard/web/onboarding/onboarding-screen.js +193 -0
  106. package/dist/dashboard/web/onboarding/onboarding-screen.js.map +1 -0
  107. package/dist/dashboard/web/onboarding/onboarding-selection-store.d.ts +20 -0
  108. package/dist/dashboard/web/onboarding/onboarding-selection-store.js +76 -0
  109. package/dist/dashboard/web/onboarding/onboarding-selection-store.js.map +1 -0
  110. package/dist/dashboard/web/onboarding/product-copy.d.ts +40 -0
  111. package/dist/dashboard/web/onboarding/product-copy.js +70 -0
  112. package/dist/dashboard/web/onboarding/product-copy.js.map +1 -0
  113. package/dist/dashboard/web/onboarding/use-install-dwell.d.ts +27 -0
  114. package/dist/dashboard/web/onboarding/use-install-dwell.js +42 -0
  115. package/dist/dashboard/web/onboarding/use-install-dwell.js.map +1 -0
  116. package/dist/dashboard/web/onboarding/use-onboarding-token.d.ts +14 -0
  117. package/dist/dashboard/web/onboarding/use-onboarding-token.js +41 -0
  118. package/dist/dashboard/web/onboarding/use-onboarding-token.js.map +1 -0
  119. package/dist/dashboard/web/route-daemon-owner.d.ts +7 -0
  120. package/dist/dashboard/web/route-daemon-owner.js +15 -0
  121. package/dist/dashboard/web/route-daemon-owner.js.map +1 -0
  122. package/dist/dashboard/web/wire.d.ts +1 -1
  123. package/dist/shared/onboarding-types.d.ts +79 -0
  124. package/dist/shared/onboarding-types.js +12 -0
  125. package/dist/shared/onboarding-types.js.map +1 -0
  126. package/dist/telemetry/emit.d.ts +30 -3
  127. package/dist/telemetry/emit.js +25 -2
  128. package/dist/telemetry/emit.js.map +1 -1
  129. package/dist/telemetry/onboarding-session-ledger.d.ts +31 -0
  130. package/dist/telemetry/onboarding-session-ledger.js +78 -0
  131. package/dist/telemetry/onboarding-session-ledger.js.map +1 -0
  132. package/package.json +6 -2
@@ -0,0 +1,7 @@
1
+ import type { DaemonName } from "../../shared/daemon-routing.js";
2
+ /**
3
+ * Resolve which workload daemon owns the active dashboard route's data plane. Used by the shell's
4
+ * per-owner connectivity gate (PRD-001c c-AC-3): only pages owned by a down daemon swap for the
5
+ * ConnectivityBanner; sibling routes keep rendering via their own fail-soft panels.
6
+ */
7
+ export declare function resolveRouteDaemonOwner(route: string): DaemonName;
@@ -0,0 +1,15 @@
1
+ /** Dashboard routes whose primary wire endpoints are owned by nectar (hive-graph proxy). */
2
+ const NECTAR_ROUTE_PREFIXES = ["/hive-graph"];
3
+ /**
4
+ * Resolve which workload daemon owns the active dashboard route's data plane. Used by the shell's
5
+ * per-owner connectivity gate (PRD-001c c-AC-3): only pages owned by a down daemon swap for the
6
+ * ConnectivityBanner; sibling routes keep rendering via their own fail-soft panels.
7
+ */
8
+ export function resolveRouteDaemonOwner(route) {
9
+ for (const prefix of NECTAR_ROUTE_PREFIXES) {
10
+ if (route === prefix || route.startsWith(`${prefix}/`))
11
+ return "nectar";
12
+ }
13
+ return "honeycomb";
14
+ }
15
+ //# sourceMappingURL=route-daemon-owner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-daemon-owner.js","sourceRoot":"","sources":["../../../src/dashboard/web/route-daemon-owner.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,qBAAqB,GAAG,CAAC,aAAa,CAAU,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACpD,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC5C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;IACzE,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC"}
@@ -1311,9 +1311,9 @@ export declare const SetupStateSchema: z.ZodObject<{
1311
1311
  hivemind: z.ZodCatch<z.ZodBoolean>;
1312
1312
  }, z.core.$strip>>;
1313
1313
  phase: z.ZodCatch<z.ZodEnum<{
1314
+ linking: "linking";
1314
1315
  installed: "installed";
1315
1316
  fresh: "fresh";
1316
- linking: "linking";
1317
1317
  linked: "linked";
1318
1318
  migrating: "migrating";
1319
1319
  migrated: "migrated";
@@ -0,0 +1,79 @@
1
+ /**
2
+ * PRD-009a: the LOCKED API contract for the `/api/onboarding/*` installer surface.
3
+ *
4
+ * These types are the single shared contract between the daemon-side installer service
5
+ * (`src/daemon/installer/`) and the onboarding UI (`src/dashboard/web/onboarding/`, owned by
6
+ * PRD-009b). The UI builds against this exact shape, so any change here is a contract change.
7
+ *
8
+ * Nothing in this module reaches persistence: the installer's only durable artifact is the
9
+ * one-time onboarding token file, and even that is out of band from these wire types.
10
+ */
11
+ import type { FleetStatusResponse } from "./fleet-readiness.js";
12
+ /** The four fleet product slugs (is-AC-3). The install allowlist is derived from this closed set. */
13
+ export type ProductSlug = "honeycomb" | "doctor" | "hive" | "nectar";
14
+ /**
15
+ * The three installable-via-portal products. `hive` is intentionally excluded: it is the daemon
16
+ * serving this very endpoint, so it is never a portal install target (a request for it is a 400).
17
+ */
18
+ export type InstallableProduct = "doctor" | "honeycomb" | "nectar";
19
+ /** The closed set of install stages streamed over SSE (is-AC-11). Never a percentage (is-AC-12). */
20
+ export type InstallStage = "resolving" | "downloading" | "linking" | "registering_service" | "completed" | "failed";
21
+ /** The closed detection state set for a product (is-AC-2). */
22
+ export type ProductDetectionState = "not_installed" | "installed" | "install_in_progress" | "install_failed";
23
+ /** A bounded, truthful failure record: the stage it failed at plus a summary (is-AC-17). */
24
+ export interface InstallError {
25
+ readonly stage: InstallStage;
26
+ readonly summary: string;
27
+ }
28
+ /** One product's detection result: its state, the installed version when known, and any last error. */
29
+ export interface ProductDetection {
30
+ readonly state: ProductDetectionState;
31
+ readonly version?: string;
32
+ readonly error?: InstallError;
33
+ }
34
+ /** `GET /api/onboarding/detect` -> the per-product detection map (is-AC-1/2). */
35
+ export interface DetectResponse {
36
+ readonly products: Record<ProductSlug, ProductDetection>;
37
+ }
38
+ /** `POST /api/onboarding/install` body. Only the product slug crosses the wire (is-AC-4). */
39
+ export interface InstallRequest {
40
+ readonly product: InstallableProduct;
41
+ }
42
+ /** `POST /api/onboarding/install` -> 202 when an install was started (or attached to). */
43
+ export interface InstallAcceptedResponse {
44
+ readonly product: InstallableProduct;
45
+ readonly state: "install_in_progress";
46
+ }
47
+ /** `POST /api/onboarding/install` -> 200 short-circuit when already installed at the pinned version (is-AC-15). */
48
+ export interface InstallShortCircuitResponse {
49
+ readonly product: InstallableProduct;
50
+ readonly state: "installed";
51
+ }
52
+ export type InstallResponse = InstallAcceptedResponse | InstallShortCircuitResponse;
53
+ /**
54
+ * `POST /api/onboarding/install` -> 409 refusal (is-AC-5). `unpublished`: the manifest marks the
55
+ * product `published:false`. `manifest_unresolved`: neither the network manifest nor the bundled
56
+ * snapshot yields a shape-valid `packageName@version`. Never a fall-through to `@latest`.
57
+ */
58
+ export interface InstallRefusalResponse {
59
+ readonly error: "unpublished" | "manifest_unresolved";
60
+ }
61
+ /** One SSE progress frame (is-AC-11). `detail` is an optional bounded human string, never a percent. */
62
+ export interface ProgressEvent {
63
+ readonly stage: InstallStage;
64
+ readonly detail?: string;
65
+ }
66
+ /** `GET /api/onboarding/health` -> the fleet readiness projection reused from fleet-status (is-AC-18). */
67
+ export interface HealthResponse {
68
+ readonly ready: boolean;
69
+ readonly status: FleetStatusResponse;
70
+ }
71
+ /**
72
+ * `POST /api/onboarding/event` body: a funnel event name plus optional flat string properties.
73
+ * The daemon validates the token and records the call; wiring it to telemetry emission is Wave 2
74
+ * (PRD-009c), so nothing is emitted here yet.
75
+ */
76
+ export interface OnboardingEventRequest {
77
+ readonly event: string;
78
+ readonly properties?: Record<string, string>;
79
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PRD-009a: the LOCKED API contract for the `/api/onboarding/*` installer surface.
3
+ *
4
+ * These types are the single shared contract between the daemon-side installer service
5
+ * (`src/daemon/installer/`) and the onboarding UI (`src/dashboard/web/onboarding/`, owned by
6
+ * PRD-009b). The UI builds against this exact shape, so any change here is a contract change.
7
+ *
8
+ * Nothing in this module reaches persistence: the installer's only durable artifact is the
9
+ * one-time onboarding token file, and even that is out of band from these wire types.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=onboarding-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-types.js","sourceRoot":"","sources":["../../src/shared/onboarding-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -74,17 +74,44 @@ export declare const LEDGER_FILENAME: "telemetry.json";
74
74
  * path at all, so nothing else can egress.
75
75
  */
76
76
  export declare const ALLOWED_PROPERTY_KEYS: readonly ["package", "version", "os", "arch", "node"];
77
+ /** Funnel-only property keys extending the lifecycle allow-list (PRD-009c tm-AC-4). */
78
+ export declare const FUNNEL_PROPERTY_KEYS: readonly ["mode", "product", "failure_stage"];
77
79
  /** One allow-listed property key. */
78
80
  export type AllowedPropertyKey = (typeof ALLOWED_PROPERTY_KEYS)[number];
81
+ /** One funnel-specific property key. */
82
+ export type FunnelPropertyKey = (typeof FUNNEL_PROPERTY_KEYS)[number];
79
83
  /** The allow-listed property bag: the EXACT shape that may leave the machine. */
80
84
  export type AllowedProperties = Record<AllowedPropertyKey, string>;
85
+ /** The full telemetry property bag: lifecycle keys plus optional closed funnel keys. */
86
+ export type TelemetryProperties = AllowedProperties & Partial<Record<FunnelPropertyKey, string>>;
81
87
  /**
82
88
  * Assemble the allow-listed payload: the package name, the build version, and coarse platform facts
83
89
  * (OS family, CPU arch, node version). Never a hostname, a path, or any machine-identifying string.
84
90
  */
85
91
  export declare function buildAllowedProperties(version: string): AllowedProperties;
86
- /** The four hive lifecycle events. This union is the whole event vocabulary of this module. */
92
+ /**
93
+ * Merge validated funnel extras into the base allow-listed payload. Unknown keys are dropped; invalid
94
+ * enum values are dropped. Lifecycle events pass no extras.
95
+ */
96
+ export declare function buildTelemetryProperties(version: string, extras?: FunnelExtras): TelemetryProperties;
97
+ /** The four hive lifecycle events. */
87
98
  export type HiveTelemetryEvent = "hive_installed" | "hive_uninstalled" | "hive_first_run" | "hive_updated";
99
+ /** Onboarding funnel events (PRD-009c). Emitted daemon-side through this same chokepoint. */
100
+ export type OnboardingFunnelEvent = "onboarding_started" | "mode_selected" | "login_shown" | "dashboard_reached" | "product_install_started" | "product_install_completed" | "product_install_failed" | "health_check_passed" | "login_completed";
101
+ /** The closed event vocabulary that may egress through {@link emitTelemetry}. */
102
+ export type TelemetryEvent = HiveTelemetryEvent | OnboardingFunnelEvent;
103
+ /** Closed funnel `mode` values (tm-AC-4). */
104
+ export type FunnelMode = "standard" | "advanced";
105
+ /** Closed funnel product slugs for install events (tm-AC-4). */
106
+ export type FunnelProduct = "doctor" | "honeycomb" | "nectar";
107
+ /** Closed failure-stage discriminators on `product_install_failed` (tm-AC-4). */
108
+ export type FunnelFailureStage = "resolving" | "downloading" | "linking" | "registering_service";
109
+ /** Optional funnel extras validated before they join the allow-listed payload. */
110
+ export interface FunnelExtras {
111
+ readonly mode?: FunnelMode;
112
+ readonly product?: FunnelProduct;
113
+ readonly failure_stage?: FunnelFailureStage;
114
+ }
88
115
  /**
89
116
  * The dedupe ledger persisted at `${stateDir}/telemetry.json`. `reported` maps a dedupe key (an event
90
117
  * name, or `event@version` for `hive_updated`) to the ISO timestamp it was sent. `lastSeenVersion`
@@ -156,7 +183,7 @@ export interface EmitOutcome {
156
183
  /** When `sent` is false, why. Absent when `sent` is true. */
157
184
  readonly skipped?: EmitSkipReason;
158
185
  /** The allow-listed payload that was built (present whether or not it was sent). */
159
- readonly properties: AllowedProperties;
186
+ readonly properties: TelemetryProperties;
160
187
  }
161
188
  /** The per-emit options. */
162
189
  export interface EmitOptions {
@@ -173,7 +200,7 @@ export interface EmitOptions {
173
200
  * 2xx the dedupe key (when supplied) is recorded in the ledger. NEVER throws and NEVER changes a CLI
174
201
  * verb's exit code: it resolves an {@link EmitOutcome} the caller may inspect or ignore.
175
202
  */
176
- export declare function emitTelemetry(event: HiveTelemetryEvent, opts?: EmitOptions, deps?: EmitDeps): Promise<EmitOutcome>;
203
+ export declare function emitTelemetry(event: TelemetryEvent, opts?: EmitOptions, deps?: EmitDeps, extras?: FunnelExtras): Promise<EmitOutcome>;
177
204
  /** Emit `hive_installed` after a successful `install-service`. Deduped once per machine. */
178
205
  export declare function emitInstalled(deps?: EmitDeps): Promise<EmitOutcome>;
179
206
  /**
@@ -22,6 +22,7 @@ const SHARED_INSTALL_ID_PATH = join(HONEYCOMB_HOME_DIR, "install-id");
22
22
  const INSTALL_ID_FILENAME = "install-id";
23
23
  const LEDGER_FILENAME = "telemetry.json";
24
24
  const ALLOWED_PROPERTY_KEYS = ["package", "version", "os", "arch", "node"];
25
+ const FUNNEL_PROPERTY_KEYS = ["mode", "product", "failure_stage"];
25
26
  function buildAllowedProperties(version) {
26
27
  return {
27
28
  package: "hive",
@@ -31,6 +32,26 @@ function buildAllowedProperties(version) {
31
32
  node: process.version
32
33
  };
33
34
  }
35
+ function buildTelemetryProperties(version, extras = {}) {
36
+ const base = buildAllowedProperties(version);
37
+ const out = { ...base };
38
+ if (extras.mode !== void 0 && FUNNEL_MODES.has(extras.mode))
39
+ out.mode = extras.mode;
40
+ if (extras.product !== void 0 && FUNNEL_PRODUCTS.has(extras.product))
41
+ out.product = extras.product;
42
+ if (extras.failure_stage !== void 0 && FUNNEL_FAILURE_STAGES.has(extras.failure_stage)) {
43
+ out.failure_stage = extras.failure_stage;
44
+ }
45
+ return out;
46
+ }
47
+ const FUNNEL_MODES = /* @__PURE__ */ new Set(["standard", "advanced"]);
48
+ const FUNNEL_PRODUCTS = /* @__PURE__ */ new Set(["doctor", "honeycomb", "nectar"]);
49
+ const FUNNEL_FAILURE_STAGES = /* @__PURE__ */ new Set([
50
+ "resolving",
51
+ "downloading",
52
+ "linking",
53
+ "registering_service"
54
+ ]);
34
55
  function emptyLedger() {
35
56
  return { reported: {} };
36
57
  }
@@ -84,11 +105,11 @@ function resolveDistinctId(deps = {}) {
84
105
  return generated;
85
106
  }
86
107
  const DEFAULT_EMIT_TIMEOUT_MS = 2e3;
87
- async function emitTelemetry(event, opts = {}, deps = {}) {
108
+ async function emitTelemetry(event, opts = {}, deps = {}, extras = {}) {
88
109
  const env = deps.env ?? process.env;
89
110
  const key = deps.posthogKey ?? POSTHOG_KEY;
90
111
  const version = deps.version ?? HIVE_VERSION;
91
- const properties = buildAllowedProperties(version);
112
+ const properties = buildTelemetryProperties(version, extras);
92
113
  if (key.length === 0)
93
114
  return { sent: false, skipped: "disabled", properties };
94
115
  if (isOptedOut(env))
@@ -176,6 +197,7 @@ export {
176
197
  DEFAULT_EMIT_TIMEOUT_MS,
177
198
  ENV_DO_NOT_TRACK,
178
199
  ENV_TELEMETRY,
200
+ FUNNEL_PROPERTY_KEYS,
179
201
  HIVE_STATE_DIR,
180
202
  INSTALL_ID_FILENAME,
181
203
  LEDGER_FILENAME,
@@ -184,6 +206,7 @@ export {
184
206
  POSTHOG_KEY,
185
207
  SHARED_INSTALL_ID_PATH,
186
208
  buildAllowedProperties,
209
+ buildTelemetryProperties,
187
210
  captureUrl,
188
211
  emitInstalled,
189
212
  emitTelemetry,
@@ -1 +1 @@
1
- {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/telemetry/emit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/telemetry/emit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * PRD-009c tm-AC-2: per-onboarding-session dedupe ledger.
3
+ *
4
+ * Once-per-session funnel milestones (`onboarding_started`, `health_check_passed`,
5
+ * `login_completed`, `dashboard_reached`) are recorded here, keyed by a SHA-256 digest of the
6
+ * one-time onboarding token. The token itself is never written to disk or emitted; only the digest
7
+ * scopes dedupe within a session.
8
+ */
9
+ /** Filename of the session-scoped funnel dedupe ledger under {@link HIVE_STATE_DIR}. */
10
+ export declare const ONBOARDING_LEDGER_FILENAME: "onboarding-telemetry.json";
11
+ /** Events that emit at most once per onboarding session (tm-AC-2). */
12
+ export declare const SESSION_ONCE_EVENTS: readonly ["onboarding_started", "health_check_passed", "login_completed", "dashboard_reached"];
13
+ export type SessionOnceEvent = (typeof SESSION_ONCE_EVENTS)[number];
14
+ export interface OnboardingSessionLedger {
15
+ readonly sessions: Record<string, {
16
+ readonly reported: Record<string, string>;
17
+ }>;
18
+ }
19
+ /** Derive a session key from the raw token without persisting or logging the token (tm-AC-5). */
20
+ export declare function sessionKeyFromToken(token: string): string;
21
+ /** Load the onboarding session ledger. Any IO or parse problem yields an empty ledger (fail-soft). */
22
+ export declare function loadOnboardingLedger(stateDir: string): OnboardingSessionLedger;
23
+ /** True when `event` was already reported for this session digest. */
24
+ export declare function isSessionEventReported(ledger: OnboardingSessionLedger, sessionKey: string, event: SessionOnceEvent): boolean;
25
+ /**
26
+ * Record a session-scoped dedupe mark after a successful send. Reloads before write so concurrent
27
+ * marks are not clobbered. Throws on IO failure; callers wrap in fail-soft try/catch.
28
+ */
29
+ export declare function markSessionEventReported(stateDir: string, sessionKey: string, event: SessionOnceEvent, clock: () => string): void;
30
+ /** Default state dir when tests do not inject one. */
31
+ export declare const DEFAULT_ONBOARDING_LEDGER_DIR: string;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * PRD-009c tm-AC-2: per-onboarding-session dedupe ledger.
3
+ *
4
+ * Once-per-session funnel milestones (`onboarding_started`, `health_check_passed`,
5
+ * `login_completed`, `dashboard_reached`) are recorded here, keyed by a SHA-256 digest of the
6
+ * one-time onboarding token. The token itself is never written to disk or emitted; only the digest
7
+ * scopes dedupe within a session.
8
+ */
9
+ import { createHash } from "node:crypto";
10
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
11
+ import { join } from "node:path";
12
+ import { HIVE_STATE_DIR } from "./emit.js";
13
+ /** Filename of the session-scoped funnel dedupe ledger under {@link HIVE_STATE_DIR}. */
14
+ export const ONBOARDING_LEDGER_FILENAME = "onboarding-telemetry.json";
15
+ /** Events that emit at most once per onboarding session (tm-AC-2). */
16
+ export const SESSION_ONCE_EVENTS = [
17
+ "onboarding_started",
18
+ "health_check_passed",
19
+ "login_completed",
20
+ "dashboard_reached"
21
+ ];
22
+ function emptyLedger() {
23
+ return { sessions: {} };
24
+ }
25
+ /** Derive a session key from the raw token without persisting or logging the token (tm-AC-5). */
26
+ export function sessionKeyFromToken(token) {
27
+ return createHash("sha256").update(token, "utf8").digest("hex");
28
+ }
29
+ /** Load the onboarding session ledger. Any IO or parse problem yields an empty ledger (fail-soft). */
30
+ export function loadOnboardingLedger(stateDir) {
31
+ try {
32
+ const raw = JSON.parse(readFileSync(join(stateDir, ONBOARDING_LEDGER_FILENAME), "utf8"));
33
+ if (typeof raw !== "object" || raw === null)
34
+ return emptyLedger();
35
+ const record = raw;
36
+ const sessions = {};
37
+ if (typeof record["sessions"] === "object" && record["sessions"] !== null) {
38
+ for (const [sessionKey, bucket] of Object.entries(record["sessions"])) {
39
+ if (typeof bucket !== "object" || bucket === null)
40
+ continue;
41
+ const reported = {};
42
+ const reportedRaw = bucket["reported"];
43
+ if (typeof reportedRaw === "object" && reportedRaw !== null) {
44
+ for (const [eventKey, ts] of Object.entries(reportedRaw)) {
45
+ if (typeof ts === "string")
46
+ reported[eventKey] = ts;
47
+ }
48
+ }
49
+ sessions[sessionKey] = { reported };
50
+ }
51
+ }
52
+ return { sessions };
53
+ }
54
+ catch {
55
+ return emptyLedger();
56
+ }
57
+ }
58
+ /** True when `event` was already reported for this session digest. */
59
+ export function isSessionEventReported(ledger, sessionKey, event) {
60
+ return ledger.sessions[sessionKey]?.reported[event] !== undefined;
61
+ }
62
+ /**
63
+ * Record a session-scoped dedupe mark after a successful send. Reloads before write so concurrent
64
+ * marks are not clobbered. Throws on IO failure; callers wrap in fail-soft try/catch.
65
+ */
66
+ export function markSessionEventReported(stateDir, sessionKey, event, clock) {
67
+ mkdirSync(stateDir, { recursive: true, mode: 0o700 });
68
+ const fresh = loadOnboardingLedger(stateDir);
69
+ const prior = fresh.sessions[sessionKey]?.reported ?? {};
70
+ const sessions = {
71
+ ...fresh.sessions,
72
+ [sessionKey]: { reported: { ...prior, [event]: clock() } }
73
+ };
74
+ writeFileSync(join(stateDir, ONBOARDING_LEDGER_FILENAME), `${JSON.stringify({ sessions }, null, 2)}\n`, "utf8");
75
+ }
76
+ /** Default state dir when tests do not inject one. */
77
+ export const DEFAULT_ONBOARDING_LEDGER_DIR = HIVE_STATE_DIR;
78
+ //# sourceMappingURL=onboarding-session-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-session-ledger.js","sourceRoot":"","sources":["../../src/telemetry/onboarding-session-ledger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@legioncodeinc/hive",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "Hive portal daemon",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "type": "module",
@@ -21,7 +21,11 @@
21
21
  "hive": "dist/cli.js"
22
22
  },
23
23
  "files": [
24
- "dist"
24
+ "dist",
25
+ "assets/styles.css",
26
+ "assets/tokens",
27
+ "assets/logos",
28
+ "assets/brand"
25
29
  ],
26
30
  "scripts": {
27
31
  "build": "tsc && node esbuild.config.mjs",