ds4-context-core 0.3.0-alpha.5 → 0.3.0-beta.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.
Files changed (36) hide show
  1. package/README.md +4 -1
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/manifest/context-manifest-storage.d.ts +63 -0
  7. package/dist/manifest/context-manifest-storage.d.ts.map +1 -0
  8. package/dist/manifest/context-manifest-storage.js +137 -0
  9. package/dist/manifest/context-manifest-storage.js.map +1 -0
  10. package/dist/manifest/context-manifest.d.ts +3 -0
  11. package/dist/manifest/context-manifest.d.ts.map +1 -1
  12. package/dist/persistence/database-client-lease.d.ts +46 -0
  13. package/dist/persistence/database-client-lease.d.ts.map +1 -0
  14. package/dist/persistence/database-client-lease.js +274 -0
  15. package/dist/persistence/database-client-lease.js.map +1 -0
  16. package/dist/persistence/repositories/context-manifest-repository.d.ts +24 -4
  17. package/dist/persistence/repositories/context-manifest-repository.d.ts.map +1 -1
  18. package/dist/persistence/repositories/context-manifest-repository.js +243 -44
  19. package/dist/persistence/repositories/context-manifest-repository.js.map +1 -1
  20. package/dist/persistence/sqlite.d.ts +14 -0
  21. package/dist/persistence/sqlite.d.ts.map +1 -1
  22. package/dist/persistence/sqlite.js +91 -22
  23. package/dist/persistence/sqlite.js.map +1 -1
  24. package/dist/persistence/storage-diagnostics.d.ts +51 -0
  25. package/dist/persistence/storage-diagnostics.d.ts.map +1 -0
  26. package/dist/persistence/storage-diagnostics.js +172 -0
  27. package/dist/persistence/storage-diagnostics.js.map +1 -0
  28. package/dist/persistence/storage-maintenance.d.ts +68 -0
  29. package/dist/persistence/storage-maintenance.d.ts.map +1 -0
  30. package/dist/persistence/storage-maintenance.js +676 -0
  31. package/dist/persistence/storage-maintenance.js.map +1 -0
  32. package/dist/persistence/write-coordinator.d.ts +1 -0
  33. package/dist/persistence/write-coordinator.d.ts.map +1 -1
  34. package/dist/persistence/write-coordinator.js +35 -11
  35. package/dist/persistence/write-coordinator.js.map +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -22,7 +22,7 @@ The package contains deterministic context policy and rebuildable local projecti
22
22
  - optional continuation state decisions;
23
23
  - deterministic metadata-only context-quality replay and comparison;
24
24
  - bounded learned-ranking features, local training, checksummed artifacts and promotion evaluation;
25
- - rebuildable SQLite repositories.
25
+ - rebuildable SQLite repositories, bounded manifest projection, storage diagnostics, cooperative client leases, and offline copy–validate–swap maintenance.
26
26
 
27
27
  ## Install
28
28
 
@@ -65,8 +65,11 @@ import { rankCandidates } from "ds4-context-core/ranking/learned-ranker";
65
65
  import { runRuntimeAdapterConformance } from "ds4-context-core/adapter/conformance";
66
66
  import { LocalKvReuseController } from "ds4-context-core/adapter/local-kv";
67
67
  import { negotiateRuntimeCapabilities } from "ds4-context-core/adapter/runtime-adapter";
