@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/README.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
5
5
|
[](https://www.npmjs.com/package/@git-stunts/git-warp)
|
|
6
6
|
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img src="hero.gif" alt="git-warp CLI demo" width="600">
|
|
9
|
+
</p>
|
|
10
|
+
|
|
7
11
|
A multi-writer graph database that uses Git commits as its storage substrate. Graph state is stored as commits pointing to the empty tree (`4b825dc...`), making the data invisible to normal Git workflows while inheriting Git's content-addressing, cryptographic integrity, and distributed replication.
|
|
8
12
|
|
|
9
13
|
Writers collaborate without coordination using CRDTs (OR-Set for nodes/edges, LWW registers for properties). Every writer maintains an independent patch chain; materialization deterministically merges all writers into a single consistent view.
|
|
@@ -403,12 +407,28 @@ git warp history --writer alice
|
|
|
403
407
|
# Check graph health, status, and GC metrics
|
|
404
408
|
git warp check
|
|
405
409
|
|
|
410
|
+
# Time-travel: step through graph history
|
|
411
|
+
git warp seek --tick 3 # jump to Lamport tick 3
|
|
412
|
+
git warp seek --tick=+1 # step forward one tick
|
|
413
|
+
git warp seek --tick=-1 # step backward one tick
|
|
414
|
+
git warp seek --save before-refactor # bookmark current position
|
|
415
|
+
git warp seek --load before-refactor # restore bookmark
|
|
416
|
+
git warp seek --latest # return to present
|
|
417
|
+
git warp seek --clear-cache # purge persistent seek cache
|
|
418
|
+
git warp seek --no-persistent-cache --tick 5 # skip cache for one invocation
|
|
419
|
+
|
|
406
420
|
# Visualize query results (ascii output by default)
|
|
407
421
|
git warp query --match 'user:*' --outgoing manages --view
|
|
408
422
|
```
|
|
409
423
|
|
|
410
424
|
All commands accept `--repo <path>` to target a specific Git repository, `--json` for machine-readable output, and `--view [mode]` for visual output (ascii by default, or browser, svg:FILE, html:FILE).
|
|
411
425
|
|
|
426
|
+
When a seek cursor is active, `query`, `info`, `materialize`, and `history` automatically show state at the selected tick.
|
|
427
|
+
|
|
428
|
+
<p align="center">
|
|
429
|
+
<img src="docs/seek-demo.gif" alt="git warp seek time-travel demo" width="600">
|
|
430
|
+
</p>
|
|
431
|
+
|
|
412
432
|
## Architecture
|
|
413
433
|
|
|
414
434
|
The codebase follows hexagonal architecture with ports and adapters:
|
|
@@ -421,15 +441,17 @@ The codebase follows hexagonal architecture with ports and adapters:
|
|
|
421
441
|
- `CryptoPort` -- hash/HMAC operations
|
|
422
442
|
- `LoggerPort` -- structured logging
|
|
423
443
|
- `ClockPort` -- time measurement
|
|
444
|
+
- `SeekCachePort` -- persistent seek materialization cache
|
|
424
445
|
|
|
425
446
|
**Adapters** implement the ports:
|
|
426
447
|
- `GitGraphAdapter` -- wraps `@git-stunts/plumbing` for Git operations
|
|
427
448
|
- `ClockAdapter` -- unified clock (factory: `ClockAdapter.node()`, `ClockAdapter.global()`)
|
|
428
449
|
- `NodeCryptoAdapter` -- cryptographic operations via `node:crypto`
|
|
429
|
-
- `WebCryptoAdapter` -- cryptographic operations via Web Crypto API (browsers, Deno, Bun, Node
|
|
450
|
+
- `WebCryptoAdapter` -- cryptographic operations via Web Crypto API (browsers, Deno, Bun, Node 22+)
|
|
430
451
|
- `NodeHttpAdapter` / `BunHttpAdapter` / `DenoHttpAdapter` -- HTTP server per runtime
|
|
431
452
|
- `ConsoleLogger` / `NoOpLogger` -- logging implementations
|
|
432
453
|
- `CborCodec` -- CBOR serialization for patches
|
|
454
|
+
- `CasSeekCacheAdapter` -- persistent seek cache via `@git-stunts/git-cas`
|
|
433
455
|
|
|
434
456
|
**Domain** contains the core logic:
|
|
435
457
|
- `WarpGraph` -- public API facade
|
|
@@ -459,10 +481,15 @@ The codebase follows hexagonal architecture with ports and adapters:
|
|
|
459
481
|
## Testing
|
|
460
482
|
|
|
461
483
|
```bash
|
|
462
|
-
npm test # unit tests (vitest)
|
|
484
|
+
npm test # unit tests (vitest, Docker)
|
|
485
|
+
npm run test:local # unit tests without Docker
|
|
463
486
|
npm run lint # eslint
|
|
464
|
-
|
|
465
|
-
|
|
487
|
+
|
|
488
|
+
# Multi-runtime test matrix (Docker)
|
|
489
|
+
npm run test:node22 # Node 22: unit + integration + BATS CLI
|
|
490
|
+
npm run test:bun # Bun: API integration tests
|
|
491
|
+
npm run test:deno # Deno: API integration tests
|
|
492
|
+
npm run test:matrix # All runtimes in parallel
|
|
466
493
|
```
|
|
467
494
|
|
|
468
495
|
## AIΩN Foundations Series
|