gitx.do 0.0.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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/durable-object/object-store.d.ts +113 -0
  4. package/dist/durable-object/object-store.d.ts.map +1 -0
  5. package/dist/durable-object/object-store.js +387 -0
  6. package/dist/durable-object/object-store.js.map +1 -0
  7. package/dist/durable-object/schema.d.ts +17 -0
  8. package/dist/durable-object/schema.d.ts.map +1 -0
  9. package/dist/durable-object/schema.js +43 -0
  10. package/dist/durable-object/schema.js.map +1 -0
  11. package/dist/durable-object/wal.d.ts +111 -0
  12. package/dist/durable-object/wal.d.ts.map +1 -0
  13. package/dist/durable-object/wal.js +200 -0
  14. package/dist/durable-object/wal.js.map +1 -0
  15. package/dist/index.d.ts +24 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +101 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp/adapter.d.ts +231 -0
  20. package/dist/mcp/adapter.d.ts.map +1 -0
  21. package/dist/mcp/adapter.js +502 -0
  22. package/dist/mcp/adapter.js.map +1 -0
  23. package/dist/mcp/sandbox.d.ts +261 -0
  24. package/dist/mcp/sandbox.d.ts.map +1 -0
  25. package/dist/mcp/sandbox.js +983 -0
  26. package/dist/mcp/sandbox.js.map +1 -0
  27. package/dist/mcp/sdk-adapter.d.ts +413 -0
  28. package/dist/mcp/sdk-adapter.d.ts.map +1 -0
  29. package/dist/mcp/sdk-adapter.js +672 -0
  30. package/dist/mcp/sdk-adapter.js.map +1 -0
  31. package/dist/mcp/tools.d.ts +133 -0
  32. package/dist/mcp/tools.d.ts.map +1 -0
  33. package/dist/mcp/tools.js +1604 -0
  34. package/dist/mcp/tools.js.map +1 -0
  35. package/dist/ops/blame.d.ts +148 -0
  36. package/dist/ops/blame.d.ts.map +1 -0
  37. package/dist/ops/blame.js +754 -0
  38. package/dist/ops/blame.js.map +1 -0
  39. package/dist/ops/branch.d.ts +215 -0
  40. package/dist/ops/branch.d.ts.map +1 -0
  41. package/dist/ops/branch.js +608 -0
  42. package/dist/ops/branch.js.map +1 -0
  43. package/dist/ops/commit-traversal.d.ts +209 -0
  44. package/dist/ops/commit-traversal.d.ts.map +1 -0
  45. package/dist/ops/commit-traversal.js +755 -0
  46. package/dist/ops/commit-traversal.js.map +1 -0
  47. package/dist/ops/commit.d.ts +221 -0
  48. package/dist/ops/commit.d.ts.map +1 -0
  49. package/dist/ops/commit.js +606 -0
  50. package/dist/ops/commit.js.map +1 -0
  51. package/dist/ops/merge-base.d.ts +223 -0
  52. package/dist/ops/merge-base.d.ts.map +1 -0
  53. package/dist/ops/merge-base.js +581 -0
  54. package/dist/ops/merge-base.js.map +1 -0
  55. package/dist/ops/merge.d.ts +385 -0
  56. package/dist/ops/merge.d.ts.map +1 -0
  57. package/dist/ops/merge.js +1203 -0
  58. package/dist/ops/merge.js.map +1 -0
  59. package/dist/ops/tag.d.ts +182 -0
  60. package/dist/ops/tag.d.ts.map +1 -0
  61. package/dist/ops/tag.js +608 -0
  62. package/dist/ops/tag.js.map +1 -0
  63. package/dist/ops/tree-builder.d.ts +82 -0
  64. package/dist/ops/tree-builder.d.ts.map +1 -0
  65. package/dist/ops/tree-builder.js +246 -0
  66. package/dist/ops/tree-builder.js.map +1 -0
  67. package/dist/ops/tree-diff.d.ts +243 -0
  68. package/dist/ops/tree-diff.d.ts.map +1 -0
  69. package/dist/ops/tree-diff.js +657 -0
  70. package/dist/ops/tree-diff.js.map +1 -0
  71. package/dist/pack/delta.d.ts +68 -0
  72. package/dist/pack/delta.d.ts.map +1 -0
  73. package/dist/pack/delta.js +343 -0
  74. package/dist/pack/delta.js.map +1 -0
  75. package/dist/pack/format.d.ts +84 -0
  76. package/dist/pack/format.d.ts.map +1 -0
  77. package/dist/pack/format.js +261 -0
  78. package/dist/pack/format.js.map +1 -0
  79. package/dist/pack/full-generation.d.ts +327 -0
  80. package/dist/pack/full-generation.d.ts.map +1 -0
  81. package/dist/pack/full-generation.js +1159 -0
  82. package/dist/pack/full-generation.js.map +1 -0
  83. package/dist/pack/generation.d.ts +118 -0
  84. package/dist/pack/generation.d.ts.map +1 -0
  85. package/dist/pack/generation.js +459 -0
  86. package/dist/pack/generation.js.map +1 -0
  87. package/dist/pack/index.d.ts +181 -0
  88. package/dist/pack/index.d.ts.map +1 -0
  89. package/dist/pack/index.js +552 -0
  90. package/dist/pack/index.js.map +1 -0
  91. package/dist/refs/branch.d.ts +224 -0
  92. package/dist/refs/branch.d.ts.map +1 -0
  93. package/dist/refs/branch.js +170 -0
  94. package/dist/refs/branch.js.map +1 -0
  95. package/dist/refs/storage.d.ts +208 -0
  96. package/dist/refs/storage.d.ts.map +1 -0
  97. package/dist/refs/storage.js +421 -0
  98. package/dist/refs/storage.js.map +1 -0
  99. package/dist/refs/tag.d.ts +230 -0
  100. package/dist/refs/tag.d.ts.map +1 -0
  101. package/dist/refs/tag.js +188 -0
  102. package/dist/refs/tag.js.map +1 -0
  103. package/dist/storage/lru-cache.d.ts +188 -0
  104. package/dist/storage/lru-cache.d.ts.map +1 -0
  105. package/dist/storage/lru-cache.js +410 -0
  106. package/dist/storage/lru-cache.js.map +1 -0
  107. package/dist/storage/object-index.d.ts +140 -0
  108. package/dist/storage/object-index.d.ts.map +1 -0
  109. package/dist/storage/object-index.js +166 -0
  110. package/dist/storage/object-index.js.map +1 -0
  111. package/dist/storage/r2-pack.d.ts +394 -0
  112. package/dist/storage/r2-pack.d.ts.map +1 -0
  113. package/dist/storage/r2-pack.js +1062 -0
  114. package/dist/storage/r2-pack.js.map +1 -0
  115. package/dist/tiered/cdc-pipeline.d.ts +316 -0
  116. package/dist/tiered/cdc-pipeline.d.ts.map +1 -0
  117. package/dist/tiered/cdc-pipeline.js +771 -0
  118. package/dist/tiered/cdc-pipeline.js.map +1 -0
  119. package/dist/tiered/migration.d.ts +242 -0
  120. package/dist/tiered/migration.d.ts.map +1 -0
  121. package/dist/tiered/migration.js +592 -0
  122. package/dist/tiered/migration.js.map +1 -0
  123. package/dist/tiered/parquet-writer.d.ts +248 -0
  124. package/dist/tiered/parquet-writer.d.ts.map +1 -0
  125. package/dist/tiered/parquet-writer.js +555 -0
  126. package/dist/tiered/parquet-writer.js.map +1 -0
  127. package/dist/tiered/read-path.d.ts +141 -0
  128. package/dist/tiered/read-path.d.ts.map +1 -0
  129. package/dist/tiered/read-path.js +204 -0
  130. package/dist/tiered/read-path.js.map +1 -0
  131. package/dist/types/objects.d.ts +53 -0
  132. package/dist/types/objects.d.ts.map +1 -0
  133. package/dist/types/objects.js +291 -0
  134. package/dist/types/objects.js.map +1 -0
  135. package/dist/types/storage.d.ts +117 -0
  136. package/dist/types/storage.d.ts.map +1 -0
  137. package/dist/types/storage.js +8 -0
  138. package/dist/types/storage.js.map +1 -0
  139. package/dist/utils/hash.d.ts +31 -0
  140. package/dist/utils/hash.d.ts.map +1 -0
  141. package/dist/utils/hash.js +60 -0
  142. package/dist/utils/hash.js.map +1 -0
  143. package/dist/utils/sha1.d.ts +26 -0
  144. package/dist/utils/sha1.d.ts.map +1 -0
  145. package/dist/utils/sha1.js +127 -0
  146. package/dist/utils/sha1.js.map +1 -0
  147. package/dist/wire/capabilities.d.ts +236 -0
  148. package/dist/wire/capabilities.d.ts.map +1 -0
  149. package/dist/wire/capabilities.js +437 -0
  150. package/dist/wire/capabilities.js.map +1 -0
  151. package/dist/wire/pkt-line.d.ts +67 -0
  152. package/dist/wire/pkt-line.d.ts.map +1 -0
  153. package/dist/wire/pkt-line.js +145 -0
  154. package/dist/wire/pkt-line.js.map +1 -0
  155. package/dist/wire/receive-pack.d.ts +302 -0
  156. package/dist/wire/receive-pack.d.ts.map +1 -0
  157. package/dist/wire/receive-pack.js +885 -0
  158. package/dist/wire/receive-pack.js.map +1 -0
  159. package/dist/wire/smart-http.d.ts +321 -0
  160. package/dist/wire/smart-http.d.ts.map +1 -0
  161. package/dist/wire/smart-http.js +654 -0
  162. package/dist/wire/smart-http.js.map +1 -0
  163. package/dist/wire/upload-pack.d.ts +333 -0
  164. package/dist/wire/upload-pack.d.ts.map +1 -0
  165. package/dist/wire/upload-pack.js +850 -0
  166. package/dist/wire/upload-pack.js.map +1 -0
  167. package/package.json +61 -0
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Git Tag Operations
3
+ *
4
+ * Handles creation, deletion, and management of Git tags.
5
+ * Supports both lightweight tags (refs pointing to commits)
6
+ * and annotated tags (tag objects with metadata).
7
+ */
8
+ /**
9
+ * Error thrown when a tag operation fails
10
+ */
11
+ export class TagError extends Error {
12
+ code;
13
+ tagName;
14
+ constructor(message, code, tagName) {
15
+ super(message);
16
+ this.code = code;
17
+ this.tagName = tagName;
18
+ this.name = 'TagError';
19
+ }
20
+ }
21
+ /**
22
+ * Tag manager for handling Git tag operations
23
+ */
24
+ export class TagManager {
25
+ constructor(refStorage, objectStorage, gpgSigner) {
26
+ void refStorage; // Suppress unused variable warning until implementation
27
+ void objectStorage;
28
+ void gpgSigner;
29
+ // TODO: Implement in GREEN phase
30
+ }
31
+ /**
32
+ * Create a new tag
33
+ */
34
+ async createTag(_name, _target, _options) {
35
+ // TODO: Implement in GREEN phase
36
+ throw new Error('Not implemented');
37
+ }
38
+ /**
39
+ * Delete a tag
40
+ */
41
+ async deleteTag(_name, _options) {
42
+ // TODO: Implement in GREEN phase
43
+ throw new Error('Not implemented');
44
+ }
45
+ /**
46
+ * List all tags
47
+ */
48
+ async listTags(_options) {
49
+ // TODO: Implement in GREEN phase
50
+ throw new Error('Not implemented');
51
+ }
52
+ /**
53
+ * Get a tag by name
54
+ */
55
+ async getTag(_name, _options) {
56
+ // TODO: Implement in GREEN phase
57
+ throw new Error('Not implemented');
58
+ }
59
+ /**
60
+ * Check if a tag exists
61
+ */
62
+ async tagExists(_name) {
63
+ // TODO: Implement in GREEN phase
64
+ throw new Error('Not implemented');
65
+ }
66
+ /**
67
+ * Get the target (commit SHA) that a tag points to
68
+ */
69
+ async getTagTarget(_name) {
70
+ // TODO: Implement in GREEN phase
71
+ throw new Error('Not implemented');
72
+ }
73
+ /**
74
+ * Verify a tag's GPG signature
75
+ */
76
+ async verifyTag(_name) {
77
+ // TODO: Implement in GREEN phase
78
+ throw new Error('Not implemented');
79
+ }
80
+ /**
81
+ * Check if a tag is annotated
82
+ */
83
+ async isAnnotatedTag(_name) {
84
+ // TODO: Implement in GREEN phase
85
+ throw new Error('Not implemented');
86
+ }
87
+ }
88
+ /**
89
+ * Validate a tag name according to Git rules
90
+ * Similar to ref name rules but with tag-specific constraints
91
+ */
92
+ export function isValidTagName(_name) {
93
+ // TODO: Implement in GREEN phase
94
+ throw new Error('Not implemented');
95
+ }
96
+ /**
97
+ * Check if a string is a valid annotated tag (has tag object)
98
+ */
99
+ export function isAnnotatedTag(_tag) {
100
+ // TODO: Implement in GREEN phase
101
+ throw new Error('Not implemented');
102
+ }
103
+ /**
104
+ * Format a tag message (handle line endings, etc.)
105
+ */
106
+ export function formatTagMessage(_message) {
107
+ // TODO: Implement in GREEN phase
108
+ throw new Error('Not implemented');
109
+ }
110
+ /**
111
+ * Parse a tag message from raw content
112
+ */
113
+ export function parseTagMessage(_content) {
114
+ // TODO: Implement in GREEN phase
115
+ throw new Error('Not implemented');
116
+ }
117
+ // Convenience functions that wrap TagManager methods
118
+ /**
119
+ * Create a lightweight tag pointing to a commit
120
+ */
121
+ export async function createTag(_manager, _name, _target, _options) {
122
+ // TODO: Implement in GREEN phase
123
+ throw new Error('Not implemented');
124
+ }
125
+ /**
126
+ * Create an annotated tag with message
127
+ */
128
+ export async function createAnnotatedTag(_manager, _name, _target, _message, _tagger, _options) {
129
+ // TODO: Implement in GREEN phase
130
+ throw new Error('Not implemented');
131
+ }
132
+ /**
133
+ * Delete a tag
134
+ */
135
+ export async function deleteTag(_manager, _name, _options) {
136
+ // TODO: Implement in GREEN phase
137
+ throw new Error('Not implemented');
138
+ }
139
+ /**
140
+ * List all tags
141
+ */
142
+ export async function listTags(_manager, _options) {
143
+ // TODO: Implement in GREEN phase
144
+ throw new Error('Not implemented');
145
+ }
146
+ /**
147
+ * Get a tag by name
148
+ */
149
+ export async function getTag(_manager, _name, _options) {
150
+ // TODO: Implement in GREEN phase
151
+ throw new Error('Not implemented');
152
+ }
153
+ /**
154
+ * Check if a tag is an annotated tag
155
+ */
156
+ export async function checkIsAnnotatedTag(_manager, _name) {
157
+ // TODO: Implement in GREEN phase
158
+ throw new Error('Not implemented');
159
+ }
160
+ /**
161
+ * Verify a tag's signature
162
+ */
163
+ export async function verifyTagSignature(_manager, _name) {
164
+ // TODO: Implement in GREEN phase
165
+ throw new Error('Not implemented');
166
+ }
167
+ /**
168
+ * Get the target commit SHA for a tag
169
+ */
170
+ export async function getTagTarget(_manager, _name) {
171
+ // TODO: Implement in GREEN phase
172
+ throw new Error('Not implemented');
173
+ }
174
+ /**
175
+ * Sort tags by semantic version
176
+ */
177
+ export function sortTagsByVersion(_tags, _direction = 'asc') {
178
+ // TODO: Implement in GREEN phase
179
+ throw new Error('Not implemented');
180
+ }
181
+ /**
182
+ * Filter tags by glob pattern
183
+ */
184
+ export function filterTagsByPattern(_tags, _pattern) {
185
+ // TODO: Implement in GREEN phase
186
+ throw new Error('Not implemented');
187
+ }
188
+ //# sourceMappingURL=tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * LRU Cache implementation for hot objects in gitdo
3
+ * gitdo-165: LRU cache for hot objects
4
+ */
5
+ /**
6
+ * Configuration options for the LRU cache
7
+ */
8
+ export interface CacheOptions {
9
+ /** Maximum number of items in the cache */
10
+ maxCount?: number;
11
+ /** Maximum size in bytes for the cache */
12
+ maxBytes?: number;
13
+ /** Default TTL in milliseconds for cache entries */
14
+ defaultTTL?: number;
15
+ /** Function to calculate size of a value in bytes */
16
+ sizeCalculator?: <T>(value: T) => number;
17
+ /** Callback when an item is evicted */
18
+ onEvict?: <K, V>(key: K, value: V, reason: EvictionReason) => void;
19
+ }
20
+ /**
21
+ * Reason why an item was evicted from the cache
22
+ */
23
+ export type EvictionReason = 'lru' | 'ttl' | 'size' | 'manual' | 'clear';
24
+ /**
25
+ * Statistics about cache performance
26
+ */
27
+ export interface CacheStats {
28
+ /** Number of cache hits */
29
+ hits: number;
30
+ /** Number of cache misses */
31
+ misses: number;
32
+ /** Current number of items in the cache */
33
+ count: number;
34
+ /** Current size in bytes */
35
+ bytes: number;
36
+ /** Number of evictions */
37
+ evictions: number;
38
+ /** Hit rate as a percentage (0-100) */
39
+ hitRate: number;
40
+ }
41
+ /**
42
+ * Entry stored in the cache
43
+ */
44
+ export interface CacheEntry<V> {
45
+ value: V;
46
+ size: number;
47
+ createdAt: number;
48
+ expiresAt: number | null;
49
+ lastAccessed: number;
50
+ }
51
+ /**
52
+ * Options for setting a cache entry
53
+ */
54
+ export interface SetOptions {
55
+ /** TTL in milliseconds for this specific entry */
56
+ ttl?: number;
57
+ /** Size in bytes (overrides sizeCalculator) */
58
+ size?: number;
59
+ }
60
+ /**
61
+ * LRU Cache class for storing hot objects with size and count limits
62
+ */
63
+ export declare class LRUCache<K = string, V = unknown> {
64
+ private cache;
65
+ private head;
66
+ private tail;
67
+ private _bytes;
68
+ private _hits;
69
+ private _misses;
70
+ private _evictions;
71
+ private maxCount;
72
+ private maxBytes;
73
+ private defaultTTL;
74
+ private sizeCalculator;
75
+ private onEvict?;
76
+ /**
77
+ * Create a new LRU cache
78
+ * @param options Configuration options
79
+ */
80
+ constructor(options?: CacheOptions);
81
+ /**
82
+ * Check if an entry is expired
83
+ */
84
+ private isExpired;
85
+ /**
86
+ * Move a node to the head (most recently used)
87
+ */
88
+ private moveToHead;
89
+ /**
90
+ * Remove a node from the linked list
91
+ */
92
+ private removeNode;
93
+ /**
94
+ * Add a node to the head of the list
95
+ */
96
+ private addToHead;
97
+ /**
98
+ * Evict items until we're under limits
99
+ */
100
+ private evictToFit;
101
+ /**
102
+ * Get a value from the cache
103
+ * @param key The cache key
104
+ * @returns The cached value or undefined if not found/expired
105
+ */
106
+ get(key: K): V | undefined;
107
+ /**
108
+ * Set a value in the cache
109
+ * @param key The cache key
110
+ * @param value The value to cache
111
+ * @param options Optional settings for this entry
112
+ * @returns true if successfully set, false otherwise
113
+ */
114
+ set(key: K, value: V, options?: SetOptions): boolean;
115
+ /**
116
+ * Check if a key exists in the cache (without updating LRU order)
117
+ * @param key The cache key
118
+ * @returns true if the key exists and is not expired
119
+ */
120
+ has(key: K): boolean;
121
+ /**
122
+ * Delete a key from the cache
123
+ * @param key The cache key
124
+ * @returns true if the key was deleted, false if it didn't exist
125
+ */
126
+ delete(key: K): boolean;
127
+ /**
128
+ * Clear all entries from the cache
129
+ */
130
+ clear(): void;
131
+ /**
132
+ * Get cache statistics
133
+ * @returns Current cache statistics
134
+ */
135
+ getStats(): CacheStats;
136
+ /**
137
+ * Reset cache statistics (keeps cached data)
138
+ */
139
+ resetStats(): void;
140
+ /**
141
+ * Get the number of items currently in the cache
142
+ */
143
+ get size(): number;
144
+ /**
145
+ * Get the current byte size of the cache
146
+ */
147
+ get bytes(): number;
148
+ /**
149
+ * Get all keys in the cache (in LRU order, most recent first)
150
+ */
151
+ keys(): K[];
152
+ /**
153
+ * Get all values in the cache (in LRU order, most recent first)
154
+ */
155
+ values(): V[];
156
+ /**
157
+ * Get all entries in the cache (in LRU order, most recent first)
158
+ */
159
+ entries(): Array<[K, V]>;
160
+ /**
161
+ * Peek at a value without updating LRU order
162
+ * @param key The cache key
163
+ * @returns The cached value or undefined if not found/expired
164
+ */
165
+ peek(key: K): V | undefined;
166
+ /**
167
+ * Evict expired entries from the cache
168
+ * @returns Number of entries evicted
169
+ */
170
+ prune(): number;
171
+ /**
172
+ * Resize the cache to new limits
173
+ * @param options New size limits
174
+ */
175
+ resize(options: Pick<CacheOptions, 'maxCount' | 'maxBytes'>): void;
176
+ }
177
+ /**
178
+ * Create a key serializer for complex key types
179
+ */
180
+ export declare function createKeySerializer<K>(serialize: (key: K) => string, deserialize: (str: string) => K): {
181
+ serialize: (key: K) => string;
182
+ deserialize: (str: string) => K;
183
+ };
184
+ /**
185
+ * Default size calculator for common value types
186
+ */
187
+ export declare function defaultSizeCalculator<T>(value: T): number;
188
+ //# sourceMappingURL=lru-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../src/storage/lru-cache.ts"],"names":[],"mappings":"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"}