@indigoai-us/hq-cloud 6.18.96 → 6.18.98

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 (66) hide show
  1. package/dist/bin/sync-runner-company.d.ts.map +1 -1
  2. package/dist/bin/sync-runner-company.js +7 -0
  3. package/dist/bin/sync-runner-company.js.map +1 -1
  4. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  5. package/dist/bin/sync-runner-watch-loop.js +50 -3
  6. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  7. package/dist/bin/sync-runner.d.ts +3 -0
  8. package/dist/bin/sync-runner.d.ts.map +1 -1
  9. package/dist/bin/sync-runner.js +1 -0
  10. package/dist/bin/sync-runner.js.map +1 -1
  11. package/dist/cli/rescue-core.d.ts +3 -2
  12. package/dist/cli/rescue-core.d.ts.map +1 -1
  13. package/dist/cli/rescue-core.js +144 -21
  14. package/dist/cli/rescue-core.js.map +1 -1
  15. package/dist/cli/rescue.d.ts +1 -1
  16. package/dist/cli/rescue.d.ts.map +1 -1
  17. package/dist/cli/rescue.js +4 -9
  18. package/dist/cli/rescue.js.map +1 -1
  19. package/dist/cli/share.d.ts +5 -0
  20. package/dist/cli/share.d.ts.map +1 -1
  21. package/dist/cli/share.js +120 -15
  22. package/dist/cli/share.js.map +1 -1
  23. package/dist/cli/sync.d.ts +18 -2
  24. package/dist/cli/sync.d.ts.map +1 -1
  25. package/dist/cli/sync.js +55 -4
  26. package/dist/cli/sync.js.map +1 -1
  27. package/dist/index.d.ts +2 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/object-io.d.ts +2 -3
  32. package/dist/object-io.d.ts.map +1 -1
  33. package/dist/object-io.js +15 -4
  34. package/dist/object-io.js.map +1 -1
  35. package/dist/plan-limit-pause.d.ts +19 -3
  36. package/dist/plan-limit-pause.d.ts.map +1 -1
  37. package/dist/plan-limit-pause.js +80 -10
  38. package/dist/plan-limit-pause.js.map +1 -1
  39. package/dist/plan-limit.d.ts +51 -5
  40. package/dist/plan-limit.d.ts.map +1 -1
  41. package/dist/plan-limit.js +79 -5
  42. package/dist/plan-limit.js.map +1 -1
  43. package/dist/s3.d.ts +2 -0
  44. package/dist/s3.d.ts.map +1 -1
  45. package/dist/s3.js +4 -2
  46. package/dist/s3.js.map +1 -1
  47. package/dist/sync-object-events.d.ts +61 -0
  48. package/dist/sync-object-events.d.ts.map +1 -0
  49. package/dist/sync-object-events.js +138 -0
  50. package/dist/sync-object-events.js.map +1 -0
  51. package/dist/sync-pass-event.d.ts +45 -0
  52. package/dist/sync-pass-event.d.ts.map +1 -0
  53. package/dist/sync-pass-event.js +102 -0
  54. package/dist/sync-pass-event.js.map +1 -0
  55. package/dist/sync-request-counter.d.ts +13 -0
  56. package/dist/sync-request-counter.d.ts.map +1 -0
  57. package/dist/sync-request-counter.js +29 -0
  58. package/dist/sync-request-counter.js.map +1 -0
  59. package/dist/test-fixtures/noop-sync-object-events.d.ts +6 -0
  60. package/dist/test-fixtures/noop-sync-object-events.d.ts.map +1 -0
  61. package/dist/test-fixtures/noop-sync-object-events.js +22 -0
  62. package/dist/test-fixtures/noop-sync-object-events.js.map +1 -0
  63. package/dist/vault-client.d.ts.map +1 -1
  64. package/dist/vault-client.js +4 -0
  65. package/dist/vault-client.js.map +1 -1
  66. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rescue-core.d.ts","sourceRoot":"","sources":["../../src/cli/rescue-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rescue-core.d.ts","sourceRoot":"","sources":["../../src/cli/rescue-core.ts"],"names":[],"mappings":"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"}
@@ -2220,6 +2220,25 @@ function recoveryProof(unresolved, cfg, hqRoot, srcDir, srcSha, rsyncLauncher, r
2220
2220
  }
2221
2221
  return { eligible: !hasSkippedSnapshotEntries(newest.entry.manifest), failures };
2222
2222
  }
