ds4-context-core 0.3.0-alpha.4 → 0.3.0-beta.1

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 (40) hide show
  1. package/README.md +5 -2
  2. package/dist/compaction/segmentation.d.ts +14 -0
  3. package/dist/compaction/segmentation.d.ts.map +1 -0
  4. package/dist/compaction/segmentation.js +81 -0
  5. package/dist/compaction/segmentation.js.map +1 -0
  6. package/dist/index.d.ts +5 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +5 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/manifest/context-manifest-storage.d.ts +63 -0
  11. package/dist/manifest/context-manifest-storage.d.ts.map +1 -0
  12. package/dist/manifest/context-manifest-storage.js +137 -0
  13. package/dist/manifest/context-manifest-storage.js.map +1 -0
  14. package/dist/manifest/context-manifest.d.ts +3 -0
  15. package/dist/manifest/context-manifest.d.ts.map +1 -1
  16. package/dist/persistence/database-client-lease.d.ts +46 -0
  17. package/dist/persistence/database-client-lease.d.ts.map +1 -0
  18. package/dist/persistence/database-client-lease.js +274 -0
  19. package/dist/persistence/database-client-lease.js.map +1 -0
  20. package/dist/persistence/repositories/context-manifest-repository.d.ts +24 -4
  21. package/dist/persistence/repositories/context-manifest-repository.d.ts.map +1 -1
  22. package/dist/persistence/repositories/context-manifest-repository.js +243 -44
  23. package/dist/persistence/repositories/context-manifest-repository.js.map +1 -1
  24. package/dist/persistence/sqlite.d.ts +14 -0
  25. package/dist/persistence/sqlite.d.ts.map +1 -1
  26. package/dist/persistence/sqlite.js +91 -22
  27. package/dist/persistence/sqlite.js.map +1 -1
  28. package/dist/persistence/storage-diagnostics.d.ts +51 -0
  29. package/dist/persistence/storage-diagnostics.d.ts.map +1 -0
  30. package/dist/persistence/storage-diagnostics.js +172 -0
  31. package/dist/persistence/storage-diagnostics.js.map +1 -0
  32. package/dist/persistence/storage-maintenance.d.ts +68 -0
  33. package/dist/persistence/storage-maintenance.d.ts.map +1 -0
  34. package/dist/persistence/storage-maintenance.js +676 -0
  35. package/dist/persistence/storage-maintenance.js.map +1 -0
  36. package/dist/persistence/write-coordinator.d.ts +1 -0
  37. package/dist/persistence/write-coordinator.d.ts.map +1 -1
  38. package/dist/persistence/write-coordinator.js +35 -11
  39. package/dist/persistence/write-coordinator.js.map +1 -1
  40. package/package.json +1 -1
package/README.md CHANGED
@@ -12,7 +12,7 @@ The package contains deterministic context policy and rebuildable local projecti
12
12
  - model profiles, calibration and context budgets;
13
13
  - deterministic planning and atomic tool groups;
14
14
  - Context Manifest generation;
15
- - validated hierarchical compaction records;
15
+ - validated hierarchical compaction records and tool-exchange-safe source segmentation;
16
16
  - exact, FTS and deterministic hybrid rank fusion;
17
17
  - runtime-neutral embedding port, derived vector storage and quality comparison;
18
18
  - runtime-neutral structural symbol parsing with deterministic regex fallback;
@@ -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:
@@ -0,0 +1,14 @@
1
+ export interface CompactionAtomicGroup {
2
+ messageIndices: number[];
3
+ startIndex: number;
4
+ endIndex: number;
5
+ containsToolExchange: boolean;
6
+ }
7
+ /**
8
+ * Build the smallest contiguous message groups that cannot be separated without
9
+ * splitting a tool call from one or more matching results. Conversation turns
10
+ * remain soft boundaries: an exceptionally large turn may be divided between
11
+ * complete tool exchanges, while every individual message remains indivisible.
12
+ */
13
+ export declare function buildCompactionAtomicGroups(messages: readonly unknown[]): CompactionAtomicGroup[];
14
+ //# sourceMappingURL=segmentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentation.d.ts","sourceRoot":"","sources":["../../src/compaction/segmentation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAuCD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAmDjG"}
@@ -0,0 +1,81 @@
1
+ function isRecord(value) {
2
+ return value !== null && typeof value === "object" && !Array.isArray(value);
3
+ }
4
+ function toolRelations(messages) {
5
+ const calls = new Map();
6
+ const results = new Map();
7
+ for (let index = 0; index < messages.length; index++) {
8
+ const message = messages[index];
9
+ if (!isRecord(message))
10
+ continue;
11
+ if (message.role === "assistant" && Array.isArray(message.content)) {
12
+ for (const block of message.content) {
13
+ if (!isRecord(block) || block.type !== "toolCall" || typeof block.id !== "string")
14
+ continue;
15
+ calls.set(block.id, index);
16
+ }
17
+ }
18
+ if (message.role === "toolResult" && typeof message.toolCallId === "string") {
19
+ const indices = results.get(message.toolCallId) ?? [];
20
+ indices.push(index);
21
+ results.set(message.toolCallId, indices);
22
+ }
23
+ }
24
+ return [...calls].flatMap(([id, callIndex]) => {
25
+ const resultIndices = results.get(id);
26
+ return resultIndices && resultIndices.length > 0 ? [{ callIndex, resultIndices }] : [];
27
+ });
28
+ }
29
+ /**
30
+ * Build the smallest contiguous message groups that cannot be separated without
31
+ * splitting a tool call from one or more matching results. Conversation turns
32
+ * remain soft boundaries: an exceptionally large turn may be divided between
33
+ * complete tool exchanges, while every individual message remains indivisible.
34
+ */
35
+ export function buildCompactionAtomicGroups(messages) {
36
+ if (messages.length === 0)
37
+ return [];
38
+ const relationRanges = toolRelations(messages)
39
+ .map((relation) => ({
40
+ startIndex: Math.min(relation.callIndex, ...relation.resultIndices),
41
+ endIndex: Math.max(relation.callIndex, ...relation.resultIndices),
42
+ }))
43
+ .sort((left, right) => left.startIndex - right.startIndex || left.endIndex - right.endIndex);
44
+ const mergedRanges = [];
45
+ for (const range of relationRanges) {
46
+ const previous = mergedRanges.at(-1);
47
+ if (previous && range.startIndex <= previous.endIndex) {
48
+ previous.endIndex = Math.max(previous.endIndex, range.endIndex);
49
+ }
50
+ else {
51
+ mergedRanges.push({ ...range });
52
+ }
53
+ }
54
+ const groups = [];
55
+ let rangeIndex = 0;
56
+ let messageIndex = 0;
57
+ while (messageIndex < messages.length) {
58
+ const range = mergedRanges[rangeIndex];
59
+ if (range && messageIndex === range.startIndex) {
60
+ const messageIndices = Array.from({ length: range.endIndex - range.startIndex + 1 }, (_, offset) => range.startIndex + offset);
61
+ groups.push({
62
+ messageIndices,
63
+ startIndex: range.startIndex,
64
+ endIndex: range.endIndex,
65
+ containsToolExchange: true,
66
+ });
67
+ messageIndex = range.endIndex + 1;
68
+ rangeIndex++;
69
+ continue;
70
+ }
71
+ groups.push({
72
+ messageIndices: [messageIndex],
73
+ startIndex: messageIndex,
74
+ endIndex: messageIndex,
75
+ containsToolExchange: false,
76
+ });
77
+ messageIndex++;
78
+ }
79
+ return groups;
80
+ }
81
+ //# sourceMappingURL=segmentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentation.js","sourceRoot":"","sources":["../../src/compaction/segmentation.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from "./adapter/runtime-adapter.ts";
4
4
  export * from "./artifacts/artifact-manager.ts";
