@legioncodeinc/hive 0.3.0 → 0.4.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.
Files changed (94) hide show
  1. package/README.md +1 -1
  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 +12 -12
  27. package/dist/daemon/installer/bin-resolver.js +22 -1
  28. package/dist/daemon/installer/bin-resolver.js.map +1 -1
  29. package/dist/daemon/installer/config.d.ts +2 -0
  30. package/dist/daemon/installer/config.js +5 -3
  31. package/dist/daemon/installer/config.js.map +1 -1
  32. package/dist/daemon/installer/install-state.d.ts +6 -0
  33. package/dist/daemon/installer/install-state.js +18 -1
  34. package/dist/daemon/installer/install-state.js.map +1 -1
  35. package/dist/daemon/installer/spawn.d.ts +1 -0
  36. package/dist/daemon/installer/spawn.js +13 -1
  37. package/dist/daemon/installer/spawn.js.map +1 -1
  38. package/dist/daemon/installer/token.d.ts +8 -7
  39. package/dist/daemon/installer/token.js +40 -18
  40. package/dist/daemon/installer/token.js.map +1 -1
  41. package/dist/daemon/registry.d.ts +6 -0
  42. package/dist/daemon/registry.js +15 -17
  43. package/dist/daemon/registry.js.map +1 -1
  44. package/dist/daemon/server.d.ts +11 -0
  45. package/dist/daemon/server.js +18 -0
  46. package/dist/daemon/server.js.map +1 -1
  47. package/dist/dashboard/web/onboarding/install-card.d.ts +3 -2
  48. package/dist/dashboard/web/onboarding/install-card.js +2 -1
  49. package/dist/dashboard/web/onboarding/install-card.js.map +1 -1
  50. package/dist/dashboard/web/onboarding/onboarding-screen.d.ts +1 -1
  51. package/dist/dashboard/web/onboarding/onboarding-screen.js +34 -2
  52. package/dist/dashboard/web/onboarding/onboarding-screen.js.map +1 -1
  53. package/dist/dashboard/web/onboarding/use-install-dwell.d.ts +12 -7
  54. package/dist/dashboard/web/onboarding/use-install-dwell.js +12 -7
  55. package/dist/dashboard/web/onboarding/use-install-dwell.js.map +1 -1
  56. package/dist/dashboard/web/onboarding/use-onboarding-token.d.ts +7 -2
  57. package/dist/dashboard/web/onboarding/use-onboarding-token.js +10 -3
  58. package/dist/dashboard/web/onboarding/use-onboarding-token.js.map +1 -1
  59. package/dist/dashboard/web/pages/hive-graph.js +128 -42
  60. package/dist/dashboard/web/pages/hive-graph.js.map +1 -1
  61. package/dist/dashboard/web/wire.d.ts +91 -14
  62. package/dist/dashboard/web/wire.js +71 -0
  63. package/dist/dashboard/web/wire.js.map +1 -1
  64. package/dist/install/registry.d.ts +2 -2
  65. package/dist/install/registry.js +14 -7
  66. package/dist/install/registry.js.map +1 -1
  67. package/dist/lock.d.ts +5 -2
  68. package/dist/lock.js +36 -1
  69. package/dist/lock.js.map +1 -1
  70. package/dist/service/index.d.ts +5 -0
  71. package/dist/service/index.js +9 -1
  72. package/dist/service/index.js.map +1 -1
  73. package/dist/service/templates.d.ts +22 -3
  74. package/dist/service/templates.js +47 -10
  75. package/dist/service/templates.js.map +1 -1
  76. package/dist/shared/apiary-root.d.ts +28 -0
  77. package/dist/shared/apiary-root.js +71 -0
  78. package/dist/shared/apiary-root.js.map +1 -0
  79. package/dist/shared/constants.d.ts +0 -1
  80. package/dist/shared/constants.js +3 -5
  81. package/dist/shared/constants.js.map +1 -1
  82. package/dist/shared/legacy-paths.d.ts +22 -0
  83. package/dist/shared/legacy-paths.js +48 -0
  84. package/dist/shared/legacy-paths.js.map +1 -0
  85. package/dist/shared/registry-paths.d.ts +19 -0
  86. package/dist/shared/registry-paths.js +52 -0
  87. package/dist/shared/registry-paths.js.map +1 -0
  88. package/dist/shared/state-migration.d.ts +13 -0
  89. package/dist/shared/state-migration.js +92 -0
  90. package/dist/shared/state-migration.js.map +1 -0
  91. package/dist/telemetry/emit.d.ts +10 -10
  92. package/dist/telemetry/emit.js +12 -3
  93. package/dist/telemetry/emit.js.map +1 -1
  94. package/package.json +6 -2