2223
+ function assertClaudeSettingsAdmission(hqRoot, err) {
2224
+ const parent = path.join(hqRoot, ".claude");
2225
+ for (const candidate of [parent, path.join(parent, "settings.local.json")]) {
2226
+ let entry;
2227
+ try {
2228
+ entry = fs.lstatSync(candidate);
2229
+ }
2230
+ catch (error) {
2231
+ if (error.code === "ENOENT")
2232
+ continue;
2233
+ err("error: cannot inspect Claude settings safely; rescue stopped before modifying the install.\n");
2234
+ throw new ExitError(1);
2235
+ }
2236
+ if (candidate === parent && (entry.isSymbolicLink() || !entry.isDirectory())) {
2237
+ err("error: .claude must be a real directory; rescue stopped before modifying the install.\n");
2238
+ throw new ExitError(1);
2239
+ }
2240
+ }
2241
+ }
2223
2242
  function doRescue(cfg, env, out, err, setTmp, retainTmp, gitReachabilityProbeTimeoutMs = GIT_REACHABILITY_PROBE_TIMEOUT_MS, stampWriter = writeCoreSourceStamp, restoreOnRsyncFailure = false, setupPathSettingsLocal = false, backupCapacityStatfsSync = fs.statfsSync, backupCapacityCloneProbe, backupCapacityStatSync = fs.statSync, pathSep = path.sep, snapshotClonePlatform = process.platform, snapshotCloneRunner = runDarwinClone) {
2224
2243
  const hqRoot = resolveHqRoot(cfg, err);
2225
2244
  const RUN_TS = utcStamp(new Date(), "dash");
@@ -2236,6 +2255,9 @@ function doRescue(cfg, env, out, err, setTmp, retainTmp, gitReachabilityProbeTim
2236
2255
  const claudeSettingsInScope = cfg.narrowPaths.length === 0 || cfg.narrowPaths.includes(".claude");
2237
2256
  let preRescueSettingsJson = null;
2238
2257
  if (claudeSettingsInScope) {
2258
+ // Refuse an unsafe parent or unreadable metadata BEFORE capturing settings,
2259
+ // allocating a snapshot, classifying mutations or overlaying release files.
2260
+ assertClaudeSettingsAdmission(hqRoot, err);
2239
2261
  const p = path.join(hqRoot, claudeSettingsRel);
2240
2262
  if (isFileFollow(p)) {
2241
2263
  try {
@@ -3972,13 +3994,94 @@ function settingsExplicitlyPreserved(preserveSubpaths) {
3972
3994
  }
3973
3995
  return false;
3974
3996
  }
3997
+ // Publish settings only after a complete same-directory write. A failed write
3998
+ // must leave the previous local keys (and their permissions) intact.
3999
+ function writeSettingsAtomically(target, contents) {
4000
+ let mode = 0o600;
4001
+ try {
4002
+ const existing = fs.statSync(target);
4003
+ if (!existing.isFile())
4004
+ throw new Error("settings target is not a file");
4005
+ fs.accessSync(target, fs.constants.W_OK);
4006
+ mode = existing.mode & 0o777;
4007
+ }
4008
+ catch (error) {
4009
+ if (error.code !== "ENOENT")
4010
+ throw error;
4011
+ }
4012
+ // Reuse the internal-state prefix already excluded by older sync consumers.
4013
+ // A new suffix alone would upload local settings before those clients update.
4014
+ const temporary = path.join(path.dirname(target), `.hq-${path.basename(target)}.${process.pid}.${crypto.randomUUID()}.tmp`);
4015
+ let descriptor;
4016
+ let created = false;
4017
+ let failed = false;
4018
+ let failure;
4019
+ try {
4020
+ descriptor = fs.openSync(temporary, "wx", 0o600);
4021
+ created = true;
4022
+ fs.writeFileSync(descriptor, contents, "utf8");
4023
+ fs.fchmodSync(descriptor, mode);
4024
+ fs.fsyncSync(descriptor);
4025
+ fs.closeSync(descriptor);
4026
+ descriptor = undefined;
4027
+ fs.renameSync(temporary, target);
4028
+ }
4029
+ catch (error) {
4030
+ failed = true;
4031
+ failure = error;
4032
+ }
4033
+ try {
4034
+ if (descriptor !== undefined)
4035
+ fs.closeSync(descriptor);
4036
+ }
4037
+ catch (error) {
4038
+ if (!failed) {
4039
+ failed = true;
4040
+ failure = error;
4041
+ }
4042
+ }
4043
+ if (created) {
4044
+ try {
4045
+ fs.unlinkSync(temporary);
4046
+ }
4047
+ catch (error) {
4048
+ if (error.code !== "ENOENT" && !failed) {
4049
+ failed = true;
4050
+ failure = error;
4051
+ }
4052
+ }
4053
+ }
4054
+ if (failed)
4055
+ throw failure;
4056
+ }
4057
+ function restorePreRescueSettingsJson(settingsPath, prior, err) {
4058
+ if (prior === null)
4059
+ return true;
4060
+ try {
4061
+ let current;
4062
+ try {
4063
+ current = fs.readFileSync(settingsPath, "utf8");
4064
+ }
4065
+ catch (error) {
4066
+ if (error.code !== "ENOENT")
4067
+ throw error;
4068
+ }
4069
+ if (current !== prior)
4070
+ writeSettingsAtomically(settingsPath, prior);
4071
+ return true;
4072
+ }
4073
+ catch {
4074
+ err(" WARN: could not restore pre-rescue .claude/settings.json after a failed drift relocation\n");
4075
+ return false;
4076
+ }
4077
+ }
3975
4078
  /**
3976
4079
  * Post-overlay reconcile for the machine-local, generated `.claude/settings.json`.
3977
4080
  *
3978
4081
  * At entry the overlay has already re-laid the release template (theirs) over
3979
4082
  * settings.json, and the user's settings.local.json has been restored from the
3980
4083
  * preserve shuttle. This function:
3981
- * 1. composes env.PATH into the flag-selected settings file (machine-specific), and
4084
+ * 1. composes machine-specific env.PATH into settings.local.json, and
3982
4085
  * 2. extracts ours's drift versus the last-sync floor (base) — excluding
3983
4086
  * env.PATH — and merges it into settings.local.json (deliverable 2),
3984
4087
  * so the EFFECTIVE merged settings (Project ⊕ Local, per Claude Code's rules)
@@ -3990,7 +4093,7 @@ function settingsExplicitlyPreserved(preserveSubpaths) {
3990
4093
  * rescue's posture elsewhere.
3991
4094
  */
3992
4095
  export function reconcileClaudeSettings(ctx, preRescueSettingsJson, out, err) {
3993
- const { hqRoot, srcDir, env, historyFloor, baselineMode, preserveSubpaths, setupPathSettingsLocal = false, } = ctx;
4096
+ const { hqRoot, srcDir, env, historyFloor, baselineMode, preserveSubpaths, } = ctx;
3994
4097
  const settingsPath = path.join(hqRoot, ".claude", "settings.json");
3995
4098
  const localPath = path.join(hqRoot, ".claude", "settings.local.json");
3996
4099
  // The caller explicitly asked to keep settings.json (via `--preserve-subpath
@@ -4001,6 +4104,35 @@ export function reconcileClaudeSettings(ctx, preRescueSettingsJson, out, err) {
4001
4104
  out("==> Skipped .claude/settings.json reconcile (explicitly preserved by --preserve-subpath)\n");
4002
4105
  return;
4003
4106
  }
4107
+ // The runner checks the parent before overlay. Recheck here to avoid reading
4108
+ // through a replacement; never restore through an unknown or linked parent.
4109
+ const settingsParent = path.dirname(localPath);
4110
+ let safeSettingsParent = false;
4111
+ for (const candidate of [settingsParent, localPath]) {
4112
+ try {
4113
+ const entry = fs.lstatSync(candidate);
4114
+ if (candidate === settingsParent) {
4115
+ if (entry.isSymbolicLink() || !entry.isDirectory()) {
4116
+ err(" WARN: settings parent is not a real directory (symlinks refused); settings reconcile skipped\n");
4117
+ return;
4118
+ }
4119
+ safeSettingsParent = true;
4120
+ }
4121
+ else if (entry.isSymbolicLink()) {
4122
+ err(" WARN: settings.local.json is a symlink; settings reconcile skipped\n");
4123
+ restorePreRescueSettingsJson(settingsPath, preRescueSettingsJson, err);
4124
+ return;
4125
+ }
4126
+ }
4127
+ catch (error) {
4128
+ if (error.code !== "ENOENT") {
4129
+ err(" WARN: could not inspect settings.local.json; settings reconcile skipped\n");
4130
+ if (safeSettingsParent)
4131
+ restorePreRescueSettingsJson(settingsPath, preRescueSettingsJson, err);
4132
+ return;
4133
+ }
4134
+ }
4135
+ }
4004
4136
  const overlaidTemplateExists = isFileFollow(settingsPath);
4005
4137
  if (!overlaidTemplateExists) {
4006
4138
  // The release no longer ships .claude/settings.json, but the overwrite-safe
@@ -4072,12 +4204,10 @@ export function reconcileClaudeSettings(ctx, preRescueSettingsJson, out, err) {
4072
4204
  .filter((value) => typeof value === "string")
4073
4205
  .join(path.delimiter);
4074
4206
  const composedPath = composeSettingsPath(srcDir, hqRoot, basePath, env);
4075
- const writePathLocally = setupPathSettingsLocal && Boolean(composedPath);
4207
+ // The legacy option stays accepted, including explicit false, but machine
4208
+ // PATH must never become release drift when lookup fails or defaults off.
4209
+ const writePathLocally = Boolean(composedPath);
4076
4210
  const releaseBaseline = structuredClone(theirs);
4077
- if (composedPath && !setupPathSettingsLocal) {
4078
- const envObj = isPlainObject(theirs.env) ? theirs.env : (theirs.env = {});
4079
- envObj.PATH = composedPath;
4080
- }
4081
4211
  // Relocate genuine user drift into settings.local, and apply user array
4082
4212
  // removals to the release baseline.
4083
4213
  let drift;
@@ -4145,7 +4275,7 @@ export function reconcileClaudeSettings(ctx, preRescueSettingsJson, out, err) {
4145
4275
  }
4146
4276
  try {
4147
4277
  fs.mkdirSync(path.dirname(localPath), { recursive: true });
4148
- fs.writeFileSync(localPath, JSON.stringify(localObj, null, 2) + "\n");
4278
+ writeSettingsAtomically(localPath, JSON.stringify(localObj, null, 2) + "\n");
4149
4279
  }
4150
4280
  catch {
4151
4281
  relocationFailed = true;
@@ -4159,20 +4289,15 @@ export function reconcileClaudeSettings(ctx, preRescueSettingsJson, out, err) {
4159
4289
  // lost; the update simply isn't applied to settings this run (the user can
4160
4290
  // retry once settings.local.json is writable).
4161
4291
  if (relocationFailed) {
4162
- if (preRescueSettingsJson !== null) {
4163
- try {
4164
- fs.writeFileSync(settingsPath, preRescueSettingsJson);
4165
- }
4166
- catch {
4167
- err(" WARN: could not restore pre-rescue .claude/settings.json after a failed drift relocation\n");
4168
- }
4292
+ const originalPreserved = restorePreRescueSettingsJson(settingsPath, preRescueSettingsJson, err);
4293
+ if (originalPreserved) {
4294
+ err(" WARN: kept your original .claude/settings.json (settings update not applied — settings.local.json was unwritable)\n");
4169
4295
  }
4170
- err(" WARN: kept your original .claude/settings.json (settings update not applied — settings.local.json was unwritable)\n");
4171
4296
  return;
4172
4297
  }
4173
- // In local-flag mode, leave the release blob byte-for-byte intact unless
4298
+ // Leave the release blob byte-for-byte intact unless
4174
4299
  // preserving an intentional user array removal changed its content.
4175
- const releasedSettingsUnchanged = setupPathSettingsLocal && jsonDeepEqual(theirs, releaseBaseline);
4300
+ const releasedSettingsUnchanged = jsonDeepEqual(theirs, releaseBaseline);
4176
4301
  try {
4177
4302
  if (!releasedSettingsUnchanged) {
4178
4303
  fs.writeFileSync(settingsPath, JSON.stringify(theirs, null, 2) + "\n");
@@ -4182,9 +4307,7 @@ export function reconcileClaudeSettings(ctx, preRescueSettingsJson, out, err) {
4182
4307
  err(" WARN: could not write re-composed .claude/settings.json during reconcile\n");
4183
4308
  return;
4184
4309
  }
4185
- const pathTarget = setupPathSettingsLocal
4186
- ? ".claude/settings.local.json"
4187
- : ".claude/settings.json";
4310
+ const pathTarget = ".claude/settings.local.json";
4188
4311
  if (driftKeys > 0) {
4189
4312
  out(`==> Reconciled .claude/settings.json to release baseline (env.PATH composed into ${pathTarget}; ` +
4190
4313
  `relocated ${driftKeys} drift key(s) -> .claude/settings.local.json)\n`);