@indigoai-us/hq-cloud 6.18.100 → 6.18.101
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.
|
@@ -34,6 +34,14 @@ export declare const ONTOLOGY_ENTITY_PUSH_FLAG = "checkpoint.ontology";
|
|
|
34
34
|
* `checkpoint.ontology` is on.
|
|
35
35
|
*/
|
|
36
36
|
export declare const ONTOLOGY_MULTI_WRITER_FLAG = "checkpoint.ontology.multi-writer";
|
|
37
|
+
/**
|
|
38
|
+
* How long a 403 from the resolve endpoint is remembered as `false`. hq-pro
|
|
39
|
+
* answers 403 when the caller is not an active member of the requested
|
|
40
|
+
* company (a removed membership, or a stale entry in the local manifest).
|
|
41
|
+
* Retrying that every pass only repeats the refusal and logs it again, so the
|
|
42
|
+
* answer is held for an hour; a restored membership is picked up after that.
|
|
43
|
+
*/
|
|
44
|
+
export declare const FLAG_FORBIDDEN_CACHE_TTL_MS: number;
|
|
37
45
|
export { isOntologyEntityKey } from "./ontology-entity-meta.js";
|
|
38
46
|
export interface OntologyEntityPushInput {
|
|
39
47
|
/** Company vault uid (`cmp_*`). Personal vaults never push entities. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ontology-entity-push.d.ts","sourceRoot":"","sources":["../../src/lib/ontology-entity-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAuC,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAE5H,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"ontology-entity-push.d.ts","sourceRoot":"","sources":["../../src/lib/ontology-entity-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAuC,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAE5H,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAI7E;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QAAc,CAAC;AASvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;IAC/F,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,2FAA2F;AAC3F,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4EhG;AAED,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D"}
|
|
@@ -37,6 +37,21 @@ export const ONTOLOGY_ENTITY_PUSH_FLAG = "checkpoint.ontology";
|
|
|
37
37
|
export const ONTOLOGY_MULTI_WRITER_FLAG = "checkpoint.ontology.multi-writer";
|
|
38
38
|
const FLAG_READ_TIMEOUT_MS = 5_000;
|
|
39
39
|
const FLAG_CACHE_TTL_MS = 5 * 60_000;
|
|
40
|
+
/**
|
|
41
|
+
* How long a 403 from the resolve endpoint is remembered as `false`. hq-pro
|
|
42
|
+
* answers 403 when the caller is not an active member of the requested
|
|
43
|
+
* company (a removed membership, or a stale entry in the local manifest).
|
|
44
|
+
* Retrying that every pass only repeats the refusal and logs it again, so the
|
|
45
|
+
* answer is held for an hour; a restored membership is picked up after that.
|
|
46
|
+
*/
|
|
47
|
+
export const FLAG_FORBIDDEN_CACHE_TTL_MS = 60 * 60_000;
|
|
48
|
+
const FORBIDDEN = /\bresolve returned 403\b/;
|
|
49
|
+
function isForbidden(error) {
|
|
50
|
+
if (error && typeof error === "object" && error.status === 403)
|
|
51
|
+
return true;
|
|
52
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
53
|
+
return FORBIDDEN.test(message);
|
|
54
|
+
}
|
|
40
55
|
export { isOntologyEntityKey } from "./ontology-entity-meta.js";
|
|
41
56
|
const cache = new Map();
|
|
42
57
|
/** Resolve `checkpoint.ontology` (or `input.flag`) for one company vault. Never throws. */
|
|
@@ -60,9 +75,12 @@ export async function resolveOntologyEntityPush(input) {
|
|
|
60
75
|
process.stderr.write(`hq-cloud: could not read ${flag}; ontology entities stay pull-only this pass (${detail.slice(0, 200)})\n`);
|
|
61
76
|
});
|
|
62
77
|
let failed = false;
|
|
78
|
+
let forbidden = false;
|
|
63
79
|
let reported = false;
|
|
64
80
|
const fail = (error) => {
|
|
65
81
|
failed = true;
|
|
82
|
+
if (isForbidden(error))
|
|
83
|
+
forbidden = true;
|
|
66
84
|
if (reported)
|
|
67
85
|
return;
|
|
68
86
|
reported = true;
|
|
@@ -113,9 +131,13 @@ export async function resolveOntologyEntityPush(input) {
|
|
|
113
131
|
fail(error);
|
|
114
132
|
}
|
|
115
133
|
}
|
|
116
|
-
// A failed read is not cached
|
|
134
|
+
// A failed read is not cached, so the next pass asks again, except a 403:
|
|
135
|
+
// the caller is not a member of this company, and asking again every pass
|
|
136
|
+
// only logs the same refusal. That answer is held as false, reported once.
|
|
117
137
|
if (!failed)
|
|
118
138
|
cache.set(cacheKey, { value, expiresAt: now() + FLAG_CACHE_TTL_MS });
|
|
139
|
+
else if (forbidden)
|
|
140
|
+
cache.set(cacheKey, { value: false, expiresAt: now() + FLAG_FORBIDDEN_CACHE_TTL_MS });
|
|
119
141
|
return failed ? false : value;
|
|
120
142
|
}
|
|
121
143
|
export function _resetOntologyEntityPushCacheForTests() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ontology-entity-push.js","sourceRoot":"","sources":["../../src/lib/ontology-entity-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAA2C,MAAM,8BAA8B,CAAC;AAE5H,4EAA4E;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kCAAkC,CAAC;AAE7E,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,iBAAiB,GAAG,CAAC,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ontology-entity-push.js","sourceRoot":"","sources":["../../src/lib/ontology-entity-push.ts"],"names":[],"mappings":"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"}
|