gitx.do 0.0.1 → 0.0.3

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 (237) hide show
  1. package/dist/cli/commands/blame.d.ts +259 -0
  2. package/dist/cli/commands/blame.d.ts.map +1 -0
  3. package/dist/cli/commands/blame.js +609 -0
  4. package/dist/cli/commands/blame.js.map +1 -0
  5. package/dist/cli/commands/branch.d.ts +249 -0
  6. package/dist/cli/commands/branch.d.ts.map +1 -0
  7. package/dist/cli/commands/branch.js +693 -0
  8. package/dist/cli/commands/branch.js.map +1 -0
  9. package/dist/cli/commands/commit.d.ts +182 -0
  10. package/dist/cli/commands/commit.d.ts.map +1 -0
  11. package/dist/cli/commands/commit.js +437 -0
  12. package/dist/cli/commands/commit.js.map +1 -0
  13. package/dist/cli/commands/diff.d.ts +464 -0
  14. package/dist/cli/commands/diff.d.ts.map +1 -0
  15. package/dist/cli/commands/diff.js +958 -0
  16. package/dist/cli/commands/diff.js.map +1 -0
  17. package/dist/cli/commands/log.d.ts +239 -0
  18. package/dist/cli/commands/log.d.ts.map +1 -0
  19. package/dist/cli/commands/log.js +535 -0
  20. package/dist/cli/commands/log.js.map +1 -0
  21. package/dist/cli/commands/review.d.ts +457 -0
  22. package/dist/cli/commands/review.d.ts.map +1 -0
  23. package/dist/cli/commands/review.js +533 -0
  24. package/dist/cli/commands/review.js.map +1 -0
  25. package/dist/cli/commands/status.d.ts +269 -0
  26. package/dist/cli/commands/status.d.ts.map +1 -0
  27. package/dist/cli/commands/status.js +493 -0
  28. package/dist/cli/commands/status.js.map +1 -0
  29. package/dist/cli/commands/web.d.ts +199 -0
  30. package/dist/cli/commands/web.d.ts.map +1 -0
  31. package/dist/cli/commands/web.js +696 -0
  32. package/dist/cli/commands/web.js.map +1 -0
  33. package/dist/cli/fs-adapter.d.ts +656 -0
  34. package/dist/cli/fs-adapter.d.ts.map +1 -0
  35. package/dist/cli/fs-adapter.js +1179 -0
  36. package/dist/cli/fs-adapter.js.map +1 -0
  37. package/dist/cli/index.d.ts +387 -0
  38. package/dist/cli/index.d.ts.map +1 -0
  39. package/dist/cli/index.js +523 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/ui/components/DiffView.d.ts +7 -0
  42. package/dist/cli/ui/components/DiffView.d.ts.map +1 -0
  43. package/dist/cli/ui/components/DiffView.js +11 -0
  44. package/dist/cli/ui/components/DiffView.js.map +1 -0
  45. package/dist/cli/ui/components/ErrorDisplay.d.ts +6 -0
  46. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +1 -0
  47. package/dist/cli/ui/components/ErrorDisplay.js +11 -0
  48. package/dist/cli/ui/components/ErrorDisplay.js.map +1 -0
  49. package/dist/cli/ui/components/FuzzySearch.d.ts +9 -0
  50. package/dist/cli/ui/components/FuzzySearch.d.ts.map +1 -0
  51. package/dist/cli/ui/components/FuzzySearch.js +12 -0
  52. package/dist/cli/ui/components/FuzzySearch.js.map +1 -0
  53. package/dist/cli/ui/components/LoadingSpinner.d.ts +6 -0
  54. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +1 -0
  55. package/dist/cli/ui/components/LoadingSpinner.js +10 -0
  56. package/dist/cli/ui/components/LoadingSpinner.js.map +1 -0
  57. package/dist/cli/ui/components/NavigationList.d.ts +9 -0
  58. package/dist/cli/ui/components/NavigationList.d.ts.map +1 -0
  59. package/dist/cli/ui/components/NavigationList.js +11 -0
  60. package/dist/cli/ui/components/NavigationList.js.map +1 -0
  61. package/dist/cli/ui/components/ScrollableContent.d.ts +8 -0
  62. package/dist/cli/ui/components/ScrollableContent.d.ts.map +1 -0
  63. package/dist/cli/ui/components/ScrollableContent.js +11 -0
  64. package/dist/cli/ui/components/ScrollableContent.js.map +1 -0
  65. package/dist/cli/ui/components/index.d.ts +7 -0
  66. package/dist/cli/ui/components/index.d.ts.map +1 -0
  67. package/dist/cli/ui/components/index.js +9 -0
  68. package/dist/cli/ui/components/index.js.map +1 -0
  69. package/dist/cli/ui/terminal-ui.d.ts +52 -0
  70. package/dist/cli/ui/terminal-ui.d.ts.map +1 -0
  71. package/dist/cli/ui/terminal-ui.js +121 -0
  72. package/dist/cli/ui/terminal-ui.js.map +1 -0
  73. package/dist/durable-object/object-store.d.ts +401 -23
  74. package/dist/durable-object/object-store.d.ts.map +1 -1
  75. package/dist/durable-object/object-store.js +414 -25
  76. package/dist/durable-object/object-store.js.map +1 -1
  77. package/dist/durable-object/schema.d.ts +188 -0
  78. package/dist/durable-object/schema.d.ts.map +1 -1
  79. package/dist/durable-object/schema.js +160 -0
  80. package/dist/durable-object/schema.js.map +1 -1
  81. package/dist/durable-object/wal.d.ts +336 -31
  82. package/dist/durable-object/wal.d.ts.map +1 -1
  83. package/dist/durable-object/wal.js +272 -27
  84. package/dist/durable-object/wal.js.map +1 -1
  85. package/dist/index.d.ts +379 -3
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +379 -7
  88. package/dist/index.js.map +1 -1
  89. package/dist/mcp/adapter.d.ts +579 -38
  90. package/dist/mcp/adapter.d.ts.map +1 -1
  91. package/dist/mcp/adapter.js +426 -33
  92. package/dist/mcp/adapter.js.map +1 -1
  93. package/dist/mcp/sandbox.d.ts +532 -29
  94. package/dist/mcp/sandbox.d.ts.map +1 -1
  95. package/dist/mcp/sandbox.js +389 -22
  96. package/dist/mcp/sandbox.js.map +1 -1
  97. package/dist/mcp/sdk-adapter.d.ts +478 -56
  98. package/dist/mcp/sdk-adapter.d.ts.map +1 -1
  99. package/dist/mcp/sdk-adapter.js +346 -44
  100. package/dist/mcp/sdk-adapter.js.map +1 -1
  101. package/dist/mcp/tools.d.ts +445 -30
  102. package/dist/mcp/tools.d.ts.map +1 -1
  103. package/dist/mcp/tools.js +363 -33
  104. package/dist/mcp/tools.js.map +1 -1
  105. package/dist/ops/blame.d.ts +424 -21
  106. package/dist/ops/blame.d.ts.map +1 -1
  107. package/dist/ops/blame.js +303 -20
  108. package/dist/ops/blame.js.map +1 -1
  109. package/dist/ops/branch.d.ts +583 -32
  110. package/dist/ops/branch.d.ts.map +1 -1
  111. package/dist/ops/branch.js +365 -23
  112. package/dist/ops/branch.js.map +1 -1
  113. package/dist/ops/commit-traversal.d.ts +164 -24
  114. package/dist/ops/commit-traversal.d.ts.map +1 -1
  115. package/dist/ops/commit-traversal.js +68 -2
  116. package/dist/ops/commit-traversal.js.map +1 -1
  117. package/dist/ops/commit.d.ts +387 -53
  118. package/dist/ops/commit.d.ts.map +1 -1
  119. package/dist/ops/commit.js +249 -29
  120. package/dist/ops/commit.js.map +1 -1
  121. package/dist/ops/merge-base.d.ts +195 -21
  122. package/dist/ops/merge-base.d.ts.map +1 -1
  123. package/dist/ops/merge-base.js +122 -12
  124. package/dist/ops/merge-base.js.map +1 -1
  125. package/dist/ops/merge.d.ts +600 -130
  126. package/dist/ops/merge.d.ts.map +1 -1
  127. package/dist/ops/merge.js +408 -60
  128. package/dist/ops/merge.js.map +1 -1
  129. package/dist/ops/tag.d.ts +67 -2
  130. package/dist/ops/tag.d.ts.map +1 -1
  131. package/dist/ops/tag.js +42 -1
  132. package/dist/ops/tag.js.map +1 -1
  133. package/dist/ops/tree-builder.d.ts +102 -6
  134. package/dist/ops/tree-builder.d.ts.map +1 -1
  135. package/dist/ops/tree-builder.js +30 -5
  136. package/dist/ops/tree-builder.js.map +1 -1
  137. package/dist/ops/tree-diff.d.ts +50 -2
  138. package/dist/ops/tree-diff.d.ts.map +1 -1
  139. package/dist/ops/tree-diff.js +50 -2
  140. package/dist/ops/tree-diff.js.map +1 -1
  141. package/dist/pack/delta.d.ts +211 -39
  142. package/dist/pack/delta.d.ts.map +1 -1
  143. package/dist/pack/delta.js +232 -46
  144. package/dist/pack/delta.js.map +1 -1
  145. package/dist/pack/format.d.ts +390 -28
  146. package/dist/pack/format.d.ts.map +1 -1
  147. package/dist/pack/format.js +344 -33
  148. package/dist/pack/format.js.map +1 -1
  149. package/dist/pack/full-generation.d.ts +313 -28
  150. package/dist/pack/full-generation.d.ts.map +1 -1
  151. package/dist/pack/full-generation.js +238 -19
  152. package/dist/pack/full-generation.js.map +1 -1
  153. package/dist/pack/generation.d.ts +346 -23
  154. package/dist/pack/generation.d.ts.map +1 -1
  155. package/dist/pack/generation.js +269 -21
  156. package/dist/pack/generation.js.map +1 -1
  157. package/dist/pack/index.d.ts +407 -86
  158. package/dist/pack/index.d.ts.map +1 -1
  159. package/dist/pack/index.js +351 -70
  160. package/dist/pack/index.js.map +1 -1
  161. package/dist/refs/branch.d.ts +517 -71
  162. package/dist/refs/branch.d.ts.map +1 -1
  163. package/dist/refs/branch.js +410 -26
  164. package/dist/refs/branch.js.map +1 -1
  165. package/dist/refs/storage.d.ts +610 -57
  166. package/dist/refs/storage.d.ts.map +1 -1
  167. package/dist/refs/storage.js +481 -29
  168. package/dist/refs/storage.js.map +1 -1
  169. package/dist/refs/tag.d.ts +677 -67
  170. package/dist/refs/tag.d.ts.map +1 -1
  171. package/dist/refs/tag.js +497 -30
  172. package/dist/refs/tag.js.map +1 -1
  173. package/dist/storage/lru-cache.d.ts +556 -53
  174. package/dist/storage/lru-cache.d.ts.map +1 -1
  175. package/dist/storage/lru-cache.js +439 -36
  176. package/dist/storage/lru-cache.js.map +1 -1
  177. package/dist/storage/object-index.d.ts +483 -38
  178. package/dist/storage/object-index.d.ts.map +1 -1
  179. package/dist/storage/object-index.js +388 -22
  180. package/dist/storage/object-index.js.map +1 -1
  181. package/dist/storage/r2-pack.d.ts +957 -94
  182. package/dist/storage/r2-pack.d.ts.map +1 -1
  183. package/dist/storage/r2-pack.js +756 -48
  184. package/dist/storage/r2-pack.js.map +1 -1
  185. package/dist/tiered/cdc-pipeline.d.ts +1610 -38
  186. package/dist/tiered/cdc-pipeline.d.ts.map +1 -1
  187. package/dist/tiered/cdc-pipeline.js +1131 -22
  188. package/dist/tiered/cdc-pipeline.js.map +1 -1
  189. package/dist/tiered/migration.d.ts +903 -41
  190. package/dist/tiered/migration.d.ts.map +1 -1
  191. package/dist/tiered/migration.js +646 -24
  192. package/dist/tiered/migration.js.map +1 -1
  193. package/dist/tiered/parquet-writer.d.ts +944 -47
  194. package/dist/tiered/parquet-writer.d.ts.map +1 -1
  195. package/dist/tiered/parquet-writer.js +667 -39
  196. package/dist/tiered/parquet-writer.js.map +1 -1
  197. package/dist/tiered/read-path.d.ts +728 -34
  198. package/dist/tiered/read-path.d.ts.map +1 -1
  199. package/dist/tiered/read-path.js +310 -27
  200. package/dist/tiered/read-path.js.map +1 -1
  201. package/dist/types/objects.d.ts +457 -0
  202. package/dist/types/objects.d.ts.map +1 -1
  203. package/dist/types/objects.js +305 -4
  204. package/dist/types/objects.js.map +1 -1
  205. package/dist/types/storage.d.ts +407 -35
  206. package/dist/types/storage.d.ts.map +1 -1
  207. package/dist/types/storage.js +27 -3
  208. package/dist/types/storage.js.map +1 -1
  209. package/dist/utils/hash.d.ts +133 -12
  210. package/dist/utils/hash.d.ts.map +1 -1
  211. package/dist/utils/hash.js +133 -12
  212. package/dist/utils/hash.js.map +1 -1
  213. package/dist/utils/sha1.d.ts +102 -9
  214. package/dist/utils/sha1.d.ts.map +1 -1
  215. package/dist/utils/sha1.js +114 -11
  216. package/dist/utils/sha1.js.map +1 -1
  217. package/dist/wire/capabilities.d.ts +896 -88
  218. package/dist/wire/capabilities.d.ts.map +1 -1
  219. package/dist/wire/capabilities.js +566 -62
  220. package/dist/wire/capabilities.js.map +1 -1
  221. package/dist/wire/pkt-line.d.ts +293 -15
  222. package/dist/wire/pkt-line.d.ts.map +1 -1
  223. package/dist/wire/pkt-line.js +251 -15
  224. package/dist/wire/pkt-line.js.map +1 -1
  225. package/dist/wire/receive-pack.d.ts +814 -64
  226. package/dist/wire/receive-pack.d.ts.map +1 -1
  227. package/dist/wire/receive-pack.js +542 -41
  228. package/dist/wire/receive-pack.js.map +1 -1
  229. package/dist/wire/smart-http.d.ts +575 -97
  230. package/dist/wire/smart-http.d.ts.map +1 -1
  231. package/dist/wire/smart-http.js +337 -46
  232. package/dist/wire/smart-http.js.map +1 -1
  233. package/dist/wire/upload-pack.d.ts +492 -98
  234. package/dist/wire/upload-pack.d.ts.map +1 -1
  235. package/dist/wire/upload-pack.js +347 -59
  236. package/dist/wire/upload-pack.js.map +1 -1
  237. package/package.json +10 -2
