@git-stunts/git-warp 10.1.2 → 10.4.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.
- package/README.md +31 -4
- package/bin/warp-graph.js +1242 -59
- package/index.d.ts +31 -0
- package/index.js +4 -0
- package/package.json +13 -3
- package/src/domain/WarpGraph.js +487 -140
- package/src/domain/crdt/LWW.js +1 -1
- package/src/domain/crdt/ORSet.js +10 -6
- package/src/domain/crdt/VersionVector.js +5 -1
- package/src/domain/errors/EmptyMessageError.js +2 -4
- package/src/domain/errors/ForkError.js +4 -0
- package/src/domain/errors/IndexError.js +4 -0
- package/src/domain/errors/OperationAbortedError.js +4 -0
- package/src/domain/errors/QueryError.js +4 -0
- package/src/domain/errors/SchemaUnsupportedError.js +4 -0
- package/src/domain/errors/ShardCorruptionError.js +2 -6
- package/src/domain/errors/ShardLoadError.js +2 -6
- package/src/domain/errors/ShardValidationError.js +2 -7
- package/src/domain/errors/StorageError.js +2 -6
- package/src/domain/errors/SyncError.js +4 -0
- package/src/domain/errors/TraversalError.js +4 -0
- package/src/domain/errors/WarpError.js +2 -4
- package/src/domain/errors/WormholeError.js +4 -0
- package/src/domain/services/AnchorMessageCodec.js +1 -4
- package/src/domain/services/BitmapIndexBuilder.js +10 -6
- package/src/domain/services/BitmapIndexReader.js +27 -21
- package/src/domain/services/BoundaryTransitionRecord.js +22 -15
- package/src/domain/services/CheckpointMessageCodec.js +1 -7
- package/src/domain/services/CheckpointSerializerV5.js +20 -19
- package/src/domain/services/CheckpointService.js +18 -18
- package/src/domain/services/CommitDagTraversalService.js +13 -1
- package/src/domain/services/DagPathFinding.js +40 -18
- package/src/domain/services/DagTopology.js +7 -6
- package/src/domain/services/DagTraversal.js +5 -3
- package/src/domain/services/Frontier.js +7 -6
- package/src/domain/services/HealthCheckService.js +15 -14
- package/src/domain/services/HookInstaller.js +64 -13
- package/src/domain/services/HttpSyncServer.js +15 -14
- package/src/domain/services/IndexRebuildService.js +12 -12
- package/src/domain/services/IndexStalenessChecker.js +13 -6
- package/src/domain/services/JoinReducer.js +28 -27
- package/src/domain/services/LogicalTraversal.js +7 -6
- package/src/domain/services/MessageCodecInternal.js +2 -0
- package/src/domain/services/ObserverView.js +6 -6
- package/src/domain/services/PatchBuilderV2.js +9 -9
- package/src/domain/services/PatchMessageCodec.js +1 -7
- package/src/domain/services/ProvenanceIndex.js +6 -8
- package/src/domain/services/ProvenancePayload.js +1 -2
- package/src/domain/services/QueryBuilder.js +29 -23
- package/src/domain/services/StateDiff.js +7 -7
- package/src/domain/services/StateSerializerV5.js +8 -6
- package/src/domain/services/StreamingBitmapIndexBuilder.js +29 -23
- package/src/domain/services/SyncProtocol.js +23 -26
- package/src/domain/services/TemporalQuery.js +4 -3
- package/src/domain/services/TranslationCost.js +4 -4
- package/src/domain/services/WormholeService.js +19 -15
- package/src/domain/types/TickReceipt.js +10 -6
- package/src/domain/types/WarpTypesV2.js +2 -3
- package/src/domain/utils/CachedValue.js +1 -1
- package/src/domain/utils/LRUCache.js +3 -3
- package/src/domain/utils/MinHeap.js +2 -2
- package/src/domain/utils/RefLayout.js +106 -15
- package/src/domain/utils/WriterId.js +2 -2
- package/src/domain/utils/defaultCodec.js +9 -2
- package/src/domain/utils/defaultCrypto.js +36 -0
- package/src/domain/utils/parseCursorBlob.js +51 -0
- package/src/domain/utils/roaring.js +5 -5
- package/src/domain/utils/seekCacheKey.js +32 -0
- package/src/domain/warp/PatchSession.js +3 -3
- package/src/domain/warp/Writer.js +2 -2
- package/src/infrastructure/adapters/BunHttpAdapter.js +21 -8
- package/src/infrastructure/adapters/CasSeekCacheAdapter.js +311 -0
- package/src/infrastructure/adapters/ClockAdapter.js +2 -2
- package/src/infrastructure/adapters/DenoHttpAdapter.js +22 -9
- package/src/infrastructure/adapters/GitGraphAdapter.js +16 -27
- package/src/infrastructure/adapters/NodeCryptoAdapter.js +16 -3
- package/src/infrastructure/adapters/NodeHttpAdapter.js +33 -11
- package/src/infrastructure/adapters/WebCryptoAdapter.js +21 -11
- package/src/infrastructure/codecs/CborCodec.js +16 -8
- package/src/ports/BlobPort.js +2 -2
- package/src/ports/CodecPort.js +2 -2
- package/src/ports/CommitPort.js +8 -21
- package/src/ports/ConfigPort.js +3 -3
- package/src/ports/CryptoPort.js +7 -7
- package/src/ports/GraphPersistencePort.js +12 -14
- package/src/ports/HttpServerPort.js +1 -5
- package/src/ports/IndexStoragePort.js +1 -0
- package/src/ports/LoggerPort.js +9 -9
- package/src/ports/RefPort.js +5 -5
- package/src/ports/SeekCachePort.js +73 -0
- package/src/ports/TreePort.js +3 -3
- package/src/visualization/layouts/converters.js +14 -7
- package/src/visualization/layouts/elkAdapter.js +24 -11
- package/src/visualization/layouts/elkLayout.js +23 -7
- package/src/visualization/layouts/index.js +3 -3
- package/src/visualization/renderers/ascii/check.js +30 -17
- package/src/visualization/renderers/ascii/graph.js +122 -16
- package/src/visualization/renderers/ascii/history.js +29 -90
- package/src/visualization/renderers/ascii/index.js +1 -1
- package/src/visualization/renderers/ascii/info.js +9 -7
- package/src/visualization/renderers/ascii/materialize.js +20 -16
- package/src/visualization/renderers/ascii/opSummary.js +81 -0
- package/src/visualization/renderers/ascii/path.js +1 -1
- package/src/visualization/renderers/ascii/seek.js +344 -0
- package/src/visualization/renderers/ascii/table.js +1 -1
- package/src/visualization/renderers/svg/index.js +5 -1
package/index.d.ts
CHANGED
|
@@ -475,6 +475,30 @@ export class GlobalClockAdapter extends ClockPort {
|
|
|
475
475
|
timestamp(): string;
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
+
/**
|
|
479
|
+
* Port interface for seek materialization cache operations.
|
|
480
|
+
*
|
|
481
|
+
* Implementations store serialized WarpStateV5 snapshots keyed by
|
|
482
|
+
* (ceiling, frontier) tuples for near-instant restoration of
|
|
483
|
+
* previously-visited ticks during seek exploration.
|
|
484
|
+
*
|
|
485
|
+
* @abstract
|
|
486
|
+
*/
|
|
487
|
+
export abstract class SeekCachePort {
|
|
488
|
+
/** Retrieves a cached state buffer by key, or null on miss. */
|
|
489
|
+
abstract get(key: string): Promise<Buffer | null>;
|
|
490
|
+
/** Stores a state buffer under the given key. */
|
|
491
|
+
abstract set(key: string, buffer: Buffer): Promise<void>;
|
|
492
|
+
/** Checks whether a key exists in the cache index. */
|
|
493
|
+
abstract has(key: string): Promise<boolean>;
|
|
494
|
+
/** Lists all keys currently in the cache index. */
|
|
495
|
+
abstract keys(): Promise<string[]>;
|
|
496
|
+
/** Removes a single entry from the cache. */
|
|
497
|
+
abstract delete(key: string): Promise<boolean>;
|
|
498
|
+
/** Removes all entries from the cache. */
|
|
499
|
+
abstract clear(): Promise<void>;
|
|
500
|
+
}
|
|
501
|
+
|
|
478
502
|
/**
|
|
479
503
|
* Port interface for structured logging operations.
|
|
480
504
|
* @abstract
|
|
@@ -1450,6 +1474,7 @@ export default class WarpGraph {
|
|
|
1450
1474
|
clock?: ClockPort;
|
|
1451
1475
|
crypto?: CryptoPort;
|
|
1452
1476
|
codec?: unknown;
|
|
1477
|
+
seekCache?: SeekCachePort;
|
|
1453
1478
|
}): Promise<WarpGraph>;
|
|
1454
1479
|
|
|
1455
1480
|
/**
|
|
@@ -1462,6 +1487,12 @@ export default class WarpGraph {
|
|
|
1462
1487
|
*/
|
|
1463
1488
|
readonly writerId: string;
|
|
1464
1489
|
|
|
1490
|
+
/** Returns the attached seek cache, or null if none is set. */
|
|
1491
|
+
readonly seekCache: SeekCachePort | null;
|
|
1492
|
+
|
|
1493
|
+
/** Attaches (or detaches, with null) a persistent seek cache. */
|
|
1494
|
+
setSeekCache(cache: SeekCachePort | null): void;
|
|
1495
|
+
|
|
1465
1496
|
/**
|
|
1466
1497
|
* Creates a new patch for adding operations.
|
|
1467
1498
|
*/
|
package/index.js
CHANGED
|
@@ -32,6 +32,7 @@ import GraphPersistencePort from './src/ports/GraphPersistencePort.js';
|
|
|
32
32
|
import IndexStoragePort from './src/ports/IndexStoragePort.js';
|
|
33
33
|
import LoggerPort from './src/ports/LoggerPort.js';
|
|
34
34
|
import ClockPort from './src/ports/ClockPort.js';
|
|
35
|
+
import SeekCachePort from './src/ports/SeekCachePort.js';
|
|
35
36
|
import NoOpLogger from './src/infrastructure/adapters/NoOpLogger.js';
|
|
36
37
|
import ConsoleLogger, { LogLevel } from './src/infrastructure/adapters/ConsoleLogger.js';
|
|
37
38
|
import ClockAdapter from './src/infrastructure/adapters/ClockAdapter.js';
|
|
@@ -125,6 +126,9 @@ export {
|
|
|
125
126
|
|
|
126
127
|
// Clock infrastructure
|
|
127
128
|
ClockPort,
|
|
129
|
+
|
|
130
|
+
// Seek cache (RECALL)
|
|
131
|
+
SeekCachePort,
|
|
128
132
|
ClockAdapter,
|
|
129
133
|
PerformanceClockAdapter,
|
|
130
134
|
GlobalClockAdapter,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git-stunts/git-warp",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.4.2",
|
|
4
4
|
"description": "Deterministic WARP graph over Git: graph-native storage, traversal, and tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"url": "https://github.com/git-stunts/git-warp/issues"
|
|
15
15
|
},
|
|
16
16
|
"engines": {
|
|
17
|
-
"node": ">=
|
|
17
|
+
"node": ">=22.0.0"
|
|
18
18
|
},
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"main": "./index.js",
|
|
@@ -79,10 +79,20 @@
|
|
|
79
79
|
"prepare": "patch-package && node scripts/setup-hooks.js",
|
|
80
80
|
"prepack": "npm run lint && npm run test:local",
|
|
81
81
|
"install:git-warp": "bash scripts/install-git-warp.sh",
|
|
82
|
-
"uninstall:git-warp": "bash scripts/uninstall-git-warp.sh"
|
|
82
|
+
"uninstall:git-warp": "bash scripts/uninstall-git-warp.sh",
|
|
83
|
+
"test:node20": "docker compose -f docker-compose.test.yml --profile node20 run --build --rm test-node20",
|
|
84
|
+
"test:node22": "docker compose -f docker-compose.test.yml --profile node22 run --build --rm test-node22",
|
|
85
|
+
"test:bun": "docker compose -f docker-compose.test.yml --profile bun run --build --rm test-bun",
|
|
86
|
+
"test:deno": "docker compose -f docker-compose.test.yml --profile deno run --build --rm test-deno",
|
|
87
|
+
"test:matrix": "docker compose -f docker-compose.test.yml --profile full up --build --abort-on-container-exit",
|
|
88
|
+
"typecheck": "tsc --noEmit",
|
|
89
|
+
"typecheck:src": "tsc --noEmit -p tsconfig.src.json",
|
|
90
|
+
"typecheck:test": "tsc --noEmit -p tsconfig.test.json",
|
|
91
|
+
"typecheck:policy": "node scripts/ts-policy-check.js"
|
|
83
92
|
},
|
|
84
93
|
"dependencies": {
|
|
85
94
|
"@git-stunts/alfred": "^0.4.0",
|
|
95
|
+
"@git-stunts/git-cas": "^3.0.0",
|
|
86
96
|
"@git-stunts/plumbing": "^2.8.0",
|
|
87
97
|
"@git-stunts/trailer-codec": "^2.1.1",
|
|
88
98
|
"boxen": "^7.1.1",
|