5
5
  export * from "./artifacts/artifact-store.ts";
6
6
  export * from "./compaction/compaction-record.ts";
7
+ export * from "./compaction/segmentation.ts";
7
8
  export * from "./compaction/summary-contract.ts";
8
9
  export * from "./compaction/summary-graph.ts";
9
10
  export * from "./config/config-loader.ts";
@@ -15,9 +16,11 @@ export * from "./core/model-awareness.ts";
15
16
  export * from "./core/model-profile.ts";
16
17
  export * from "./core/token-estimator.ts";
17
18
  export * from "./manifest/context-manifest.ts";
19
+ export * from "./manifest/context-manifest-storage.ts";
18
20
  export * from "./manifest/observer.ts";
19
21
  export * from "./memory/memory-manager.ts";
20
22
  export * from "./memory/memory-types.ts";
23
+ export * from "./persistence/database-client-lease.ts";
21
24
  export * from "./persistence/migrations.ts";
22
25
  export * from "./persistence/repositories/artifact-repository.ts";
23
26
  export * from "./persistence/repositories/context-manifest-repository.ts";
@@ -29,6 +32,8 @@ export * from "./persistence/repositories/project-knowledge-repository.ts";
29
32
  export * from "./persistence/repositories/session-index-repository.ts";
30
33
  export * from "./persistence/repositories/summary-repository.ts";
31
34
  export * from "./persistence/sqlite.ts";
35
+ export * from "./persistence/storage-diagnostics.ts";
36
+ export * from "./persistence/storage-maintenance.ts";
32
37
  export * from "./persistence/write-coordinator.ts";
33
38
  export * from "./planner/atomic-groups.ts";
34
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,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
@@ -4,6 +4,7 @@ export * from "./adapter/runtime-adapter.js";
4
4
  export * from "./artifacts/artifact-manager.js";
5
5
  export * from "./artifacts/artifact-store.js";
6
6
  export * from "./compaction/compaction-record.js";
7
+ export * from "./compaction/segmentation.js";
7
8
  export * from "./compaction/summary-contract.js";
8
9
  export * from "./compaction/summary-graph.js";
9
10
  export * from "./config/config-loader.js";
@@ -15,9 +16,11 @@ export * from "./core/model-awareness.js";
15
16
  export * from "./core/model-profile.js";
16
17
  export * from "./core/token-estimator.js";
17
18
  export * from "./manifest/context-manifest.js";
19
+ export * from "./manifest/context-manifest-storage.js";
18
20
  export * from "./manifest/observer.js";
19
21
  export * from "./memory/memory-manager.js";
20
22
  export * from "./memory/memory-types.js";
23
+ export * from "./persistence/database-client-lease.js";
21
24
  export * from "./persistence/migrations.js";
22
25
  export * from "./persistence/repositories/artifact-repository.js";
23
26
  export * from "./persistence/repositories/context-manifest-repository.js";
@@ -29,6 +32,8 @@ export * from "./persistence/repositories/project-knowledge-repository.js";
29
32
  export * from "./persistence/repositories/session-index-repository.js";
30
33
  export * from "./persistence/repositories/summary-repository.js";
31
34
  export * from "./persistence/sqlite.js";
35
+ export * from "./persistence/storage-diagnostics.js";
36
+ export * from "./persistence/storage-maintenance.js";
32
37
  export * from "./persistence/write-coordinator.js";
33
38
  export * from "./planner/atomic-groups.js";
34
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,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"}