@pylabmit/agent-cmdb 1.5.1 → 2.0.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.
- package/README.md +20 -3
- package/dist/checkpoint.d.ts +6 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +137 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/cli.js +87 -6
- package/dist/cli.js.map +1 -1
- package/dist/cost.d.ts +3 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +49 -0
- package/dist/cost.js.map +1 -0
- package/dist/digest.d.ts +2 -1
- package/dist/digest.d.ts.map +1 -1
- package/dist/digest.js +18 -2
- package/dist/digest.js.map +1 -1
- package/dist/engine.d.ts +0 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +0 -2
- package/dist/engine.js.map +1 -1
- package/dist/health.d.ts +9 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +222 -0
- package/dist/health.js.map +1 -0
- package/dist/interface.d.ts +14 -1
- package/dist/interface.d.ts.map +1 -1
- package/dist/interface.js +45 -1
- package/dist/interface.js.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -0
- package/dist/loader.js +52 -2
- package/dist/loader.js.map +1 -1
- package/dist/preflight.d.ts +4 -2
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +31 -3
- package/dist/preflight.js.map +1 -1
- package/dist/route-resolver.d.ts.map +1 -1
- package/dist/route-resolver.js +43 -3
- package/dist/route-resolver.js.map +1 -1
- package/dist/slo.d.ts +4 -0
- package/dist/slo.d.ts.map +1 -0
- package/dist/slo.js +147 -0
- package/dist/slo.js.map +1 -0
- package/dist/store.d.ts +9 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +104 -2
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -13
package/dist/preflight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAU1D,MAAM,UAAU,iBAAiB,CAC/B,YAA0B,EAC1B,OAAyB,EACzB,UAAuC,EAAE;IAEzC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACjE,IAAI,aAAa,GAAmB,QAAQ,CAAC;IAC7C,IAAI,KAAsC,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,GAAG,kBAAkB,CAAC,YAAY,EAAE;gBACvC,OAAO,EAAE,iBAAiB,CAAC,OAAO;gBAClC,MAAM,EAAE,iBAAiB,CAAC,MAAM;gBAChC,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzF,MAAM,MAAM,GAAG,6DAA6D,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/G,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,aAAa,GAAG,YAAY,CAC1B,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,MAAM,EACN,iEAAiE,CAClE,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjG,MAAM,MAAM,GAAG,+BAA+B,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjF,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,aAAa,GAAG,YAAY,CAC1B,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,EACN,4EAA4E,CAC7E,CAAC;YACJ,CAAC;YAED,IACE,aAAa,CAAC,MAAM,KAAK,OAAO;mBAC7B,iBAAiB,CAAC,IAAI;mBACtB,yBAAyB,CAAC,KAAK,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAC1E,CAAC;gBACD,MAAM,MAAM,GAAG,kBAAkB,iBAAiB,CAAC,IAAI,WAAW,CAAC;gBACnE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,aAAa,GAAG,YAAY,CAC1B,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,EACN,oFAAoF,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,4BAA4B,OAAO,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBAC3E,aAAa,GAAG,YAAY,CAC1B,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,MAAM,EACN,oEAAoE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExE,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,MAAM,KAAK,OAAO;QACzC,gBAAgB,EAAE,aAAa,CAAC,MAAM,KAAK,mBAAmB;QAC9D,QAAQ,EAAE,aAAa;QACvB,KAAK;QACL,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;QACnE,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU;QACnD,QAAQ;QACR,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,YAA0B,EAC1B,QAAgB,EAChB,OAAyB;IAEzB,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,cAAc,CAAC,QAAQ,EAAE;YAC7B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;YAChC,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM;YAChD,OAAO,EAAE,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YACzE,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,aAAa,EAAE,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;YACjD,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,UAAU,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC1C,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;QACvG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IAEH,MAAM,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAyB;IAC1D,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS;QACxC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,EAAE,eAAe,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACnH,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO;QACL,GAAG,gBAAgB;QACnB,MAAM;QACN,MAAM;QACN,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,OAAyB,EACzB,MAAc,EACd,IAAY,EACZ,MAAc,EACd,oBAA4B;IAE5B,OAAO;QACL,MAAM,EAAE,MAAM;QACd,MAAM;QACN,IAAI;QACJ,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,KAAK;QAClB,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QACjE,OAAO;YACL,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;YAChF,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,iCAAiC,CAAC;SAC1F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa;IACnD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,KAAa,EAAE,MAAe;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,UAAU,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,YAA0B,EAAE,MAAuB;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtE,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAwB,EAAE,IAAY;IACvE,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC/H,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../src/route-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EAGnB,SAAS,EACT,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../src/route-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EAGnB,SAAS,EACT,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CA+BrB;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAe/F;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAMzF;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAMpF"}
|
package/dist/route-resolver.js
CHANGED
|
@@ -6,14 +6,21 @@ export function resolveSourceRoute(controlPlane, request) {
|
|
|
6
6
|
if (!route) {
|
|
7
7
|
throw new Error(`No source route configured for profile ${normalizedRequest.profile} and intent ${normalizedRequest.intent}.`);
|
|
8
8
|
}
|
|
9
|
+
const healthBySource = new Map((normalizedRequest.health ?? []).map((health) => [health.sourceId, health]));
|
|
10
|
+
const routeSources = route.sources.map((sourceId) => ensureSource(controlPlane, sourceId));
|
|
11
|
+
const sources = routeSources.filter((source) => healthBySource.get(source.id)?.status !== 'down');
|
|
12
|
+
const skippedSources = routeSources
|
|
13
|
+
.filter((source) => healthBySource.get(source.id)?.status === 'down')
|
|
14
|
+
.map((source) => source.id);
|
|
9
15
|
return {
|
|
10
16
|
profile: profile.id,
|
|
11
17
|
intent: normalizedRequest.intent,
|
|
12
|
-
sources
|
|
18
|
+
sources,
|
|
19
|
+
skippedSources,
|
|
13
20
|
guardrails: profile.guardrails,
|
|
14
21
|
notes: route.notes,
|
|
15
22
|
blockOnStale: Boolean(route.blockOnStale),
|
|
16
|
-
...resolveFreshness(
|
|
23
|
+
...resolveFreshness(sources, normalizedRequest.freshness)
|
|
17
24
|
};
|
|
18
25
|
}
|
|
19
26
|
export function inspectProfile(controlPlane, profileId) {
|
|
@@ -50,9 +57,36 @@ function normalizeSourceRouteRequest(request) {
|
|
|
50
57
|
return {
|
|
51
58
|
profile: requireNonEmptyString(record.profile, 'Source route request profile'),
|
|
52
59
|
intent: requireNonEmptyString(record.intent, 'Source route request intent'),
|
|
53
|
-
freshness: normalizeFreshness(record.freshness)
|
|
60
|
+
freshness: normalizeFreshness(record.freshness),
|
|
61
|
+
health: normalizeHealth(record.health)
|
|
54
62
|
};
|
|
55
63
|
}
|
|
64
|
+
function normalizeHealth(value) {
|
|
65
|
+
if (value === undefined)
|
|
66
|
+
return undefined;
|
|
67
|
+
if (!Array.isArray(value)) {
|
|
68
|
+
throw new Error('Source route request health must be an array.');
|
|
69
|
+
}
|
|
70
|
+
return value.map((entry) => {
|
|
71
|
+
const record = requireRecord(entry, 'Source health input');
|
|
72
|
+
const status = requireNonEmptyString(record.status, 'Source health status');
|
|
73
|
+
if (!['up', 'down', 'half-open'].includes(status)) {
|
|
74
|
+
throw new Error(`Source health status must be one of: up, down, half-open.`);
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
sourceId: requireNonEmptyString(record.sourceId, 'Source health sourceId'),
|
|
78
|
+
status: status,
|
|
79
|
+
consecutiveFailures: readNonNegativeNumber(record.consecutiveFailures, 'Source health consecutiveFailures'),
|
|
80
|
+
lastChecked: requireNonEmptyString(record.lastChecked, 'Source health lastChecked'),
|
|
81
|
+
lastFailure: record.lastFailure === undefined
|
|
82
|
+
? undefined
|
|
83
|
+
: requireNonEmptyString(record.lastFailure, 'Source health lastFailure'),
|
|
84
|
+
lastSuccess: record.lastSuccess === undefined
|
|
85
|
+
? undefined
|
|
86
|
+
: requireNonEmptyString(record.lastSuccess, 'Source health lastSuccess')
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
}
|
|
56
90
|
function resolveFreshness(sources, freshness) {
|
|
57
91
|
if (!freshness || freshness.length === 0) {
|
|
58
92
|
return {
|
|
@@ -128,4 +162,10 @@ function requireNonEmptyString(value, label) {
|
|
|
128
162
|
}
|
|
129
163
|
return value;
|
|
130
164
|
}
|
|
165
|
+
function readNonNegativeNumber(value, label) {
|
|
166
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
|
|
167
|
+
throw new Error(`${label} must be a non-negative number.`);
|
|
168
|
+
}
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
131
171
|
//# sourceMappingURL=route-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../src/route-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAY9C,MAAM,UAAU,kBAAkB,CAChC,YAA0B,EAC1B,OAA2B;IAE3B,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhG,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,0CAA0C,iBAAiB,CAAC,OAAO,eAAe,iBAAiB,CAAC,MAAM,GAAG,CAC9G,CAAC;IACJ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../src/route-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/slo.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ControlPlane, PreflightResult, SloResult } from './types.js';
|
|
2
|
+
export declare function updateSloCache(controlPlane: ControlPlane, storeDir: string, result: PreflightResult): Promise<void>;
|
|
3
|
+
export declare function calculateSlo(controlPlane: ControlPlane, storeDir: string, profileId: string): Promise<SloResult>;
|
|
4
|
+
//# sourceMappingURL=slo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slo.d.ts","sourceRoot":"","sources":["../src/slo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAa,SAAS,EAAE,MAAM,YAAY,CAAC;AAiBtF,wBAAsB,cAAc,CAClC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAsB,YAAY,CAChC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,CAwDpB"}
|
package/dist/slo.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { readJsonState, writeJsonState } from './store.js';
|
|
2
|
+
export async function updateSloCache(controlPlane, storeDir, result) {
|
|
3
|
+
const profile = controlPlane.profiles.find((candidate) => candidate.id === result.decision.profile);
|
|
4
|
+
if (!profile?.slo)
|
|
5
|
+
return;
|
|
6
|
+
const now = new Date();
|
|
7
|
+
const cache = await readSloCache(storeDir, profile.id);
|
|
8
|
+
const windowStartMs = now.getTime() - profile.slo.windowHours * 60 * 60 * 1000;
|
|
9
|
+
const bucketStart = hourBucket(now);
|
|
10
|
+
const buckets = cache.buckets.filter((bucket) => Date.parse(bucket.bucketStart) >= windowStartMs);
|
|
11
|
+
const bucket = buckets.find((candidate) => candidate.bucketStart === bucketStart);
|
|
12
|
+
const nextBucket = bucket ?? { bucketStart, total: 0, allowed: 0, denied: 0 };
|
|
13
|
+
nextBucket.total += 1;
|
|
14
|
+
if (result.allowed) {
|
|
15
|
+
nextBucket.allowed += 1;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
nextBucket.denied += 1;
|
|
19
|
+
}
|
|
20
|
+
if (!bucket)
|
|
21
|
+
buckets.push(nextBucket);
|
|
22
|
+
await writeSloCache(storeDir, {
|
|
23
|
+
profile: profile.id,
|
|
24
|
+
metric: profile.slo.metric,
|
|
25
|
+
buckets: buckets.sort((left, right) => left.bucketStart.localeCompare(right.bucketStart)),
|
|
26
|
+
lastUpdated: now.toISOString()
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export async function calculateSlo(controlPlane, storeDir, profileId) {
|
|
30
|
+
const profile = controlPlane.profiles.find((candidate) => candidate.id === profileId);
|
|
31
|
+
if (!profile) {
|
|
32
|
+
throw new Error(`Unknown profile: ${profileId}.`);
|
|
33
|
+
}
|
|
34
|
+
const config = profile.slo ?? {
|
|
35
|
+
target: 1,
|
|
36
|
+
windowHours: 24,
|
|
37
|
+
metric: 'allow_rate'
|
|
38
|
+
};
|
|
39
|
+
const now = new Date();
|
|
40
|
+
const windowStartMs = now.getTime() - config.windowHours * 60 * 60 * 1000;
|
|
41
|
+
const cache = await readSloCache(storeDir, profile.id);
|
|
42
|
+
const bucketWarnings = cache.buckets
|
|
43
|
+
.filter((bucket) => bucket.total !== bucket.allowed + bucket.denied)
|
|
44
|
+
.map((bucket) => `SLO cache bucket ${bucket.bucketStart} has inconsistent totals.`);
|
|
45
|
+
const warnings = [...(cache.warnings ?? []), ...bucketWarnings];
|
|
46
|
+
if (warnings.length > 0) {
|
|
47
|
+
return {
|
|
48
|
+
profile: profile.id,
|
|
49
|
+
target: config.target,
|
|
50
|
+
actual: 0,
|
|
51
|
+
withinBudget: false,
|
|
52
|
+
errorBudgetRemaining: 0,
|
|
53
|
+
totalDecisions: 0,
|
|
54
|
+
allowedCount: 0,
|
|
55
|
+
deniedCount: 0,
|
|
56
|
+
windowStart: new Date(windowStartMs).toISOString(),
|
|
57
|
+
windowEnd: now.toISOString(),
|
|
58
|
+
warnings
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const buckets = cache.buckets.filter((bucket) => Date.parse(bucket.bucketStart) >= windowStartMs);
|
|
62
|
+
const totalDecisions = buckets.reduce((sum, bucket) => sum + bucket.total, 0);
|
|
63
|
+
const allowedCount = buckets.reduce((sum, bucket) => sum + bucket.allowed, 0);
|
|
64
|
+
const deniedCount = buckets.reduce((sum, bucket) => sum + bucket.denied, 0);
|
|
65
|
+
const actual = totalDecisions === 0 ? 1 : allowedCount / totalDecisions;
|
|
66
|
+
const allowedErrorRate = totalDecisions === 0 ? 0 : deniedCount / totalDecisions;
|
|
67
|
+
const errorBudget = 1 - config.target;
|
|
68
|
+
const errorBudgetRemaining = Math.max(0, errorBudget - allowedErrorRate);
|
|
69
|
+
return {
|
|
70
|
+
profile: profile.id,
|
|
71
|
+
target: config.target,
|
|
72
|
+
actual,
|
|
73
|
+
withinBudget: actual >= config.target,
|
|
74
|
+
errorBudgetRemaining,
|
|
75
|
+
totalDecisions,
|
|
76
|
+
allowedCount,
|
|
77
|
+
deniedCount,
|
|
78
|
+
windowStart: new Date(windowStartMs).toISOString(),
|
|
79
|
+
windowEnd: now.toISOString()
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
async function readSloCache(storeDir, profile) {
|
|
83
|
+
return readJsonState(storeDir, cachePath(profile), { profile, metric: 'allow_rate', buckets: [], lastUpdated: new Date(0).toISOString() }, parseSloCache);
|
|
84
|
+
}
|
|
85
|
+
async function writeSloCache(storeDir, cache) {
|
|
86
|
+
await writeJsonState(storeDir, cachePath(cache.profile), cache, parseSloCache);
|
|
87
|
+
}
|
|
88
|
+
function cachePath(profile) {
|
|
89
|
+
return `slo-cache/${safeSegment(profile)}.json`;
|
|
90
|
+
}
|
|
91
|
+
function hourBucket(date) {
|
|
92
|
+
const bucket = new Date(date);
|
|
93
|
+
bucket.setUTCMinutes(0, 0, 0);
|
|
94
|
+
return bucket.toISOString();
|
|
95
|
+
}
|
|
96
|
+
function safeSegment(value) {
|
|
97
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(value)) {
|
|
98
|
+
throw new Error('SLO profile must be a safe filename segment.');
|
|
99
|
+
}
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
function parseSloCache(value) {
|
|
103
|
+
const record = requireRecord(value, 'SLO cache');
|
|
104
|
+
const metric = readString(record, 'metric', 'SLO metric');
|
|
105
|
+
if (metric !== 'allow_rate') {
|
|
106
|
+
throw new Error('SLO metric must be allow_rate.');
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
profile: safeSegment(readString(record, 'profile', 'SLO profile')),
|
|
110
|
+
metric,
|
|
111
|
+
buckets: Array.isArray(record.buckets) ? record.buckets.map(parseBucket) : [],
|
|
112
|
+
lastUpdated: readString(record, 'lastUpdated', 'SLO lastUpdated'),
|
|
113
|
+
warnings: Array.isArray(record.warnings)
|
|
114
|
+
? record.warnings.filter((warning) => typeof warning === 'string')
|
|
115
|
+
: undefined
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function parseBucket(value) {
|
|
119
|
+
const record = requireRecord(value, 'SLO bucket');
|
|
120
|
+
return {
|
|
121
|
+
bucketStart: readString(record, 'bucketStart', 'SLO bucketStart'),
|
|
122
|
+
total: readNumber(record, 'total', 'SLO bucket total'),
|
|
123
|
+
allowed: readNumber(record, 'allowed', 'SLO bucket allowed'),
|
|
124
|
+
denied: readNumber(record, 'denied', 'SLO bucket denied')
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function requireRecord(value, label) {
|
|
128
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
129
|
+
throw new Error(`${label} must be an object.`);
|
|
130
|
+
}
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
function readString(record, key, label) {
|
|
134
|
+
const value = record[key];
|
|
135
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
136
|
+
throw new Error(`${label} must be a non-empty string.`);
|
|
137
|
+
}
|
|
138
|
+
return value;
|
|
139
|
+
}
|
|
140
|
+
function readNumber(record, key, label) {
|
|
141
|
+
const value = record[key];
|
|
142
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
|
|
143
|
+
throw new Error(`${label} must be a non-negative number.`);
|
|
144
|
+
}
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=slo.js.map
|
package/dist/slo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slo.js","sourceRoot":"","sources":["../src/slo.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ export declare function appendEvidence(storeDir: string, input: EvidenceInput):
|
|
|
9
9
|
export declare function listEvidence(storeDir: string, query?: EvidenceQuery): Promise<EvidenceRecord[]>;
|
|
10
10
|
export declare function appendChange(storeDir: string, input: ChangeInput): Promise<ChangeRecord>;
|
|
11
11
|
export declare function listChanges(storeDir: string, query?: ChangeQuery): Promise<ChangeRecord[]>;
|
|
12
|
+
export declare function readJsonState<T extends object>(storeDir: string, relativePath: string, fallback: T, parse: (value: unknown) => T): Promise<T & {
|
|
13
|
+
prevHash: string;
|
|
14
|
+
warnings?: string[];
|
|
15
|
+
}>;
|
|
16
|
+
export declare function writeJsonState<T extends object>(storeDir: string, relativePath: string, payload: T, parse?: (value: unknown) => T): Promise<T & {
|
|
17
|
+
prevHash: string;
|
|
18
|
+
}>;
|
|
19
|
+
export declare function deleteJsonState(storeDir: string, relativePath: string): Promise<void>;
|
|
20
|
+
export declare function listJsonStateFiles(storeDir: string, relativeDir: string): Promise<string[]>;
|
|
12
21
|
export declare function sanitizeText(value: string, options?: {
|
|
13
22
|
preserveLineBreaks?: boolean;
|
|
14
23
|
}): string;
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAEX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EAGf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAEX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EAGf,MAAM,YAAY,CAAC;AAYpB,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIjE;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI/D;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBpG;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAYzG;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAgB9F;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWpG;AAED,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAClD,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,GAC3B,OAAO,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuCxD;AAED,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,EACnD,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,CAAC,EACV,KAAK,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAyB,GACnD,OAAO,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAMnC;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOjG;AA4GD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAclG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/D"}
|
package/dist/store.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { appendFile, mkdir, readFile } from 'node:fs/promises';
|
|
1
|
+
import { appendFile, mkdir, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { createHash, randomUUID } from 'node:crypto';
|
|
3
|
-
import { join } from 'node:path';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
4
|
const evidenceFile = 'evidence.jsonl';
|
|
5
5
|
const changesFile = 'changes.jsonl';
|
|
6
6
|
const maxScalarLength = 2048;
|
|
@@ -9,6 +9,7 @@ const injectionReplacement = '[CONTENT REMOVED - injection pattern detected]';
|
|
|
9
9
|
const injectionPattern = /\b(SYSTEM|DEVELOPER|USER|ASSISTANT|TOOL)\s*:/i;
|
|
10
10
|
const lastHashByFile = new Map();
|
|
11
11
|
const appendQueues = new Map();
|
|
12
|
+
const stateQueues = new Map();
|
|
12
13
|
export class CorruptStoreError extends Error {
|
|
13
14
|
constructor(fileName, lineNumber, detail) {
|
|
14
15
|
super(`Corrupt JSONL store ${fileName}:${lineNumber}: ${detail}`);
|
|
@@ -30,6 +31,8 @@ export async function appendEvidence(storeDir, input) {
|
|
|
30
31
|
summary: sanitizeText(requireString(recordInput.summary, 'Evidence summary')),
|
|
31
32
|
trust: parseTrustLevel(recordInput.trust),
|
|
32
33
|
capturedAt: sanitizeScalar(requireString(recordInput.capturedAt, 'Evidence capturedAt')),
|
|
34
|
+
tokenCount: optionalNonNegativeNumber(recordInput.tokenCount, 'Evidence tokenCount'),
|
|
35
|
+
estimatedCost: optionalNonNegativeNumber(recordInput.estimatedCost, 'Evidence estimatedCost'),
|
|
33
36
|
links: optionalStringArray(recordInput.links, 'Evidence links')?.map(sanitizeScalar),
|
|
34
37
|
tags: optionalStringArray(recordInput.tags, 'Evidence tags')?.map(sanitizeScalar),
|
|
35
38
|
id: `ev_${randomUUID()}`
|
|
@@ -83,6 +86,76 @@ export async function listChanges(storeDir, query = {}) {
|
|
|
83
86
|
return true;
|
|
84
87
|
});
|
|
85
88
|
}
|
|
89
|
+
export async function readJsonState(storeDir, relativePath, fallback, parse) {
|
|
90
|
+
const filePath = join(storeDir, relativePath);
|
|
91
|
+
const content = await readFileIfExists(filePath);
|
|
92
|
+
if (!content.trim()) {
|
|
93
|
+
const normalizedFallback = parse(fallback);
|
|
94
|
+
return {
|
|
95
|
+
...normalizedFallback,
|
|
96
|
+
prevHash: hashStatePayload(normalizedFallback)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
let parsed;
|
|
100
|
+
try {
|
|
101
|
+
const value = JSON.parse(content);
|
|
102
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
103
|
+
throw new Error('expected JSON object state');
|
|
104
|
+
}
|
|
105
|
+
parsed = value;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
109
|
+
throw new CorruptStoreError(relativePath, 1, detail);
|
|
110
|
+
}
|
|
111
|
+
const normalized = parse(parsed);
|
|
112
|
+
const storedHash = typeof parsed.prevHash === 'string' ? parsed.prevHash : '';
|
|
113
|
+
const expectedHash = hashStatePayload(normalized);
|
|
114
|
+
const warnings = Array.isArray(parsed.warnings)
|
|
115
|
+
? parsed.warnings.filter((warning) => typeof warning === 'string')
|
|
116
|
+
: [];
|
|
117
|
+
if (storedHash !== expectedHash) {
|
|
118
|
+
warnings.push(`JSON state hash warning in ${relativePath}: expected prevHash ${expectedHash}.`);
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
...normalized,
|
|
122
|
+
prevHash: storedHash || expectedHash,
|
|
123
|
+
warnings: warnings.length > 0 ? warnings : undefined
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export async function writeJsonState(storeDir, relativePath, payload, parse = (value) => value) {
|
|
127
|
+
const filePath = join(storeDir, relativePath);
|
|
128
|
+
const previous = stateQueues.get(filePath) ?? Promise.resolve();
|
|
129
|
+
const next = previous.then(() => writeJsonStateUnlocked(storeDir, relativePath, payload, parse));
|
|
130
|
+
stateQueues.set(filePath, next.catch(() => undefined));
|
|
131
|
+
return next;
|
|
132
|
+
}
|
|
133
|
+
export async function deleteJsonState(storeDir, relativePath) {
|
|
134
|
+
await rm(join(storeDir, relativePath), { force: true });
|
|
135
|
+
}
|
|
136
|
+
export async function listJsonStateFiles(storeDir, relativeDir) {
|
|
137
|
+
try {
|
|
138
|
+
return await readdir(join(storeDir, relativeDir));
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT')
|
|
142
|
+
return [];
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async function writeJsonStateUnlocked(storeDir, relativePath, payload, parse) {
|
|
147
|
+
await mkdir(dirname(join(storeDir, relativePath)), { recursive: true });
|
|
148
|
+
const normalized = parse(payload);
|
|
149
|
+
const recordWithHash = {
|
|
150
|
+
...normalized,
|
|
151
|
+
prevHash: hashStatePayload(normalized)
|
|
152
|
+
};
|
|
153
|
+
const target = join(storeDir, relativePath);
|
|
154
|
+
const temp = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
155
|
+
await writeFile(temp, `${JSON.stringify(recordWithHash, null, 2)}\n`, 'utf8');
|
|
156
|
+
await rename(temp, target);
|
|
157
|
+
return recordWithHash;
|
|
158
|
+
}
|
|
86
159
|
async function appendJsonLine(storeDir, fileName, record) {
|
|
87
160
|
const filePath = join(storeDir, fileName);
|
|
88
161
|
const previous = appendQueues.get(filePath) ?? Promise.resolve();
|
|
@@ -243,6 +316,14 @@ function optionalString(value, label) {
|
|
|
243
316
|
return undefined;
|
|
244
317
|
return requireString(value, label);
|
|
245
318
|
}
|
|
319
|
+
function optionalNonNegativeNumber(value, label) {
|
|
320
|
+
if (value === undefined)
|
|
321
|
+
return undefined;
|
|
322
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
|
|
323
|
+
throw new Error(`${label} must be a non-negative number.`);
|
|
324
|
+
}
|
|
325
|
+
return value;
|
|
326
|
+
}
|
|
246
327
|
function requireString(value, label) {
|
|
247
328
|
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
248
329
|
throw new Error(`${label} must be a non-empty string.`);
|
|
@@ -278,4 +359,25 @@ async function latestRecordHash(filePath) {
|
|
|
278
359
|
function sha256(value) {
|
|
279
360
|
return createHash('sha256').update(value).digest('hex');
|
|
280
361
|
}
|
|
362
|
+
function hashStatePayload(value) {
|
|
363
|
+
return sha256(stableStringify(stripHashFields(value)));
|
|
364
|
+
}
|
|
365
|
+
function stripHashFields(value) {
|
|
366
|
+
const clone = { ...value };
|
|
367
|
+
delete clone.prevHash;
|
|
368
|
+
delete clone.warnings;
|
|
369
|
+
return clone;
|
|
370
|
+
}
|
|
371
|
+
function stableStringify(value) {
|
|
372
|
+
if (Array.isArray(value)) {
|
|
373
|
+
return `[${value.map(stableStringify).join(',')}]`;
|
|
374
|
+
}
|
|
375
|
+
if (value && typeof value === 'object') {
|
|
376
|
+
const entries = Object.entries(value)
|
|
377
|
+
.filter(([, entryValue]) => entryValue !== undefined)
|
|
378
|
+
.sort(([left], [right]) => left.localeCompare(right));
|
|
379
|
+
return `{${entries.map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue)}`).join(',')}}`;
|
|
380
|
+
}
|
|
381
|
+
return JSON.stringify(value);
|
|
382
|
+
}
|
|
281
383
|
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAa1C,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AAC9E,MAAM,gBAAgB,GAAG,+CAA+C,CAAC;AACzE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AACjD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;AACzD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;AAExD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,QAAgB,EAAE,UAAkB,EAAE,MAAc;QAC9D,KAAK,CAAC,uBAAuB,QAAQ,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,QAAgB,EAAE,QAAgB,EAAE,MAAc;QAC5D,KAAK,CAAC,+BAA+B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,KAAoB;IACzE,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAqC;QAC/C,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC/E,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC5E,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC5E,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC7E,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;QACzC,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QACxF,UAAU,EAAE,yBAAyB,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC;QACpF,aAAa,EAAE,yBAAyB,CAAC,WAAW,CAAC,aAAa,EAAE,wBAAwB,CAAC;QAC7F,KAAK,EAAE,mBAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACpF,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACjF,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;KACzB,CAAC;IAEF,OAAO,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,QAAuB,EAAE;IAC5E,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAiB,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE5E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,IAAI,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QACvH,IAAI,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACpH,IAAI,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACpH,IAAI,eAAe,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAClF,IAAI,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACpH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAkB;IACrE,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAmC;QAC7C,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC1E,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC;QACnD,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,KAAK,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACvE,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxE,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACnF,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC;QAC3C,EAAE,EAAE,OAAO,UAAU,EAAE,EAAE;KAC1B,CAAC;IAEF,OAAO,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAqB,EAAE;IACzE,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAe,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEzE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,IAAI,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACpH,IAAI,eAAe,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACjG,IAAI,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACjH,IAAI,eAAe,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,YAAoB,EACpB,QAAW,EACX,KAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACpB,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO;YACL,GAAG,kBAAkB;YACrB,QAAQ,EAAE,gBAAgB,CAAC,kBAA6C,CAAC;SAC1E,CAAC;IACJ,CAAC;IAED,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,KAAgC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAqC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;QACrF,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,YAAY,uBAAuB,YAAY,GAAG,CAAC,CAAC;IAClG,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,QAAQ,EAAE,UAAU,IAAI,YAAY;QACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,YAAoB,EACpB,OAAU,EACV,QAA+B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAU;IAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACjG,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,YAAoB;IAC1E,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IAC5E,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAChG,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,QAAgB,EAChB,YAAoB,EACpB,OAAU,EACV,KAA4B;IAE5B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,cAAc,GAAG;QACrB,GAAG,UAAU;QACX,QAAQ,EAAE,gBAAgB,CAAC,UAAqC,CAAC;KACpE,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC;IAC5D,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,QAAgB,EAChB,QAAgB,EAChB,MAAS;IAET,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,QAAgB,EAChB,QAAgB,EAChB,MAAS;IAET,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,YAAgC,CAAC;IAErC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,IAAI,MAAM,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,QAAQ,CAAC,IAAI,CACX,+BAA+B,QAAQ,IAAI,KAAK,GAAG,CAAC,uBAAuB,gBAAgB,GAAG,CAC/F,CAAC;gBACF,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC;YAC1B,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB;gBAAE,MAAM,KAAK,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,IAAI,iBAAiB,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrF,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,UAA4C,EAAE;IACxF,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB;QAClD,CAAC,CAAC,+FAA+F;QACjG,CAAC,CAAC,sEAAsE,CAAC;IAC3E,MAAM,OAAO,GAAG,KAAK;SAClB,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;SAC/B,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;SACxE,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;IAEV,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,KAAK;SACT,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,KAAK,CAAC,IAAI,CAAC;SACX,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC,4DAA4D,KAAK,GAAG,CAAC,GAAG,CAAC;QAC5E,CAAC,CAAC,EAAE,CACP,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAoB;IAClD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,OAAO;QACL,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,wBAAwB,CAAC;QACjE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;QAC9D,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;QAC9D,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7E,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAkB;IAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;QAC5D,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;QAC5F,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACzD,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,MAAM,GAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAmB,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,MAAM,GAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAkB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,MAAM,GAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAsB,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAsB,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,KAAa;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc,EAAE,KAAa;IAC9D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,QAAgB,EAAE,UAAkB;IAC9E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,6BAA6B,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7C,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B;IACtD,OAAO,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,KAA8B;IACrD,MAAM,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC;IACtB,OAAO,KAAK,CAAC,QAAQ,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;aACpD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|