68
+ import { inspectStorage } from "ds4-context-core/persistence/storage-maintenance";
68
69
  ```
69
70
 
71
+ Storage maintenance APIs are runtime-neutral and never infer a database path. Adapters must expose them only through an explicit local administrative boundary; they are not model-callable. The Pi package provides the interactive `ds4-context-storage` CLI.
72
+
70
73
  ## Adapter boundary
71
74
 
72
75
  An adapter is responsible for:
package/dist/index.d.ts CHANGED
@@ -16,9 +16,11 @@ export * from "./core/model-awareness.ts";
16
16
  export * from "./core/model-profile.ts";
17
17
  export * from "./core/token-estimator.ts";
18
18
  export * from "./manifest/context-manifest.ts";
19
+ export * from "./manifest/context-manifest-storage.ts";
19
20
  export * from "./manifest/observer.ts";
20
21
  export * from "./memory/memory-manager.ts";
21
22
  export * from "./memory/memory-types.ts";
23
+ export * from "./persistence/database-client-lease.ts";
22
24
  export * from "./persistence/migrations.ts";
23
25
  export * from "./persistence/repositories/artifact-repository.ts";
24
26
  export * from "./persistence/repositories/context-manifest-repository.ts";
@@ -30,6 +32,8 @@ export * from "./persistence/repositories/project-knowledge-repository.ts";
30
32
  export * from "./persistence/repositories/session-index-repository.ts";
31
33
  export * from "./persistence/repositories/summary-repository.ts";
32
34
  export * from "./persistence/sqlite.ts";
35
+ export * from "./persistence/storage-diagnostics.ts";
36
+ export * from "./persistence/storage-maintenance.ts";
33
37
  export * from "./persistence/write-coordinator.ts";
34
38
  export * from "./planner/atomic-groups.ts";
35
39
  export * from "./planner/context-planner.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mDAAmD,CAAC;AAClE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,kDAAkD,CAAC;AACjE,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mDAAmD,CAAC;AAClE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,kDAAkD,CAAC;AACjE,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -16,9 +16,11 @@ export * from "./core/model-awareness.js";
16
16
  export * from "./core/model-profile.js";
17
17
  export * from "./core/token-estimator.js";
18
18
  export * from "./manifest/context-manifest.js";
19
+ export * from "./manifest/context-manifest-storage.js";
19
20
  export * from "./manifest/observer.js";
20
21
  export * from "./memory/memory-manager.js";
21
22
  export * from "./memory/memory-types.js";
23
+ export * from "./persistence/database-client-lease.js";
22
24
  export * from "./persistence/migrations.js";
23
25
  export * from "./persistence/repositories/artifact-repository.js";
24
26
  export * from "./persistence/repositories/context-manifest-repository.js";
@@ -30,6 +32,8 @@ export * from "./persistence/repositories/project-knowledge-repository.js";
30
32
  export * from "./persistence/repositories/session-index-repository.js";
31
33
  export * from "./persistence/repositories/summary-repository.js";
32
34
  export * from "./persistence/sqlite.js";
35
+ export * from "./persistence/storage-diagnostics.js";
36
+ export * from "./persistence/storage-maintenance.js";
33
37
  export * from "./persistence/write-coordinator.js";
34
38
  export * from "./planner/atomic-groups.js";
35
39
  export * from "./planner/context-planner.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mDAAmD,CAAC;AAClE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,kDAAkD,CAAC;AACjE,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mDAAmD,CAAC;AAClE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,kDAAkD,CAAC;AACjE,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { ContextManifest, ContextManifestItemKind } from "./context-manifest.ts";
2
+ import type { PrivacyClassification } from "../privacy/privacy-policy.ts";
3
+ export declare const PREFERRED_PERSISTED_MANIFEST_BYTES: number;
4
+ export declare const HARD_PERSISTED_MANIFEST_BYTES: number;
5
+ export declare const MAX_RETAINED_EXCLUDED_DETAILS = 256;
6
+ export type PersistedManifestCompleteness = "complete" | "excluded-rollup";
7
+ export interface PersistedManifestInventoryAggregate {
8
+ items: number;
9
+ tokens: number;
10
+ }
11
+ export interface PersistedManifestInventory {
12
+ schema: "ds4-context-manifest-inventory-v1";
13
+ completeness: PersistedManifestCompleteness;
14
+ sourceBytes: number;
15
+ included: {
16
+ total: number;
17
+ retained: number;
18
+ complete: true;
19
+ };
20
+ excluded: {
21
+ total: number;
22
+ retained: number;
23
+ omitted: number;
24
+ tokens: number;
25
+ digest: string;
26
+ byKind: Partial<Record<ContextManifestItemKind, PersistedManifestInventoryAggregate>>;
27
+ byClassification: Partial<Record<PrivacyClassification | "unspecified", number>>;
28
+ reasonDigest: string;
29
+ };
30
+ }
31
+ export interface StoredContextManifest {
32
+ manifest: ContextManifest;
33
+ inventory: PersistedManifestInventory;
34
+ }
35
+ export type ManifestSaveResult = {
36
+ status: "stored";
37
+ completeness: PersistedManifestCompleteness;
38
+ sourceBytes: number;
39
+ storedBytes: number;
40
+ prunedManifests: number;
41
+ prunedBytes: number;
42
+ } | {
43
+ status: "skipped-oversize";
44
+ sourceBytes: number;
45
+ projectedBytes: number;
46
+ };
47
+ export type PersistedManifestProjection = {
48
+ status: "stored";
49
+ manifest: ContextManifest;
50
+ serialized: string;
51
+ inventory: PersistedManifestInventory;
52
+ sourceBytes: number;
53
+ storedBytes: number;
54
+ } | {
55
+ status: "skipped-oversize";
56
+ sourceBytes: number;
57
+ projectedBytes: number;
58
+ };
59
+ export declare function utf8ByteLength(value: string): number;
60
+ export declare function completePersistedManifestInventory(manifest: ContextManifest, sourceBytes?: number): PersistedManifestInventory;
61
+ export declare function buildPersistedManifestProjection(manifest: ContextManifest): PersistedManifestProjection;
62
+ export declare function storedManifestInventory(manifest: ContextManifest, serializedBytes: number): PersistedManifestInventory;
63
+ //# sourceMappingURL=context-manifest-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-manifest-storage.d.ts","sourceRoot":"","sources":["../../src/manifest/context-manifest-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEf,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAG1E,eAAO,MAAM,kCAAkC,QAAa,CAAC;AAC7D,eAAO,MAAM,6BAA6B,QAAc,CAAC;AACzD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,MAAM,MAAM,6BAA6B,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE3E,MAAM,WAAW,mCAAmC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,mCAAmC,CAAC;IAC5C,YAAY,EAAE,6BAA6B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,IAAI,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC,CAAC,CAAC;QACtF,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,0BAA0B,CAAC;CACvC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,YAAY,EAAE,6BAA6B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEN,MAAM,MAAM,2BAA2B,GACnC;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,0BAA0B,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEN,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAgFD,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,eAAe,EACzB,WAAW,SAA2C,GACrD,0BAA0B,CAE5B;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,eAAe,GAAG,2BAA2B,CAgEvG;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,MAAM,GACtB,0BAA0B,CAI5B"}
@@ -0,0 +1,137 @@
1
+ import { createHash } from "node:crypto";
2
+ import { stableStringify } from "../shared/stable-json.js";
3
+ export const PREFERRED_PERSISTED_MANIFEST_BYTES = 256 * 1024;
4
+ export const HARD_PERSISTED_MANIFEST_BYTES = 1024 * 1024;
5
+ export const MAX_RETAINED_EXCLUDED_DETAILS = 256;
6
+ export function utf8ByteLength(value) {
7
+ return Buffer.byteLength(value, "utf8");
8
+ }
9
+ function sumTokens(items) {
10
+ return items.reduce((total, item) => total + item.tokens, 0);
11
+ }
12
+ function manifestItems(value) {
13
+ return Array.isArray(value) ? value : [];
14
+ }
15
+ function stableSequenceDigest(values, serialize) {
16
+ const hash = createHash("sha256");
17
+ hash.update(`items:${values.length};`, "utf8");
18
+ for (const value of values) {
19
+ const serialized = serialize(value);
20
+ hash.update(`${Buffer.byteLength(serialized, "utf8")}:`, "utf8");
21
+ hash.update(serialized, "utf8");
22
+ hash.update(";", "utf8");
23
+ }
24
+ return hash.digest("hex");
25
+ }
26
+ function inventoryFor(manifest, completeness, sourceBytes, retainedExcluded) {
27
+ const included = manifestItems(manifest.included);
28
+ const excluded = manifestItems(manifest.excluded);
29
+ const byKind = {};
30
+ const byClassification = {};
31
+ for (const item of excluded) {
32
+ const aggregate = byKind[item.kind] ?? { items: 0, tokens: 0 };
33
+ byKind[item.kind] = {
34
+ items: aggregate.items + 1,
35
+ tokens: aggregate.tokens + item.tokens,
36
+ };
37
+ const classification = item.classification ?? "unspecified";
38
+ byClassification[classification] = (byClassification[classification] ?? 0) + 1;
39
+ }
40
+ return {
41
+ schema: "ds4-context-manifest-inventory-v1",
42
+ completeness,
43
+ sourceBytes,
44
+ included: {
45
+ total: included.length,
46
+ retained: included.length,
47
+ complete: true,
48
+ },
49
+ excluded: {
50
+ total: excluded.length,
51
+ retained: retainedExcluded,
52
+ omitted: Math.max(0, excluded.length - retainedExcluded),
53
+ tokens: sumTokens(excluded),
54
+ digest: stableSequenceDigest(excluded, stableStringify),
55
+ byKind,
56
+ byClassification,
57
+ reasonDigest: stableSequenceDigest(excluded, (item) => stableStringify(item.reason)),
58
+ },
59
+ };
60
+ }
61
+ function excludedSample(items) {
62
+ if (items.length <= MAX_RETAINED_EXCLUDED_DETAILS)
63
+ return [...items];
64
+ const half = MAX_RETAINED_EXCLUDED_DETAILS / 2;
65
+ return [...items.slice(0, half), ...items.slice(-half)];
66
+ }
67
+ function withoutPersistedInventory(manifest) {
68
+ if (!("persistedInventory" in manifest))
69
+ return manifest;
70
+ const { persistedInventory: _persistedInventory, ...runtimeManifest } = manifest;
71
+ return runtimeManifest;
72
+ }
73
+ export function completePersistedManifestInventory(manifest, sourceBytes = utf8ByteLength(JSON.stringify(manifest))) {
74
+ return inventoryFor(manifest, "complete", sourceBytes, manifestItems(manifest.excluded).length);
75
+ }
76
+ export function buildPersistedManifestProjection(manifest) {
77
+ if (manifest.persistedInventory?.schema === "ds4-context-manifest-inventory-v1"
78
+ && manifest.persistedInventory.completeness === "excluded-rollup") {
79
+ const serialized = JSON.stringify(manifest);
80
+ const storedBytes = utf8ByteLength(serialized);
81
+ if (storedBytes > HARD_PERSISTED_MANIFEST_BYTES) {
82
+ return {
83
+ status: "skipped-oversize",
84
+ sourceBytes: manifest.persistedInventory.sourceBytes,
85
+ projectedBytes: storedBytes,
86
+ };
87
+ }
88
+ return {
89
+ status: "stored",
90
+ manifest,
91
+ serialized,
92
+ inventory: manifest.persistedInventory,
93
+ sourceBytes: manifest.persistedInventory.sourceBytes,
94
+ storedBytes,
95
+ };
96
+ }
97
+ const runtimeManifest = withoutPersistedInventory(manifest);
98
+ const completeSerialized = JSON.stringify(runtimeManifest);
99
+ const sourceBytes = utf8ByteLength(completeSerialized);
100
+ if (sourceBytes <= PREFERRED_PERSISTED_MANIFEST_BYTES) {
101
+ return {
102
+ status: "stored",
103
+ manifest: runtimeManifest,
104
+ serialized: completeSerialized,
105
+ inventory: completePersistedManifestInventory(runtimeManifest, sourceBytes),
106
+ sourceBytes,
107
+ storedBytes: sourceBytes,
108
+ };
109
+ }
110
+ const sampledExcluded = excludedSample(manifestItems(runtimeManifest.excluded));
111
+ const inventory = inventoryFor(runtimeManifest, "excluded-rollup", sourceBytes, sampledExcluded.length);
112
+ const projectedManifest = {
113
+ ...runtimeManifest,
114
+ excluded: sampledExcluded,
115
+ persistedInventory: inventory,
116
+ };
117
+ const projectedSerialized = JSON.stringify(projectedManifest);
118
+ const projectedBytes = utf8ByteLength(projectedSerialized);
119
+ if (projectedBytes > HARD_PERSISTED_MANIFEST_BYTES) {
120
+ return { status: "skipped-oversize", sourceBytes, projectedBytes };
121
+ }
122
+ return {
123
+ status: "stored",
124
+ manifest: projectedManifest,
125
+ serialized: projectedSerialized,
126
+ inventory,
127
+ sourceBytes,
128
+ storedBytes: projectedBytes,
129
+ };
130
+ }
131
+ export function storedManifestInventory(manifest, serializedBytes) {
132
+ const inventory = manifest.persistedInventory;
133
+ if (inventory?.schema === "ds4-context-manifest-inventory-v1")
134
+ return inventory;
135
+ return completePersistedManifestInventory(manifest, serializedBytes);
136
+ }
137
+ //# sourceMappingURL=context-manifest-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-manifest-storage.js","sourceRoot":"","sources":["../../src/manifest/context-manifest-storage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { NativeContinuationManifest } from "../continuation/native-continuation.ts";
2
+ import type { PersistedManifestInventory } from "./context-manifest-storage.ts";
2
3
  import type { AdaptiveModelLimits, ModelCalibrationAnalysis } from "../core/model-awareness.ts";
3
4
  import type { PrivacyClassification, ProviderDestination } from "../privacy/privacy-policy.ts";
4
5
  import type { RankingDiagnostics } from "../ranking/learned-ranker.ts";
@@ -165,6 +166,8 @@ export interface ContextManifest {
165
166
  modelAwareness?: ModelAwarenessManifest;
166
167
  ranking?: RankingDiagnostics;
167
168
  nativeContinuation?: NativeContinuationManifest;
169
+ /** Present only when the persisted excluded inventory is a deterministic rollup. */
170
+ persistedInventory?: PersistedManifestInventory;
168
171
  composition: ContextManifestComposition;
169
172
  planning?: ContextManifestPlanning;
170
173
  policyVersion: string;
@@ -1 +1 @@
1
- {"version":3,"file":"context-manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/context-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/context-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,MAAM,GACN,KAAK,GACL,QAAQ,GACR,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,uBAAuB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,SAAS,GAAG,sBAAsB,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,UAAU,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAChE;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,wBAAwB,CAAC;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAChD,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAChD,WAAW,EAAE,0BAA0B,CAAC;IACxC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,46 @@
1
+ export type ProcessProbeResult = "alive" | "dead" | "ambiguous";
2
+ export type ProcessProbe = (pid: number) => ProcessProbeResult;
3
+ export interface DatabaseProtocolPaths {
4
+ clientsDirectory: string;
5
+ maintenanceLock: string;
6
+ maintenanceState: string;
7
+ }
8
+ export interface DatabaseClientLeaseOptions {
9
+ clientId?: string;
10
+ pid?: number;
11
+ createdAt?: number;
12
+ processProbe?: ProcessProbe;
13
+ }
14
+ export interface DatabaseMaintenanceLockOptions {
15
+ ownerId?: string;
16
+ pid?: number;
17
+ createdAt?: number;
18
+ processProbe?: ProcessProbe;
19
+ replaceStaleLock?: boolean;
20
+ }
21
+ export declare class DatabaseProtocolError extends Error {
22
+ readonly category: string;
23
+ constructor(category: string);
24
+ }
25
+ export interface DatabaseClientScan {
26
+ active: number;
27
+ staleRemoved: number;
28
+ ambiguous: number;
29
+ }
30
+ export interface DatabaseClientLease {
31
+ readonly clientId: string;
32
+ readonly path: string;
33
+ release(): void;
34
+ }
35
+ export interface DatabaseMaintenanceLock {
36
+ readonly ownerId: string;
37
+ readonly path: string;
38
+ readonly clients: DatabaseClientScan;
39
+ release(): void;
40
+ }
41
+ export declare function databaseProtocolPaths(databasePath: string): DatabaseProtocolPaths;
42
+ export declare function databasePathFingerprint(databasePath: string): string;
43
+ export declare function probeProcess(pid: number): ProcessProbeResult;
44
+ export declare function createDatabaseClientLease(databasePath: string, options?: DatabaseClientLeaseOptions): DatabaseClientLease;
45
+ export declare function acquireDatabaseMaintenanceLock(databasePath: string, options?: DatabaseMaintenanceLockOptions): DatabaseMaintenanceLock;
46
+ //# sourceMappingURL=database-client-lease.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-client-lease.d.ts","sourceRoot":"","sources":["../../src/persistence/database-client-lease.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,kBAAkB,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkBD,qBAAa,qBAAsB,SAAQ,KAAK;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAItC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAMjF;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEpE;AAwED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAS5D;AA+CD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CA8CrB;AAsBD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAmDzB"}