package/dist/refs/tag.js CHANGED
@@ -1,16 +1,72 @@
1
1
  /**
2
- * Git Tag Operations
2
+ * @fileoverview Git Tag Operations
3
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).
4
+ * This module provides comprehensive tag management functionality including
5
+ * creation (lightweight and annotated), deletion, listing, and verification.
6
+ *
7
+ * **Tag Types in Git**:
8
+ * - **Lightweight tags**: Simple refs under refs/tags/ pointing to commits
9
+ * - **Annotated tags**: Refs pointing to tag objects containing metadata
10
+ * (tagger, date, message, and optional GPG signature)
11
+ *
12
+ * Annotated tags are recommended for releases as they include metadata
13
+ * and can be cryptographically signed.
14
+ *
15
+ * @module refs/tag
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { TagManager, createTag, listTags } from './refs/tag'
20
+ *
21
+ * // Create manager
22
+ * const manager = new TagManager(refStorage, objectStorage, gpgSigner)
23
+ *
24
+ * // Create annotated tag
25
+ * const tag = await manager.createTag('v1.0.0', commitSha, {
26
+ * annotated: true,
27
+ * message: 'Release 1.0.0',
28
+ * tagger: { name: 'Alice', email: 'alice@example.com', timestamp: Date.now()/1000, timezone: '+0000' }
29
+ * })
30
+ *
31
+ * // List version tags
32
+ * const versions = await listTags(manager, { pattern: 'v*' })
33
+ * ```
7
34
  */
