@indigoai-us/hq-cloud 6.15.96 → 6.15.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.
- package/dist/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +13 -6
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner-company.test.js +74 -0
- package/dist/bin/sync-runner-company.test.js.map +1 -1
- package/dist/bin/sync-runner-planning.d.ts.map +1 -1
- package/dist/bin/sync-runner-planning.js +10 -2
- package/dist/bin/sync-runner-planning.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts +7 -2
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +104 -34
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +44 -8
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +127 -1
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +78 -13
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +84 -1
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts +4 -1
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +47 -5
- package/dist/cli/sync.js.map +1 -1
- package/dist/cognito-auth.d.ts +32 -0
- package/dist/cognito-auth.d.ts.map +1 -1
- package/dist/cognito-auth.js +46 -1
- package/dist/cognito-auth.js.map +1 -1
- package/dist/cognito-auth.test.js +49 -0
- package/dist/cognito-auth.test.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/outposts/self-deploy.d.ts.map +1 -1
- package/dist/outposts/self-deploy.js +7 -5
- package/dist/outposts/self-deploy.js.map +1 -1
- package/dist/outposts/self-deploy.test.js +3 -2
- package/dist/outposts/self-deploy.test.js.map +1 -1
- package/dist/sync/area-ledger-auto-migration.d.ts +55 -0
- package/dist/sync/area-ledger-auto-migration.d.ts.map +1 -0
- package/dist/sync/area-ledger-auto-migration.js +167 -0
- package/dist/sync/area-ledger-auto-migration.js.map +1 -0
- package/dist/sync/area-ledger-auto-migration.test.d.ts +2 -0
- package/dist/sync/area-ledger-auto-migration.test.d.ts.map +1 -0
- package/dist/sync/area-ledger-auto-migration.test.js +229 -0
- package/dist/sync/area-ledger-auto-migration.test.js.map +1 -0
- package/dist/sync/feature-flags.d.ts +68 -15
- package/dist/sync/feature-flags.d.ts.map +1 -1
- package/dist/sync/feature-flags.js +98 -21
- package/dist/sync/feature-flags.js.map +1 -1
- package/dist/sync/feature-flags.test.js +77 -3
- package/dist/sync/feature-flags.test.js.map +1 -1
- package/dist/sync/index.d.ts +2 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -1
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/sync-work.d.ts +1 -1
- package/dist/sync/sync-work.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/share.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/cli/share.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AAqBhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAgC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAOL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,
|
|
1
|
+
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/cli/share.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/share.js
CHANGED
|
@@ -23,8 +23,9 @@ import { hasRemoteChanged, isAccessDenied, resolveActiveCompany, resolveTransfer
|
|
|
23
23
|
import { buildConflictId, buildConflictPath, readShortMachineId, } from "../lib/conflict-file.js";
|
|
24
24
|
import { appendConflictEntry } from "../lib/conflict-index.js";
|
|
25
25
|
import { isCloudAuthoritative } from "../lib/cloud-authoritative.js";
|
|
26
|
-
import { VaultAuthError, VaultClient, } from "../vault-client.js";
|
|
26
|
+
import { VaultAuthError, VaultClient, VaultPermissionDeniedError } from "../vault-client.js";
|
|
27
27
|
import { describeError } from "../lib/describe-error.js";
|
|
28
|
+
import { isRetryableIdentityRefusal, isTerminalIdentityRefusal, } from "../cognito-auth.js";
|
|
28
29
|
import { readlinkOrNull } from "../lib/readlink-safe.js";
|
|
29
30
|
import { checkpointReconcileApply } from "../sync/reconcile-cursor.js";
|
|
30
31
|
/**
|
|
@@ -63,8 +64,14 @@ async function remoteContentDiffers(ctx, relativePath, localHash, hqRoot) {
|
|
|
63
64
|
return remoteHash !== localHash;
|
|
64
65
|
}
|
|
65
66
|
catch (err) {
|
|
66
|
-
|
|
67
|
+
// A session-level auth refusal (vault 401/403, or a mid-pass Cognito
|
|
68
|
+
// identity refusal from the bearer getter) is a run-level fact, never a
|
|
69
|
+
// "remote changed" signal — propagate it so the pass aborts once.
|
|
70
|
+
if (err instanceof VaultAuthError ||
|
|
71
|
+
isTerminalIdentityRefusal(err) ||
|
|
72
|
+
isRetryableIdentityRefusal(err)) {
|
|
67
73
|
throw err;
|
|
74
|
+
}
|
|
68
75
|
return true;
|
|
69
76
|
}
|
|
70
77
|
finally {
|
|
@@ -966,7 +973,7 @@ async function registerOneCompanySkill(run, entry, registrar) {
|
|
|
966
973
|
*/
|
|
967
974
|
async function preflightCompanySkillIdentities(run, entries) {
|
|
968
975
|
if (run.options.personalMode === true || run.ctx.uid.startsWith("prs_"))
|
|
969
|
-
return;
|
|
976
|
+
return new Set();
|
|
970
977
|
const canonical = entries.filter((entry) => entry.kind === "file" &&
|
|
971
978
|
CANONICAL_COMPANY_SKILL_RE.test(entry.relativePath));
|
|
972
979
|
const unstamped = canonical.filter((entry) => !parseRegisteredCompanySkillUid(fs.readFileSync(entry.absolutePath, "utf8")));
|
|
@@ -976,16 +983,32 @@ async function preflightCompanySkillIdentities(run, entries) {
|
|
|
976
983
|
journalEntry.hash === hashFile(entry.absolutePath));
|
|
977
984
|
});
|
|
978
985
|
if (unstamped.length === 0 && pending.length === 0)
|
|
979
|
-
return;
|
|
986
|
+
return new Set();
|
|
980
987
|
const registrar = skillRegistrarForRun(run);
|
|
981
988
|
if (!registrar) {
|
|
982
989
|
if (unstamped.length > 0) {
|
|
983
990
|
throw new UnregisteredCompanySkillError(unstamped.map((entry) => entry.relativePath));
|
|
984
991
|
}
|
|
985
|
-
return;
|
|
992
|
+
return new Set();
|
|
986
993
|
}
|
|
994
|
+
const registrationDenied = new Set();
|
|
987
995
|
for (const entry of unstamped) {
|
|
988
|
-
|
|
996
|
+
try {
|
|
997
|
+
await registerOneCompanySkill(run, entry, registrar);
|
|
998
|
+
}
|
|
999
|
+
catch (err) {
|
|
1000
|
+
if (!(err instanceof VaultPermissionDeniedError))
|
|
1001
|
+
throw err;
|
|
1002
|
+
registrationDenied.add(entry.relativePath);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
if (registrationDenied.size > 0) {
|
|
1006
|
+
run.emit({
|
|
1007
|
+
type: "not-shipped",
|
|
1008
|
+
reason: "skill-registration-denied",
|
|
1009
|
+
count: registrationDenied.size,
|
|
1010
|
+
samplePaths: [...registrationDenied].slice(0, 10),
|
|
1011
|
+
});
|
|
989
1012
|
}
|
|
990
1013
|
for (const entry of pending) {
|
|
991
1014
|
const journalEntry = run.journal.files[entry.relativePath];
|
|
@@ -1036,6 +1059,7 @@ async function preflightCompanySkillIdentities(run, entries) {
|
|
|
1036
1059
|
delete run.journal.files[entry.relativePath]?.skillMetadataPending;
|
|
1037
1060
|
checkpointShareJournal(run);
|
|
1038
1061
|
}
|
|
1062
|
+
return registrationDenied;
|
|
1039
1063
|
}
|
|
1040
1064
|
/**
|
|
1041
1065
|
* Reconcile metadata only after the canonical bytes have landed. Identity
|
|
@@ -1152,8 +1176,11 @@ async function buildSharePlans(run) {
|
|
|
1152
1176
|
return false;
|
|
1153
1177
|
})
|
|
1154
1178
|
: controlCharFiltered;
|
|
1155
|
-
await preflightCompanySkillIdentities(run, filesToShare);
|
|
1156
|
-
const
|
|
1179
|
+
const registrationDenied = await preflightCompanySkillIdentities(run, filesToShare);
|
|
1180
|
+
const uploadableFiles = registrationDenied.size > 0
|
|
1181
|
+
? filesToShare.filter((entry) => !registrationDenied.has(entry.relativePath))
|
|
1182
|
+
: filesToShare;
|
|
1183
|
+
const pushPlan = computePushPlan(uploadableFiles, run.journal, run.skipUnchanged === true, run.options.onHeartbeat);
|
|
1157
1184
|
const deletePlan = run.propagateDeletes === true
|
|
1158
1185
|
? await computeDeletePlan(run.journal, run.syncRoot, deleteScopeRoots, run.shouldSync, run.propagateDeletePolicy, run.ctx, run.options.personalMode !== true)
|
|
1159
1186
|
: { toDelete: [], toTombstone: [], refusedStale: [] };
|
|
@@ -1651,8 +1678,15 @@ async function executeUploads(run, pushPlan, counters, conflictPaths) {
|
|
|
1651
1678
|
await performUpload(precondition);
|
|
1652
1679
|
}
|
|
1653
1680
|
catch (err) {
|
|
1654
|
-
|
|
1681
|
+
// A session-level auth refusal (vault 401/403, or a mid-pass Cognito
|
|
1682
|
+
// identity refusal from the bearer getter) is a run-level fact, not a
|
|
1683
|
+
// per-file upload failure — propagate it so one refusal aborts the pass
|
|
1684
|
+
// instead of fanning out into a per-file error for every in-flight PUT.
|
|
1685
|
+
if (err instanceof VaultAuthError ||
|
|
1686
|
+
isTerminalIdentityRefusal(err) ||
|
|
1687
|
+
isRetryableIdentityRefusal(err)) {
|
|
1655
1688
|
throw err;
|
|
1689
|
+
}
|
|
1656
1690
|
// A failed checkpoint is a state-disk problem, not this object's
|
|
1657
1691
|
// problem. Swallowing it here would mark the file as an upload failure
|
|
1658
1692
|
// and let the pass keep going, re-attempting the same failing
|
|
@@ -1698,8 +1732,11 @@ async function executeUploads(run, pushPlan, counters, conflictPaths) {
|
|
|
1698
1732
|
await performUpload(undefined);
|
|
1699
1733
|
}
|
|
1700
1734
|
catch (retryErr) {
|
|
1701
|
-
if (retryErr instanceof VaultAuthError
|
|
1735
|
+
if (retryErr instanceof VaultAuthError ||
|
|
1736
|
+
isTerminalIdentityRefusal(retryErr) ||
|
|
1737
|
+
isRetryableIdentityRefusal(retryErr)) {
|
|
1702
1738
|
throw retryErr;
|
|
1739
|
+
}
|
|
1703
1740
|
hadUploadFailure = true;
|
|
1704
1741
|
run.emit({
|
|
1705
1742
|
type: "error",
|
|
@@ -1738,8 +1775,19 @@ async function executeUploads(run, pushPlan, counters, conflictPaths) {
|
|
|
1738
1775
|
const queue = [...pushPlan.items];
|
|
1739
1776
|
const inFlight = new Set();
|
|
1740
1777
|
let inFlightBytes = 0;
|
|
1778
|
+
// A session-level auth refusal is a run-level fact: stop admitting new
|
|
1779
|
+
// uploads so one refusal aborts the pass promptly instead of replanning and
|
|
1780
|
+
// re-attempting the whole queue against the dead session (HQ-DESKTOP-5S).
|
|
1781
|
+
// Distinct from `aborted` on purpose — `aborted` makes the caller return
|
|
1782
|
+
// early WITHOUT rethrowing worker errors, which would swallow the refusal;
|
|
1783
|
+
// this flag only halts admission, so the refusal still surfaces via
|
|
1784
|
+
// throwUploadWorkerErrors below. In-flight legs still drain.
|
|
1785
|
+
let sessionAuthAborted = false;
|
|
1741
1786
|
while (queue.length > 0 || inFlight.size > 0) {
|
|
1742
|
-
while (!aborted &&
|
|
1787
|
+
while (!aborted &&
|
|
1788
|
+
!sessionAuthAborted &&
|
|
1789
|
+
inFlight.size < TRANSFER_CONCURRENCY &&
|
|
1790
|
+
queue.length > 0) {
|
|
1743
1791
|
const previewItem = queue[0];
|
|
1744
1792
|
const item = replanPushItemAtExecution(previewItem, run.journal, run.skipUnchanged === true, run.options.onHeartbeat);
|
|
1745
1793
|
if (item === null) {
|
|
@@ -1775,6 +1823,11 @@ async function executeUploads(run, pushPlan, counters, conflictPaths) {
|
|
|
1775
1823
|
// more objects that can never be recorded. Stop feeding the queue.
|
|
1776
1824
|
if (err instanceof JournalCheckpointError)
|
|
1777
1825
|
aborted = true;
|
|
1826
|
+
if (err instanceof VaultAuthError ||
|
|
1827
|
+
isTerminalIdentityRefusal(err) ||
|
|
1828
|
+
isRetryableIdentityRefusal(err)) {
|
|
1829
|
+
sessionAuthAborted = true;
|
|
1830
|
+
}
|
|
1778
1831
|
workerErrors.push(err instanceof Error ? err : new Error(String(err)));
|
|
1779
1832
|
})
|
|
1780
1833
|
.finally(() => {
|
|
@@ -1895,8 +1948,11 @@ async function writePushConflictMirror(run, item, remoteHash, preserved) {
|
|
|
1895
1948
|
});
|
|
1896
1949
|
}
|
|
1897
1950
|
}
|
|
1898
|
-
if (mirrorErr instanceof VaultAuthError
|
|
1951
|
+
if (mirrorErr instanceof VaultAuthError ||
|
|
1952
|
+
isTerminalIdentityRefusal(mirrorErr) ||
|
|
1953
|
+
isRetryableIdentityRefusal(mirrorErr)) {
|
|
1899
1954
|
throw mirrorErr;
|
|
1955
|
+
}
|
|
1900
1956
|
if (mirrorErr instanceof JournalCheckpointError)
|
|
1901
1957
|
throw mirrorErr;
|
|
1902
1958
|
if (mirrorErr instanceof WindowsRenameBlockedError) {
|
|
@@ -2022,8 +2078,14 @@ async function executeDeletes(run, deletePlan, decommissionPlan, counters, files
|
|
|
2022
2078
|
});
|
|
2023
2079
|
}
|
|
2024
2080
|
catch (err) {
|
|
2025
|
-
|
|
2081
|
+
// A session-level auth refusal is a run-level fact, not a per-file delete
|
|
2082
|
+
// failure — propagate it so one refusal aborts the pass instead of
|
|
2083
|
+
// recording a per-file error for every delete in flight.
|
|
2084
|
+
if (err instanceof VaultAuthError ||
|
|
2085
|
+
isTerminalIdentityRefusal(err) ||
|
|
2086
|
+
isRetryableIdentityRefusal(err)) {
|
|
2026
2087
|
throw err;
|
|
2088
|
+
}
|
|
2027
2089
|
run.emit({
|
|
2028
2090
|
type: "error",
|
|
2029
2091
|
path: relativePath,
|
|
@@ -2529,6 +2591,9 @@ function defaultConsoleLogger(event) {
|
|
|
2529
2591
|
else if (event.reason === "unreadable-link") {
|
|
2530
2592
|
console.warn(` ! ${event.count} symbolic link${event.count === 1 ? "" : "s"} could NOT be read and was skipped without dereferencing its target:`);
|
|
2531
2593
|
}
|
|
2594
|
+
else if (event.reason === "skill-registration-denied") {
|
|
2595
|
+
console.warn(` ! ${event.count} unstamped company skill${event.count === 1 ? "" : "s"} could NOT be registered with this machine's permissions and was NOT uploaded:`);
|
|
2596
|
+
}
|
|
2532
2597
|
else {
|
|
2533
2598
|
console.warn(` ! ${event.count} linked subtree${event.count === 1 ? "" : "s"} recorded but NOT uploaded — contents sync via their own repo, not the vault:`);
|
|
2534
2599
|
}
|