@@ -53,10 +53,31 @@ export function resolvePackageBinJs(config, nodeModulesDir, packageName, binName
53
53
  * so we can run `npm prefix -g` before the prefix is known. Falls back to `require.resolve`.
54
54
  */
55
55
  export function locateNpmCliJs(config) {
56
+ // FIRST CHOICE: the npm co-located with hive's own global install. `require.resolve` walks up
57
+ // from this module (…/lib/node_modules/@legioncodeinc/hive/dist/…) into the SAME global
58
+ // node_modules tree hive was installed into, so this npm manages the SAME prefix — products land
59
+ // where the operator's PATH already finds hive. The execPath-relative candidates below are only
60
+ // layout heuristics and can pick a DIFFERENT prefix (e.g. Homebrew's bundled npm under
61
+ // libexec/ resolves `prefix -g` to the Cellar dir, silently installing products nowhere useful).
62
+ //
63
+ // npm's `exports` map exposes only `.` and `./package.json` — resolving `npm/bin/npm-cli.js`
64
+ // directly throws ERR_PACKAGE_PATH_NOT_EXPORTED — so resolve the exported package.json and
65
+ // derive the bin path from the package dir.
66
+ const npmPackageJson = config.requireResolve("npm/package.json");
67
+ if (npmPackageJson !== null) {
68
+ const viaPackage = join(dirname(npmPackageJson), "bin", "npm-cli.js");
69
+ if (config.fileExists(viaPackage))
70
+ return viaPackage;
71
+ }
56
72
  const execDir = dirname(config.execPath);
57
73
  const candidates = config.platform === "win32"
58
74
  ? [join(execDir, "node_modules", "npm", "bin", "npm-cli.js")]
59
- : [join(dirname(execDir), "lib", "node_modules", "npm", "bin", "npm-cli.js")];
75
+ : [
76
+ join(dirname(execDir), "lib", "node_modules", "npm", "bin", "npm-cli.js"),
77
+ // Homebrew node: npm ships under `libexec/`, not `lib/`, beside the Cellar-versioned
78
+ // binary (e.g. /opt/homebrew/Cellar/node/<ver>/libexec/lib/node_modules/npm).
79
+ join(dirname(execDir), "libexec", "lib", "node_modules", "npm", "bin", "npm-cli.js")
80
+ ];
60
81
  for (const candidate of candidates) {
61
82
  if (config.fileExists(candidate))
62
83
  return candidate;
@@ -1 +1 @@
1
- {"version":3,"file":"bin-resolver.js","sourceRoot":"","sources":["../../../src/daemon/installer/bin-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin-resolver.js","sourceRoot":"","sources":["../../../src/daemon/installer/bin-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,QAAyB;IAC5E,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACnG,CAAC;AAED,2EAA2E;AAC3E,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAuB,EACvB,cAAsB,EACtB,WAAmB,EACnB,OAAe;IAEf,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAElE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,8FAA8F;IAC9F,wFAAwF;IACxF,iGAAiG;IACjG,gGAAgG;IAChG,uFAAuF;IACvF,iGAAiG;IACjG,EAAE;IACF,6FAA6F;IAC7F,2FAA2F;IAC3F,4CAA4C;IAC5C,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACjE,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,KAAK,OAAO;QACzB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC,CAAC;YACE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;YACzE,qFAAqF;YACrF,8EAA8E;YAC9E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;SACrF,CAAC;IAER,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAuB;IAClE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -34,6 +34,8 @@ export interface InstallerConfig {
34
34
  readonly manifestTimeoutMs: number;
35
35
  /** The onboarding token file path (read lazily, deleted on completion). */
36
36
  readonly tokenPath: string;
37
+ /** Legacy-window onboarding token path (mg-AC-9 dual read). */
38
+ readonly legacyTokenPath: string;
37
39
  /** Existence check (a fake map in tests). */
38
40
  readonly fileExists: (path: string) => boolean;
39
41
  /** UTF-8 read returning `null` on any error (a fake map in tests). */
@@ -8,9 +8,10 @@
8
8
  */
9
9
  import { createRequire } from "node:module";
10
10
  import { existsSync, readFileSync, rmSync } from "node:fs";
11
- import { join } from "node:path";
12
11
  import { platform as osPlatform } from "node:process";
13
- import { HIVE_VERSION, HONEYCOMB_HOME_DIR } from "../../shared/constants.js";
12
+ import { HIVE_VERSION } from "../../shared/constants.js";
13
+ import { resolveOnboardingTokenPath } from "../../shared/apiary-root.js";
14
+ import { LEGACY_ONBOARDING_TOKEN_PATH } from "../../shared/legacy-paths.js";
14
15
  import { createNodeSpawn } from "./spawn.js";
15
16
  /** The primary fleet manifest URL served by the install site (MV-2). */
16
17
  export const MANIFEST_URL = "https://get.theapiary.sh/hive-release.json";
@@ -20,7 +21,7 @@ export const MANIFEST_URL = "https://get.theapiary.sh/hive-release.json";
20
21
  */
21
22
  export const MANIFEST_FALLBACK_URL = "https://raw.githubusercontent.com/legioncodeinc/the-apiary/main/hive-release.json";
22
23
  /** The bootstrap-minted one-time onboarding token file (mode 0600), read lazily per request (is-AC-9). */
23
- export const ONBOARDING_TOKEN_PATH = join(HONEYCOMB_HOME_DIR, "hive", "onboarding-token");
24
+ export const ONBOARDING_TOKEN_PATH = resolveOnboardingTokenPath();
24
25
  /** The bounded timeout for the single network manifest fetch before falling back to the snapshot. */
25
26
  export const MANIFEST_TIMEOUT_MS = 5000;
26
27
  function defaultReadTextFile(path) {
@@ -59,6 +60,7 @@ export function createInstallerConfig(overrides = {}) {
59
60
  manifestFetch: overrides.manifestFetch ?? ((input, init) => fetch(input, init)),
60
61
  manifestTimeoutMs: overrides.manifestTimeoutMs ?? MANIFEST_TIMEOUT_MS,
61
62
  tokenPath: overrides.tokenPath ?? ONBOARDING_TOKEN_PATH,
63
+ legacyTokenPath: overrides.legacyTokenPath ?? LEGACY_ONBOARDING_TOKEN_PATH,
62
64
  fileExists: overrides.fileExists ?? ((path) => existsSync(path)),
63
65
  readTextFile: overrides.readTextFile ?? defaultReadTextFile,
64
66
  deleteFile: overrides.deleteFile ?? defaultDeleteFile,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/daemon/installer/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AAE3D,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,mFAA4F,CAAC;AAE/F,0GAA0G;AAC1G,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAE1F,qGAAqG;AACrG,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAa,CAAC;AAuCjD,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,iGAAiG;IACnG,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAsC,EAAE;IAC5E,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,YAAY;QAClD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB,IAAI,qBAAqB;QAC3E,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/E,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,mBAAmB;QACrE,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,qBAAqB;QACvD,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChE,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,mBAAmB;QAC3D,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,iBAAiB;QACrD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;QAClE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,UAAU;QAC1C,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,eAAe,EAAE;QAC3C,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,qBAAqB;QACjE,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;QAC9B,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,YAAY;QAClD,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;KACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/daemon/installer/config.ts"],"names":[],"mappings":"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"}
@@ -47,4 +47,10 @@ export interface InstallStateStore {
47
47
  /** The in-flight install promise for a product (resolved when none), for test synchronization. */
48
48
  settled(product: InstallableProduct): Promise<void>;
49
49
  }
50
+ /**
51
+ * Network hardening flags for the npm install spawn. A flaky connection mid-download is the most
52
+ * common install failure (read ETIMEDOUT); npm's default retry posture is stingy, so raise it and
53
+ * let transient drops heal inside ONE attempt instead of surfacing as a failed card.
54
+ */
55
+ export declare const NPM_INSTALL_NETWORK_FLAGS: readonly ["--fetch-retries=5", "--fetch-retry-mintimeout=2000", "--fetch-retry-maxtimeout=30000", "--fetch-timeout=300000"];
50
56
  export declare function createInstallStateStore(config: InstallerConfig, hooks?: InstallStateFunnelHooks): InstallStateStore;
@@ -12,6 +12,17 @@
12
12
  */
13
13
  import { globalNodeModulesDir, locateNpmCliJs, resolvePackageBinJs } from "./bin-resolver.js";
14
14
  import { productProfile } from "./products.js";
15
+ /**
16
+ * Network hardening flags for the npm install spawn. A flaky connection mid-download is the most
17
+ * common install failure (read ETIMEDOUT); npm's default retry posture is stingy, so raise it and
18
+ * let transient drops heal inside ONE attempt instead of surfacing as a failed card.
19
+ */
20
+ export const NPM_INSTALL_NETWORK_FLAGS = [
21
+ "--fetch-retries=5",
22
+ "--fetch-retry-mintimeout=2000",
23
+ "--fetch-retry-maxtimeout=30000",
24
+ "--fetch-timeout=300000"
25
+ ];
15
26
  /** Bound a spawn's error label + exit code + stderr tail into a single truthful summary (is-AC-17). */
16
27
  function summarizeFailure(label, code, stderrTail) {
17
28
  const trimmed = stderrTail.trim();
@@ -69,7 +80,13 @@ export function createInstallStateStore(config, hooks = {}) {
69
80
  return;
70
81
  }
71
82
  setStage(state, "downloading");
72
- const npm = await config.spawn(config.execPath, [npmCli, "install", "-g", target.target]);
83
+ const npm = await config.spawn(config.execPath, [
84
+ npmCli,
85
+ "install",
86
+ "-g",
87
+ ...NPM_INSTALL_NETWORK_FLAGS,
88
+ target.target
89
+ ]);
73
90
  if (npm.code !== 0) {
74
91
  fail(state, "downloading", summarizeFailure("npm install", npm.code, npm.stderrTail), product);
75
92
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"install-state.js","sourceRoot":"","sources":["../../../src/daemon/installer/install-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-state.js","sourceRoot":"","sources":["../../../src/daemon/installer/install-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAoD/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,mBAAmB;IACnB,+BAA+B;IAC/B,gCAAgC;IAChC,wBAAwB;CAChB,CAAC;AAEX,uGAAuG;AACvG,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAmB,EAAE,UAAkB;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,GAAG,KAAK,qBAAqB,IAAI,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAuB,EACvB,QAAiC,EAAE;IAEnC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2C,CAAC;IAElE,MAAM,QAAQ,GAAG,CAAC,OAA2B,EAAuB,EAAE;QACpE,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACzG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAA0B,EAAE,KAAoB,EAAQ,EAAE;QAC3E,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,KAA0B,EAAQ,EAAE;QAC5D,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAE,KAAmB,EAAE,MAAe,EAAQ,EAAE;QAC1F,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,SAAS,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,KAA0B,EAAE,OAA2B,EAAQ,EAAE;QACjF,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC7B,KAAK,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC;QACpC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAA0B,EAAE,KAAmB,EAAE,OAAe,EAAE,OAA2B,EAAQ,EAAE;QACnH,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACjC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC9B,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,OAA2B,EAC3B,MAAqB,EACrB,KAA0B,EACX,EAAE;QACjB,0FAA0F;QAC1F,yFAAyF;QACzF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,qCAAqC,EAAE,OAAO,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC9C,MAAM;gBACN,SAAS;gBACT,IAAI;gBACJ,GAAG,yBAAyB;gBAC5B,MAAM,CAAC,MAAM;aACd,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC/F,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAE3B,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC/C,MAAM,OAAO,GACX,MAAM,KAAK,IAAI;gBACb,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACtH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,IAAI,CACF,KAAK,EACL,qBAAqB,EACrB,yBAAyB,OAAO,CAAC,OAAO,mCAAmC,EAC3E,OAAO,CACR,CAAC;gBACF,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;YACvC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACjG,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzE,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjH,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAiB,KAAK,CAAC,YAAY,KAAK,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC;YACjH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,WAAW,CAAC,OAAO;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACxF,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,MAAM;YACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,gGAAgG;YAChG,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa;gBAAE,OAAO,UAAU,CAAC;YAEtD,+DAA+D;YAC/D,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;YAC7B,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;YACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC7B,KAAK,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,SAAS,CAAC,OAAO,EAAE,UAAU;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAElC,qFAAqF;YACrF,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;YAChH,CAAC;YACD,0FAA0F;YAC1F,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9D,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;YACzB,CAAC;YAED,OAAO,GAAG,EAAE;gBACV,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,OAAO;YACb,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -39,6 +39,7 @@ export type SpawnFn = (command: string, args: readonly string[], options?: Spawn
39
39
  export type RawSpawn = (command: string, args: readonly string[], options: {
40
40
  readonly shell: false;
41
41
  readonly signal?: AbortSignal;
42
+ readonly env?: NodeJS.ProcessEnv;
42
43
  }) => ChildProcess;
43
44
  /**
44
45
  * Build the default {@link SpawnFn} over node's `child_process.spawn`, pinned to `shell: false`.
@@ -12,8 +12,20 @@
12
12
  * and no shell is ever involved.
13
13
  */
14
14
  import { spawn as nodeSpawn } from "node:child_process";
15
+ import { delimiter, dirname } from "node:path";
15
16
  /** The bounded tail we keep of each stream (is-AC-17: a bounded stderr excerpt, ~2 KB). */
16
17
  export const SPAWN_TAIL_LIMIT = 2048;
18
+ /**
19
+ * The child env: the daemon's env with the SPAWNED BINARY's directory prepended to PATH. Under a
20
+ * service manager (launchd/systemd) the daemon inherits a minimal PATH without node's bin dir,
21
+ * and npm >= 9 no longer prepends node's directory when running lifecycle scripts — so a package
22
+ * postinstall invoking plain `node` dies with `sh: node: command not found` (exit 127). The
23
+ * command here is always `process.execPath`, so prepending its dir puts the RIGHT node first.
24
+ */
25
+ function childEnv(command) {
26
+ const basePath = process.env.PATH ?? "";
27
+ return { ...process.env, PATH: `${dirname(command)}${delimiter}${basePath}` };
28
+ }
17
29
  /** Keep only the last `limit` characters of `current + chunk` so a chatty child cannot grow memory. */
18
30
  function appendTail(current, chunk, limit) {
19
31
  const next = current + chunk;
@@ -29,7 +41,7 @@ export function createNodeSpawn(rawSpawn = nodeSpawn) {
29
41
  let stdoutTail = "";
30
42
  let stderrTail = "";
31
43
  // The whole point of is-AC-6: an argv array and `shell: false`, never a shell string.
32
- const child = rawSpawn(command, [...args], { shell: false, signal: options.signal });
44
+ const child = rawSpawn(command, [...args], { shell: false, signal: options.signal, env: childEnv(command) });
33
45
  child.stdout?.on("data", (data) => {
34
46
  const chunk = String(data);
35
47
  stdoutTail = appendTail(stdoutTail, chunk, SPAWN_TAIL_LIMIT);
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/daemon/installer/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGxD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAqCrC,uGAAuG;AACvG,SAAS,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,KAAa;IAC/D,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC;IAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,WAAqB,SAAgC;IACnF,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CACrC,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,sFAAsF;QACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAErF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACxC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/daemon/installer/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE/C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAqCrC;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,OAAe;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACxC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,QAAQ,EAAE,EAAE,CAAC;AAChF,CAAC;AAED,uGAAuG;AACvG,SAAS,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,KAAa;IAC/D,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC;IAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,WAAqB,SAAgC;IACnF,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CACrC,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,sFAAsF;QACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE7G,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACxC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * PRD-009a: the daemon side of the one-time onboarding token contract (is-AC-9/10).
3
3
  *
4
- * The bootstrap mints the token and writes it to `~/.honeycomb/hive/onboarding-token` at mode
5
- * 0600 BEFORE the daemon starts (PRD-009d). The daemon reads it LAZILY at request time, not at
6
- * startup, because on re-entry the daemon may already be running when a fresh bootstrap writes a
7
- * new token. Comparison is constant time (`crypto.timingSafeEqual`). Completion invalidates the
8
- * token: the file is deleted and an in-memory flag is set, so state-changing endpoints refuse all
9
- * requests until a fresh bootstrap mints a new one (is-AC-10). The token is never logged, never
10
- * returned, and never placed in an error body.
4
+ * The bootstrap mints the token and writes it to the hive onboarding-token path at mode 0600 BEFORE
5
+ * the daemon starts (PRD-009d). During the fleet-root migration window the daemon also reads the
6
+ * legacy path when the new path is absent (mg-AC-9). The daemon reads the token LAZILY at request
7
+ * time, not at startup, because on re-entry the daemon may already be running when a fresh bootstrap
8
+ * writes a new token. Comparison is constant time (`crypto.timingSafeEqual`). Completion invalidates
9
+ * the token: whichever path served it is deleted and an in-memory flag is set, so state-changing
10
+ * endpoints refuse all requests until a fresh bootstrap mints a new one (is-AC-10). The token is
11
+ * never logged, never returned, and never placed in an error body.
11
12
  */
12
13
  import type { InstallerConfig } from "./config.js";
13
14
  /** The token gate: whether onboarding is active, whether a presented token is valid, and invalidation. */
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * PRD-009a: the daemon side of the one-time onboarding token contract (is-AC-9/10).
3
3
  *
4
- * The bootstrap mints the token and writes it to `~/.honeycomb/hive/onboarding-token` at mode
5
- * 0600 BEFORE the daemon starts (PRD-009d). The daemon reads it LAZILY at request time, not at
6
- * startup, because on re-entry the daemon may already be running when a fresh bootstrap writes a
7
- * new token. Comparison is constant time (`crypto.timingSafeEqual`). Completion invalidates the
8
- * token: the file is deleted and an in-memory flag is set, so state-changing endpoints refuse all
9
- * requests until a fresh bootstrap mints a new one (is-AC-10). The token is never logged, never
10
- * returned, and never placed in an error body.
4
+ * The bootstrap mints the token and writes it to the hive onboarding-token path at mode 0600 BEFORE
5
+ * the daemon starts (PRD-009d). During the fleet-root migration window the daemon also reads the
6
+ * legacy path when the new path is absent (mg-AC-9). The daemon reads the token LAZILY at request
7
+ * time, not at startup, because on re-entry the daemon may already be running when a fresh bootstrap
8
+ * writes a new token. Comparison is constant time (`crypto.timingSafeEqual`). Completion invalidates
9
+ * the token: whichever path served it is deleted and an in-memory flag is set, so state-changing
10
+ * endpoints refuse all requests until a fresh bootstrap mints a new one (is-AC-10). The token is
11
+ * never logged, never returned, and never placed in an error body.
11
12
  */
12
13
  import { timingSafeEqual } from "node:crypto";
13
14
  /** Constant-time string comparison. Length is compared first (timingSafeEqual requires equal length). */
@@ -21,35 +22,56 @@ function constantTimeEquals(a, b) {
21
22
  }
22
23
  return timingSafeEqual(bufA, bufB);
23
24
  }
25
+ function readTrimmed(config, path) {
26
+ const raw = config.readTextFile(path);
27
+ if (raw === null)
28
+ return null;
29
+ const trimmed = raw.trim();
30
+ return trimmed.length > 0 ? trimmed : null;
31
+ }
32
+ /**
33
+ * mg-AC-9/10: new path first, legacy path second, and the fallback is ABSENCE-triggered only.
34
+ * When the new-path file EXISTS, the legacy path is never consulted, even if the new file is
35
+ * unreadable or empty (that reads as "no valid token", never as stale legacy data).
36
+ */
37
+ function resolveTokenPathAndValue(config) {
38
+ if (config.fileExists(config.tokenPath)) {
39
+ const primary = readTrimmed(config, config.tokenPath);
40
+ return primary === null ? null : { path: config.tokenPath, value: primary };
41
+ }
42
+ const legacy = readTrimmed(config, config.legacyTokenPath);
43
+ if (legacy !== null)
44
+ return { path: config.legacyTokenPath, value: legacy };
45
+ return null;
46
+ }
24
47
  /** Build the token store over the injected config seams. */
25
48
  export function createTokenStore(config) {
26
49
  let invalidated = false;
27
- const readToken = () => {
28
- const raw = config.readTextFile(config.tokenPath);
29
- if (raw === null)
30
- return null;
31
- const trimmed = raw.trim();
32
- return trimmed.length > 0 ? trimmed : null;
33
- };
50
+ let activePath = null;
34
51
  return {
35
52
  isActive() {
36
53
  if (invalidated)
37
54
  return false;
38
- return config.fileExists(config.tokenPath);
55
+ return resolveTokenPathAndValue(config) !== null;
39
56
  },
40
57
  requireValid(provided) {
41
58
  if (invalidated)
42
59
  return false;
43
60
  if (provided === null || provided === undefined || provided.length === 0)
44
61
  return false;
45
- const stored = readToken();
46
- if (stored === null)
62
+ const resolved = resolveTokenPathAndValue(config);
63
+ if (resolved === null)
47
64
  return false;
48
- return constantTimeEquals(stored, provided);
65
+ activePath = resolved.path;
66
+ return constantTimeEquals(resolved.value, provided);
49
67
  },
50
68
  invalidate() {
51
69
  invalidated = true;
52
70
  config.deleteFile(config.tokenPath);
71
+ config.deleteFile(config.legacyTokenPath);
72
+ if (activePath !== null) {
73
+ config.deleteFile(activePath);
74
+ }
53
75
  }
54
76
  };
55
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/daemon/installer/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,yGAAyG;AACzG,SAAS,kBAAkB,CAAC,CAAS,EAAE,CAAS;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,uFAAuF;QACvF,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAYD,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,MAAuB;IACtD,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,SAAS,GAAG,GAAkB,EAAE;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ;YACN,IAAI,WAAW;gBAAE,OAAO,KAAK,CAAC;YAC9B,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,YAAY,CAAC,QAAQ;YACnB,IAAI,WAAW;gBAAE,OAAO,KAAK,CAAC;YAC9B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAClC,OAAO,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,UAAU;YACR,WAAW,GAAG,IAAI,CAAC;YACnB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/daemon/installer/token.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
1
  import { type DaemonBases, type DaemonName } from "../shared/daemon-routing.js";
2
+ /**
3
+ * Informational only: the fleet-root registry location snapshotted at module load. Readers must
4
+ * go through {@link readRegistryBody} (which applies the new-then-legacy window chain per call),
5
+ * never read this constant's path directly.
6
+ */
2
7
  export declare const DOCTOR_REGISTRY_PATH: string;
3
8
  export interface ResolveDaemonBasesOptions {
4
9
  readonly registryPath?: string;
@@ -29,3 +34,4 @@ export interface ResolveRegisteredServiceNamesOptions {
29
34
  */
30
35
  export declare function resolveRegisteredServiceNames(options?: ResolveRegisteredServiceNamesOptions): readonly string[];
31
36
  export declare function resolveDaemonBases(options?: ResolveDaemonBasesOptions): DaemonBases;
37
+ export { readRegistryBody } from "../shared/registry-paths.js";
@@ -1,9 +1,13 @@
1
- import { readFileSync } from "node:fs";
2
- import { join } from "node:path";
3
1
  import { z } from "zod";
4
- import { HONEYCOMB_HOME_DIR } from "../shared/constants.js";
2
+ import { resolveFleetRegistryPath } from "../shared/apiary-root.js";
3
+ import { readRegistryBody } from "../shared/registry-paths.js";
5
4
  import { isLoopbackBaseUrl, normalizeDaemonBases } from "../shared/daemon-routing.js";
6
- export const DOCTOR_REGISTRY_PATH = join(HONEYCOMB_HOME_DIR, "doctor.daemons.json");
5
+ /**
6
+ * Informational only: the fleet-root registry location snapshotted at module load. Readers must
7
+ * go through {@link readRegistryBody} (which applies the new-then-legacy window chain per call),
8
+ * never read this constant's path directly.
9
+ */
10
+ export const DOCTOR_REGISTRY_PATH = resolveFleetRegistryPath();
7
11
  const RegistryEntrySchema = z.object({
8
12
  name: z.string().min(1),
9
13
  healthUrl: z.string().url(),
@@ -97,24 +101,18 @@ export function parseRegisteredServiceNames(raw) {
97
101
  * shows no tiles until the fleet-status/SSE feed enumerates services some other way).
98
102
  */
99
103
  export function resolveRegisteredServiceNames(options = {}) {
100
- const registryPath = options.registryPath ?? DOCTOR_REGISTRY_PATH;
101
- const readFile = options.readFile ?? ((path) => readFileSync(path, "utf8"));
102
- try {
103
- return parseRegisteredServiceNames(readFile(registryPath));
104
- }
105
- catch {
104
+ const raw = readRegistryBody(options);
105
+ if (raw === null)
106
106
  return [];
107
- }
107
+ return parseRegisteredServiceNames(raw);
108
108
  }
109
109
  export function resolveDaemonBases(options = {}) {
110
- const registryPath = options.registryPath ?? DOCTOR_REGISTRY_PATH;
111
- const readFile = options.readFile ?? ((path) => readFileSync(path, "utf8"));
112
- try {
113
- return normalizeDaemonBases(parseDoctorRegistry(readFile(registryPath)));
114
- }
115
- catch {
110
+ const raw = readRegistryBody(options);
111
+ if (raw === null) {
116
112
  // Missing or unreadable registry means no daemon has registered yet. Use documented loopback defaults.
117
113
  return normalizeDaemonBases();
118
114
  }
115
+ return normalizeDaemonBases(parseDoctorRegistry(raw));
119
116
  }
117
+ export { readRegistryBody } from "../shared/registry-paths.js";
120
118
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/daemon/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/daemon/registry.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,17 @@ export interface CreateHiveOptions {
30
30
  export interface StartHiveOptions extends CreateHiveOptions {
31
31
  readonly lockPaths?: Partial<LockPaths>;
32
32
  readonly serveFn?: ServeFunction;
33
+ /**
34
+ * PRD-010b boot-migration seam. Defaults to the real {@link migrateHiveState}; tests MUST
35
+ * inject a no-op (or the suite-wide isolated home applies) so no test touches the real home.
36
+ */
37
+ readonly migrateState?: () => void;
38
+ /**
39
+ * rc-AC-2/mg-AC-7 registry-upsert seam, invoked AFTER the lock is acquired and the pid file is
40
+ * written (same boot, pinned ordering). Defaults to the real {@link registerHiveWithDoctor};
41
+ * tests inject a no-op or a recorder.
42
+ */
43
+ readonly registerWithDoctor?: () => void;
33
44
  }
34
45
  export interface HiveInstance {
35
46
  readonly app: Hono;
@@ -1,6 +1,8 @@
1
1
  import { serve } from "@hono/node-server";
2
2
  import { Hono } from "hono";
3
3
  import { acquireSingleInstanceLock, releaseSingleInstanceLock } from "../lock.js";
4
+ import { registerHiveWithDoctor } from "../install/registry.js";
5
+ import { migrateHiveState } from "../shared/state-migration.js";
4
6
  import { DOCTOR_STATUS_URL, HIVE_HOST, HIVE_PORT, HIVE_VERSION } from "../shared/constants.js";
5
7
  import { mountDashboardAssets, mountDashboardShellFallback, renderShell } from "./dashboard/host.js";
6
8
  import { fetchFleetStatus } from "./fleet-status.js";
@@ -98,8 +100,24 @@ export function createHive(options = {}) {
98
100
  }
99
101
  export function startHive(options = {}) {
100
102
  const serveFn = options.serveFn ?? serve;
103
+ const migrateState = options.migrateState ?? (() => {
104
+ migrateHiveState();
105
+ });
106
+ const registerWithDoctor = options.registerWithDoctor ?? (() => {
107
+ registerHiveWithDoctor();
108
+ });
109
+ migrateState();
101
110
  const hive = createHive(options);
102
111
  const lockPaths = acquireSingleInstanceLock(options.lockPaths);
112
+ // rc-AC-2/mg-AC-7 ordering: the lock is held and the new pid file is written; NOW upsert the
113
+ // registry entry naming that pid path, in the same boot. Best-effort: boot never fails when the
114
+ // registry file is mid-move.
115
+ try {
116
+ registerWithDoctor();
117
+ }
118
+ catch {
119
+ // Fail-soft by design.
120
+ }
103
121
  let server;
104
122
  try {
105
123
  server = serveFn({
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The per-product GUIDED INSTALL CARD, PRD-009b ob-AC-8/ob-AC-9/ob-AC-10/ob-AC-11/ob-AC-12. A
3
3
  * full-screen card carrying the product's logo, title, benefit copy, staged (never percent)
4
- * progress, and the npm-safety reassurance. Honors a minimum ~30s dwell on success (ob-AC-11) and
4
+ * progress, and the npm-safety reassurance. Honors a brief minimum dwell on success (ob-AC-11,
5
+ * revised: the real install time drives the pace, the dwell only prevents a flash-through) and
5
6
  * NEVER masks a failure behind that dwell (ob-AC-12), a `failed` stage renders its truthful error
6
7
  * plus a retry affordance the instant it arrives, regardless of elapsed dwell time.
7
8
  *
@@ -21,7 +22,7 @@ export interface InstallCardProps {
21
22
  readonly assetBase: string;
22
23
  /** Called once this product's install has both completed AND satisfied its minimum dwell. */
23
24
  readonly onAdvance: () => void;
24
- /** Overrides the default ~30s minimum dwell (ob-AC-11). A test injects a short window. */
25
+ /** Overrides the default brief minimum dwell (ob-AC-11, revised). A test injects a short window. */
25
26
  readonly minDwellMs?: number;
26
27
  }
27
28
  export declare function InstallCard({ product, initialDetection, client, assetBase, onAdvance, minDwellMs }: InstallCardProps): React.JSX.Element;
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * The per-product GUIDED INSTALL CARD, PRD-009b ob-AC-8/ob-AC-9/ob-AC-10/ob-AC-11/ob-AC-12. A
4
4
  * full-screen card carrying the product's logo, title, benefit copy, staged (never percent)
5
- * progress, and the npm-safety reassurance. Honors a minimum ~30s dwell on success (ob-AC-11) and
5
+ * progress, and the npm-safety reassurance. Honors a brief minimum dwell on success (ob-AC-11,
6
+ * revised: the real install time drives the pace, the dwell only prevents a flash-through) and
6
7
  * NEVER masks a failure behind that dwell (ob-AC-12), a `failed` stage renders its truthful error
7
8
  * plus a retry affordance the instant it arrives, regardless of elapsed dwell time.
8
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"install-card.js","sourceRoot":"","sources":["../../../../src/dashboard/web/onboarding/install-card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-card.js","sourceRoot":"","sources":["../../../../src/dashboard/web/onboarding/install-card.tsx"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export interface OnboardingScreenProps {
29
29
  readonly client?: OnboardingClient;
30
30
  /** Test seam: inject a fake proxied setup wire client for the login step. */
31
31
  readonly wire?: WireClient;
32
- /** Test seam: override the ~30s install dwell (ob-AC-11). */
32
+ /** Test seam: override the brief install dwell (ob-AC-11, revised). */
33
33
  readonly minDwellMs?: number;
34
34
  /** Test seam: override the health-check poll interval. */
35
35
  readonly healthPollMs?: number;