8
35
  /**
9
- * Error thrown when a tag operation fails
36
+ * Error thrown when a tag operation fails.
37
+ *
38
+ * @description
39
+ * Provides structured error information with error code
40
+ * for programmatic error handling.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * try {
45
+ * await manager.createTag('v1.0.0', 'abc123')
46
+ * } catch (e) {
47
+ * if (e instanceof TagError) {
48
+ * switch (e.code) {
49
+ * case 'TAG_EXISTS':
50
+ * console.log('Tag already exists, use force=true to overwrite')
51
+ * break
52
+ * case 'MESSAGE_REQUIRED':
53
+ * console.log('Annotated tags require a message')
54
+ * break
55
+ * }
56
+ * }
57
+ * }
58
+ * ```
10
59
  */
11
60
  export class TagError extends Error {
12
61
  code;
13
62
  tagName;
63
+ /**
64
+ * Create a new TagError.
65
+ *
66
+ * @param message - Human-readable error description
67
+ * @param code - Error code for programmatic handling
68
+ * @param tagName - The tag that caused the error (optional)
69
+ */
14
70
  constructor(message, code, tagName) {
15
71
  super(message);
16
72
  this.code = code;
@@ -18,10 +74,46 @@ export class TagError extends Error {
18
74
  this.name = 'TagError';
19
75
  }
20
76
  }
77
+ // ============================================================================
78
+ // TagManager Class
79
+ // ============================================================================
21
80
  /**
22
- * Tag manager for handling Git tag operations
81
+ * Tag manager for handling Git tag operations.
82
+ *
83
+ * @description
84
+ * Provides a comprehensive API for tag management including both
85
+ * lightweight and annotated tags. Uses RefStorage for refs and
86
+ * TagObjectStorage for tag objects.
87
+ *
88
+ * Note: Most methods are currently stubs (TODO) and will throw 'Not implemented'.
89
+ * These will be implemented in the GREEN phase of TDD development.
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const manager = new TagManager(refStorage, objectStorage, gpgSigner)
94
+ *
95
+ * // Create a release tag
96
+ * const tag = await manager.createTag('v1.0.0', commitSha, {
97
+ * annotated: true,
98
+ * message: 'Version 1.0.0 release',
99
+ * tagger: { name: 'Alice', email: 'alice@example.com', timestamp: 1704067200, timezone: '+0000' }
100
+ * })
101
+ *
102
+ * // List version tags
103
+ * const versions = await manager.listTags({ pattern: 'v*' })
104
+ *
105
+ * // Verify signed tag
106
+ * const verification = await manager.verifyTag('v1.0.0')
107
+ * ```
23
108
  */
24
109
  export class TagManager {
110
+ /**
111
+ * Create a new TagManager.
112
+ *
113
+ * @param refStorage - RefStorage instance for managing tag refs
114
+ * @param objectStorage - Storage for reading/writing tag objects
115
+ * @param gpgSigner - Optional GPG signer for signed tags
116
+ */
25
117
  constructor(refStorage, objectStorage, gpgSigner) {
26
118
  void refStorage; // Suppress unused variable warning until implementation
27
119
  void objectStorage;
@@ -29,157 +121,532 @@ export class TagManager {
29
121
  // TODO: Implement in GREEN phase
30
122
  }
31
123
  /**
32
- * Create a new tag
124
+ * Create a new tag.
125
+ *
126
+ * @description
127
+ * Creates either a lightweight or annotated tag pointing to the
128
+ * specified target. For annotated tags, creates a tag object with
129
+ * metadata and optionally signs it.
130
+ *
131
+ * @param name - Tag name (without refs/tags/ prefix)
132
+ * @param target - Target SHA to tag (usually a commit)
133
+ * @param options - Creation options
134
+ * @returns The created tag
135
+ * @throws TagError with code 'INVALID_TAG_NAME' if name is invalid
136
+ * @throws TagError with code 'TAG_EXISTS' if tag exists and not forcing
137
+ * @throws TagError with code 'MESSAGE_REQUIRED' for annotated tag without message
138
+ * @throws TagError with code 'GPG_ERROR' if signing fails
139
+ *
140
+ * @example
141
+ * ```typescript
142
+ * // Create lightweight tag
143
+ * const light = await manager.createTag('v0.1.0', commitSha)
144
+ *
145
+ * // Create annotated tag
146
+ * const annotated = await manager.createTag('v1.0.0', commitSha, {
147
+ * annotated: true,
148
+ * message: 'Release 1.0.0',
149
+ * tagger: { name: 'Alice', email: 'alice@example.com', timestamp: 1704067200, timezone: '+0000' }
150
+ * })
151
+ *
152
+ * // Create signed tag
153
+ * const signed = await manager.createTag('v1.0.0', commitSha, {
154
+ * annotated: true,
155
+ * message: 'Release 1.0.0',
156
+ * sign: true
157
+ * })
158
+ * ```
33
159
  */
34
160
  async createTag(_name, _target, _options) {
35
161
  // TODO: Implement in GREEN phase
36
162
  throw new Error('Not implemented');
37
163
  }
38
164
  /**
39
- * Delete a tag
165
+ * Delete a tag.
166
+ *
167
+ * @description
168
+ * Removes a tag ref. Does not delete the tag object (if annotated)
169
+ * as it may be referenced elsewhere (reflog, etc.).
170
+ *
171
+ * @param name - Tag name to delete
172
+ * @param options - Deletion options
173
+ * @returns True if tag was deleted, false if it didn't exist (with force)
174
+ * @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist (without force)
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * await manager.deleteTag('v0.9.0-beta')
179
+ *
180
+ * // Delete even if doesn't exist
181
+ * await manager.deleteTag('maybe-exists', { force: true })
182
+ * ```
40
183
  */
41
184
  async deleteTag(_name, _options) {
42
185
  // TODO: Implement in GREEN phase
43
186
  throw new Error('Not implemented');
44
187
  }
45
188
  /**
46
- * List all tags
189
+ * List all tags.
190
+ *
191
+ * @description
192
+ * Returns tags matching the specified criteria.
193
+ * By default returns all tags sorted by name.
194
+ *
195
+ * @param options - Listing options
196
+ * @returns Array of tags matching criteria
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * // List all tags
201
+ * const all = await manager.listTags()
202
+ *
203
+ * // List version tags with metadata
204
+ * const versions = await manager.listTags({
205
+ * pattern: 'v*',
206
+ * sort: 'version',
207
+ * includeMetadata: true
208
+ * })
209
+ *
210
+ * // Get latest 5 tags
211
+ * const latest = await manager.listTags({
212
+ * sort: 'date',
213
+ * sortDirection: 'desc',
214
+ * limit: 5,
215
+ * includeMetadata: true
216
+ * })
217
+ * ```
47
218
  */
48
219
  async listTags(_options) {
49
220
  // TODO: Implement in GREEN phase
50
221
  throw new Error('Not implemented');
51
222
  }
52
223
  /**
53
- * Get a tag by name
224
+ * Get a tag by name.
225
+ *
226
+ * @description
227
+ * Retrieves tag information. Use resolve=true to get full
228
+ * annotated tag metadata.
229
+ *
230
+ * @param name - Tag name
231
+ * @param options - Get options
232
+ * @returns Tag info or null if not found
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * // Quick lookup
237
+ * const tag = await manager.getTag('v1.0.0')
238
+ *
239
+ * // Get full metadata
240
+ * const full = await manager.getTag('v1.0.0', { resolve: true })
241
+ * if (full?.type === 'annotated') {
242
+ * console.log(`Tagged by: ${full.tagger?.name}`)
243
+ * console.log(`Message: ${full.message}`)
244
+ * }
245
+ * ```
54
246
  */
55
247
  async getTag(_name, _options) {
56
248
  // TODO: Implement in GREEN phase
57
249
  throw new Error('Not implemented');
58
250
  }
59
251
  /**
60
- * Check if a tag exists
252
+ * Check if a tag exists.
253
+ *
254
+ * @description
255
+ * Quick check for tag existence without fetching full info.
256
+ *
257
+ * @param name - Tag name
258
+ * @returns True if tag exists
259
+ *
260
+ * @example
261
+ * ```typescript
262
+ * if (await manager.tagExists('v1.0.0')) {
263
+ * console.log('Tag already exists')
264
+ * }
265
+ * ```
61
266
  */
62
267
  async tagExists(_name) {
63
268
  // TODO: Implement in GREEN phase
64
269
  throw new Error('Not implemented');
65
270
  }
66
271
  /**
67
- * Get the target (commit SHA) that a tag points to
272
+ * Get the target (commit SHA) that a tag points to.
273
+ *
274
+ * @description
275
+ * Resolves through annotated tags to get the final target.
276
+ * For lightweight tags, returns the sha directly.
277
+ * For annotated tags, returns the targetSha.
278
+ *
279
+ * @param name - Tag name
280
+ * @returns Target commit SHA
281
+ * @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * const commitSha = await manager.getTagTarget('v1.0.0')
286
+ * ```
68
287
  */
69
288
  async getTagTarget(_name) {
70
289
  // TODO: Implement in GREEN phase
71
290
  throw new Error('Not implemented');
72
291
  }
73
292
  /**
74
- * Verify a tag's GPG signature
293
+ * Verify a tag's GPG signature.
294
+ *
295
+ * @description
296
+ * Verifies the GPG signature on a signed annotated tag.
297
+ * Returns verification result with signer info.
298
+ *
299
+ * @param name - Tag name to verify
300
+ * @returns Verification result
301
+ * @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist
302
+ *
303
+ * @example
304
+ * ```typescript
305
+ * const result = await manager.verifyTag('v1.0.0')
306
+ * if (result.valid) {
307
+ * console.log(`Signed by: ${result.signer}`)
308
+ * console.log(`Trust: ${result.trustLevel}`)
309
+ * } else {
310
+ * console.log(`Verification failed: ${result.error}`)
311
+ * }
312
+ * ```
75
313
  */
76
314
  async verifyTag(_name) {
77
315
  // TODO: Implement in GREEN phase
78
316
  throw new Error('Not implemented');
79
317
  }
80
318
  /**
81
- * Check if a tag is annotated
319
+ * Check if a tag is annotated.
320
+ *
321
+ * @description
322
+ * Determines if a tag is annotated (has a tag object) or lightweight.
323
+ *
324
+ * @param name - Tag name
325
+ * @returns True if the tag is annotated
326
+ * @throws TagError with code 'TAG_NOT_FOUND' if tag doesn't exist
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * if (await manager.isAnnotatedTag('v1.0.0')) {
331
+ * console.log('This is an annotated tag')
332
+ * }
333
+ * ```
82
334
  */
83
335
  async isAnnotatedTag(_name) {
84
336
  // TODO: Implement in GREEN phase
85
337
  throw new Error('Not implemented');
86
338
  }
87
339
  }
340
+ // ============================================================================
341
+ // Validation Functions
342
+ // ============================================================================
88
343
  /**
89
- * Validate a tag name according to Git rules
90
- * Similar to ref name rules but with tag-specific constraints
344
+ * Validate a tag name according to Git rules.
345
+ *
346
+ * @description
347
+ * Tags follow the same rules as refs but under refs/tags/.
348
+ * This validates against the full git-check-ref-format rules.
349
+ *
350
+ * **Rules**:
351
+ * - Cannot be empty
352
+ * - Cannot end with '/' or '.lock'
353
+ * - Cannot contain '..', '@{', control chars, space, ~, ^, :, ?, *, [, \
354
+ * - Components cannot start or end with '.'
355
+ *
356
+ * Note: This is a stub implementation. Full validation will be added in GREEN phase.
357
+ *
358
+ * @param name - Tag name to validate
359
+ * @returns True if valid
360
+ *
361
+ * @see https://git-scm.com/docs/git-check-ref-format
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * isValidTagName('v1.0.0') // true
366
+ * isValidTagName('release/1.0') // true
367
+ * isValidTagName('v1.0.0.lock') // false (ends with .lock)
368
+ * isValidTagName('v1..0') // false (contains ..)
369
+ * isValidTagName('') // false (empty)
370
+ * ```
91
371
  */
92
372
  export function isValidTagName(_name) {
93
373
  // TODO: Implement in GREEN phase
94
374
  throw new Error('Not implemented');
95
375
  }
96
376
  /**
97
- * Check if a string is a valid annotated tag (has tag object)
377
+ * Type guard for annotated tags.
378
+ *
379
+ * @description
380
+ * Checks if a tag is annotated with full metadata.
381
+ * Narrows the type to include tagger and message.
382
+ *
383
+ * @param tag - Tag to check
384
+ * @returns True if the tag is annotated with full metadata
385
+ *
386
+ * @example
387
+ * ```typescript
388
+ * if (isAnnotatedTag(tag)) {
389
+ * // tag.tagger and tag.message are now guaranteed
390
+ * console.log(`Tagged by: ${tag.tagger.name}`)
391
+ * }
392
+ * ```
98
393
  */
99
394
  export function isAnnotatedTag(_tag) {
100
395
  // TODO: Implement in GREEN phase
101
396
  throw new Error('Not implemented');
102
397
  }
103
398
  /**
104
- * Format a tag message (handle line endings, etc.)
399
+ * Format a tag message.
400
+ *
401
+ * @description
402
+ * Normalizes a tag message: handles line endings, trims whitespace,
403
+ * ensures proper formatting.
404
+ *
405
+ * @param message - Raw message input
406
+ * @returns Formatted message
407
+ *
408
+ * @example
409
+ * ```typescript
410
+ * formatTagMessage(' Hello World \r\n') // 'Hello World\n'
411
+ * ```
105
412
  */
106
413
  export function formatTagMessage(_message) {
107
414
  // TODO: Implement in GREEN phase
108
415
  throw new Error('Not implemented');
109
416
  }
110
417
  /**
111
- * Parse a tag message from raw content
418
+ * Parse a tag message from raw content.
419
+ *
420
+ * @description
421
+ * Separates the message from any GPG signature.
422
+ * GPG signatures start with '-----BEGIN PGP SIGNATURE-----'.
423
+ *
424
+ * @param content - Raw tag content
425
+ * @returns Parsed message and optional signature
426
+ *
427
+ * @example
428
+ * ```typescript
429
+ * const { message, signature } = parseTagMessage(content)
430
+ * if (signature) {
431
+ * console.log('Tag is signed')
432
+ * }
433
+ * ```
112
434
  */
113
435
  export function parseTagMessage(_content) {
114
436
  // TODO: Implement in GREEN phase
115
437
  throw new Error('Not implemented');
116
438
  }
117
- // Convenience functions that wrap TagManager methods
439
+ // ============================================================================
440
+ // Convenience Functions
441
+ // ============================================================================
118
442
  /**
119
- * Create a lightweight tag pointing to a commit
443
+ * Create a tag (lightweight or annotated).
444
+ *
445
+ * @description
446
+ * Convenience function that wraps TagManager.createTag.
447
+ *
448
+ * @param manager - TagManager instance
449
+ * @param name - Tag name
450
+ * @param target - Target SHA to tag
451
+ * @param options - Creation options
452
+ * @returns Created tag
453
+ *
454
+ * @example
455
+ * ```typescript
456
+ * const tag = await createTag(manager, 'v1.0.0', commitSha, {
457
+ * annotated: true,
458
+ * message: 'Release 1.0.0'
459
+ * })
460
+ * ```
120
461
  */
121
462
  export async function createTag(_manager, _name, _target, _options) {
122
463
  // TODO: Implement in GREEN phase
123
464
  throw new Error('Not implemented');
124
465
  }
125
466
  /**
126
- * Create an annotated tag with message
467
+ * Create an annotated tag with message.
468
+ *
469
+ * @description
470
+ * Convenience function for creating annotated tags.
471
+ * Automatically sets annotated=true.
472
+ *
473
+ * @param manager - TagManager instance
474
+ * @param name - Tag name
475
+ * @param target - Target SHA to tag
476
+ * @param message - Tag message
477
+ * @param tagger - Tagger information
478
+ * @param options - Additional options (excluding annotated, message, tagger)
479
+ * @returns Created annotated tag
480
+ *
481
+ * @example
482
+ * ```typescript
483
+ * const tag = await createAnnotatedTag(
484
+ * manager,
485
+ * 'v1.0.0',
486
+ * commitSha,
487
+ * 'Release 1.0.0',
488
+ * { name: 'Alice', email: 'alice@example.com', timestamp: Date.now()/1000, timezone: '+0000' }
489
+ * )
490
+ * ```
127
491
  */
128
492
  export async function createAnnotatedTag(_manager, _name, _target, _message, _tagger, _options) {
129
493
  // TODO: Implement in GREEN phase
130
494
  throw new Error('Not implemented');
131
495
  }
132
496
  /**
133
- * Delete a tag
497
+ * Delete a tag.
498
+ *
499
+ * @description
500
+ * Convenience function that wraps TagManager.deleteTag.
501
+ *
502
+ * @param manager - TagManager instance
503
+ * @param name - Tag name to delete
504
+ * @param options - Deletion options
505
+ * @returns True if deleted
506
+ *
507
+ * @example
508
+ * ```typescript
509
+ * await deleteTag(manager, 'v0.9.0-beta')
510
+ * ```
134
511
  */
135
512
  export async function deleteTag(_manager, _name, _options) {
136
513
  // TODO: Implement in GREEN phase
137
514
  throw new Error('Not implemented');
138
515
  }
139
516
  /**
140
- * List all tags
517
+ * List all tags.
518
+ *
519
+ * @description
520
+ * Convenience function that wraps TagManager.listTags.
521
+ *
522
+ * @param manager - TagManager instance
523
+ * @param options - Listing options
524
+ * @returns Array of tags
525
+ *
526
+ * @example
527
+ * ```typescript
528
+ * const tags = await listTags(manager, { pattern: 'v1.*' })
529
+ * ```
141
530
  */
142
531
  export async function listTags(_manager, _options) {
143
532
  // TODO: Implement in GREEN phase
144
533
  throw new Error('Not implemented');
145
534
  }
146
535
  /**
147
- * Get a tag by name
536
+ * Get a tag by name.
537
+ *
538
+ * @description
539
+ * Convenience function that wraps TagManager.getTag.
540
+ *
541
+ * @param manager - TagManager instance
542
+ * @param name - Tag name
543
+ * @param options - Get options
544
+ * @returns Tag info or null
545
+ *
546
+ * @example
547
+ * ```typescript
548
+ * const tag = await getTag(manager, 'v1.0.0', { resolve: true })
549
+ * ```
148
550
  */
149
551
  export async function getTag(_manager, _name, _options) {
150
552
  // TODO: Implement in GREEN phase
151
553
  throw new Error('Not implemented');
152
554
  }
153
555
  /**
154
- * Check if a tag is an annotated tag
556
+ * Check if a tag is annotated.
557
+ *
558
+ * @description
559
+ * Convenience function that wraps TagManager.isAnnotatedTag.
560
+ *
561
+ * @param manager - TagManager instance
562
+ * @param name - Tag name
563
+ * @returns True if annotated
564
+ *
565
+ * @example
566
+ * ```typescript
567
+ * if (await checkIsAnnotatedTag(manager, 'v1.0.0')) {
568
+ * console.log('Annotated tag')
569
+ * }
570
+ * ```
155
571
  */
156
572
  export async function checkIsAnnotatedTag(_manager, _name) {
157
573
  // TODO: Implement in GREEN phase
158
574
  throw new Error('Not implemented');
159
575
  }
160
576
  /**
161
- * Verify a tag's signature
577
+ * Verify a tag's signature.
578
+ *
579
+ * @description
580
+ * Convenience function that wraps TagManager.verifyTag.
581
+ *
582
+ * @param manager - TagManager instance
583
+ * @param name - Tag name
584
+ * @returns Verification result
585
+ *
586
+ * @example
587
+ * ```typescript
588
+ * const result = await verifyTagSignature(manager, 'v1.0.0')
589
+ * ```
162
590
  */
163
591
  export async function verifyTagSignature(_manager, _name) {
164
592
  // TODO: Implement in GREEN phase
165
593
  throw new Error('Not implemented');
166
594
  }
167
595
  /**
168
- * Get the target commit SHA for a tag
596
+ * Get the target commit SHA for a tag.
597
+ *
598
+ * @description
599
+ * Convenience function that wraps TagManager.getTagTarget.
600
+ *
601
+ * @param manager - TagManager instance
602
+ * @param name - Tag name
603
+ * @returns Target commit SHA
604
+ *
605
+ * @example
606
+ * ```typescript
607
+ * const sha = await getTagTarget(manager, 'v1.0.0')
608
+ * ```
169
609
  */
170
610
  export async function getTagTarget(_manager, _name) {
171
611
  // TODO: Implement in GREEN phase
172
612
  throw new Error('Not implemented');
173
613
  }
174
614
  /**
175
- * Sort tags by semantic version
615
+ * Sort tags by semantic version.
616
+ *
617
+ * @description
618
+ * Sorts tags that look like semantic versions (v1.2.3).
619
+ * Non-semver tags are sorted lexicographically at the end.
620
+ *
621
+ * @param tags - Array of tags to sort
622
+ * @param direction - Sort direction ('asc' or 'desc')
623
+ * @returns Sorted array of tags
624
+ *
625
+ * @example
626
+ * ```typescript
627
+ * const sorted = sortTagsByVersion(tags, 'desc')
628
+ * // ['v2.0.0', 'v1.10.0', 'v1.9.0', 'v1.0.0', ...]
629
+ * ```
176
630
  */
177
631
  export function sortTagsByVersion(_tags, _direction = 'asc') {
178
632
  // TODO: Implement in GREEN phase
179
633
  throw new Error('Not implemented');
180
634
  }
181
635
  /**
182
- * Filter tags by glob pattern
636
+ * Filter tags by glob pattern.
637
+ *
638
+ * @description
639
+ * Filters tags matching a glob pattern.
640
+ * Supports * (any chars) and ? (single char) wildcards.
641
+ *
642
+ * @param tags - Array of tags to filter
643
+ * @param pattern - Glob pattern (e.g., 'v1.*', 'release-*')
644
+ * @returns Filtered array of tags
645
+ *
646
+ * @example
647
+ * ```typescript
648
+ * const v1Tags = filterTagsByPattern(tags, 'v1.*')
649
+ * ```
183
650
  */
184
651
  export function filterTagsByPattern(_tags, _pattern) {
185
652
  // TODO: Implement in GREEN phase
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/refs/tag.ts"],"names":[],"mappings":"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"}