@indigoai-us/hq-cli 5.85.1 → 5.85.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.85.2]
6
+
7
+ ### Fixed
8
+
9
+ - Bumped the `@indigoai-us/hq-cloud` floor to ^6.14.45, which scopes the sync
10
+ watcher to paths that can actually upload. On a large HQ root the watcher had
11
+ been asking the OS to report every directory in the tree — including
12
+ `repos/`, `workspace/worktrees/`, `node_modules/` and build output that sync
13
+ never uploads — and paying a blocking stat per event before discarding it.
14
+ One observed root reported 154,489 directories where 20,308 were in scope,
15
+ with the sync runner pinned above 100% CPU in garbage collection and growing
16
+ to 1.2 GB RSS over a 12-hour run. (hq-cloud#283)
17
+
5
18
  ## [5.85.1]
6
19
 
7
20
  ### Fixed
@@ -307,7 +307,20 @@ function writeStamps(liveRoot, sessionId) {
307
307
  fs.writeFileSync(stampPath, timestamp);
308
308
  return stampPaths;
309
309
  }
310
- const CODEX_CHECKPOINT_ACCOUNT = "hassaan@getindigo.ai";
310
+ /**
311
+ * Codex Stop-gate rollout scope: every HQ user on the operator domain, rather
312
+ * than the single account that dogfooded it first. Eligibility is decided on
313
+ * the email domain alone — a candidate must have exactly one `@` and the part
314
+ * after it must equal this domain, so lookalikes never pass (`xgetindigo.ai`,
315
+ * `getindigo.ai.evil.test`, `a@b@getindigo.ai`).
316
+ */
317
+ const CODEX_CHECKPOINT_DOMAIN = "getindigo.ai";
318
+ function hasCodexCheckpointDomain(candidate) {
319
+ if (typeof candidate !== "string")
320
+ return false;
321
+ const parts = candidate.trim().toLowerCase().split("@");
322
+ return parts.length === 2 && parts[0].length > 0 && parts[1] === CODEX_CHECKPOINT_DOMAIN;
323
+ }
311
324
  function checkpointGateRuntime() {
312
325
  const runtime = (process.env.HQ_CHECKPOINT_RUNTIME ?? "claude").trim().toLowerCase();
313
326
  if (runtime === "claude" || runtime === "codex")
@@ -331,7 +344,7 @@ function gateEligibility(runtime) {
331
344
  return false;
332
345
  const claims = peekIdToken(tokens.idToken);
333
346
  const candidateEmails = [claims.email, claims["custom:delegatedEmail"]];
334
- return candidateEmails.some((candidate) => typeof candidate === "string" && candidate.toLowerCase() === CODEX_CHECKPOINT_ACCOUNT);
347
+ return candidateEmails.some(hasCodexCheckpointDomain);
335
348
  }
336
349
  catch {
337
350
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indigoai-us/hq-cli",
3
- "version": "5.85.1",
3
+ "version": "5.85.2",
4
4
  "description": "HQ by Indigo management CLI — modules and cloud sync",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -29,7 +29,7 @@
29
29
  "dependencies": {
30
30
  "@aws-sdk/client-iot-data-plane": "^3.1096.0",
31
31
  "@aws-sdk/client-s3": "^3.1049.0",
32
- "@indigoai-us/hq-cloud": "^6.14.37",
32
+ "@indigoai-us/hq-cloud": "^6.14.45",
33
33
  "@indigoai-us/hq-onboarding": "^0.1.0",
34
34
  "@sentry/node": "^10.49.0",
35
35
  "better-sqlite3": "^12.11.1",