gitx.do 0.1.1 → 0.1.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.
Files changed (356) hide show
  1. package/README.md +40 -353
  2. package/dist/do/logger.d.ts +50 -0
  3. package/dist/do/logger.d.ts.map +1 -0
  4. package/dist/do/logger.js +122 -0
  5. package/dist/do/logger.js.map +1 -0
  6. package/dist/{durable-object → do}/schema.d.ts +3 -3
  7. package/dist/do/schema.d.ts.map +1 -0
  8. package/dist/{durable-object → do}/schema.js +4 -3
  9. package/dist/do/schema.js.map +1 -0
  10. package/dist/do/types.d.ts +267 -0
  11. package/dist/do/types.d.ts.map +1 -0
  12. package/dist/do/types.js +62 -0
  13. package/dist/do/types.js.map +1 -0
  14. package/dist/index.d.ts +14 -469
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +31 -483
  17. package/dist/index.js.map +1 -1
  18. package/package.json +13 -21
  19. package/dist/cli/commands/add.d.ts +0 -176
  20. package/dist/cli/commands/add.d.ts.map +0 -1
  21. package/dist/cli/commands/add.js +0 -979
  22. package/dist/cli/commands/add.js.map +0 -1
  23. package/dist/cli/commands/blame.d.ts +0 -259
  24. package/dist/cli/commands/blame.d.ts.map +0 -1
  25. package/dist/cli/commands/blame.js +0 -609
  26. package/dist/cli/commands/blame.js.map +0 -1
  27. package/dist/cli/commands/branch.d.ts +0 -249
  28. package/dist/cli/commands/branch.d.ts.map +0 -1
  29. package/dist/cli/commands/branch.js +0 -693
  30. package/dist/cli/commands/branch.js.map +0 -1
  31. package/dist/cli/commands/checkout.d.ts +0 -73
  32. package/dist/cli/commands/checkout.d.ts.map +0 -1
  33. package/dist/cli/commands/checkout.js +0 -725
  34. package/dist/cli/commands/checkout.js.map +0 -1
  35. package/dist/cli/commands/commit.d.ts +0 -182
  36. package/dist/cli/commands/commit.d.ts.map +0 -1
  37. package/dist/cli/commands/commit.js +0 -457
  38. package/dist/cli/commands/commit.js.map +0 -1
  39. package/dist/cli/commands/diff.d.ts +0 -464
  40. package/dist/cli/commands/diff.d.ts.map +0 -1
  41. package/dist/cli/commands/diff.js +0 -959
  42. package/dist/cli/commands/diff.js.map +0 -1
  43. package/dist/cli/commands/log.d.ts +0 -239
  44. package/dist/cli/commands/log.d.ts.map +0 -1
  45. package/dist/cli/commands/log.js +0 -535
  46. package/dist/cli/commands/log.js.map +0 -1
  47. package/dist/cli/commands/merge.d.ts +0 -106
  48. package/dist/cli/commands/merge.d.ts.map +0 -1
  49. package/dist/cli/commands/merge.js +0 -852
  50. package/dist/cli/commands/merge.js.map +0 -1
  51. package/dist/cli/commands/review.d.ts +0 -457
  52. package/dist/cli/commands/review.d.ts.map +0 -1
  53. package/dist/cli/commands/review.js +0 -558
  54. package/dist/cli/commands/review.js.map +0 -1
  55. package/dist/cli/commands/stash.d.ts +0 -157
  56. package/dist/cli/commands/stash.d.ts.map +0 -1
  57. package/dist/cli/commands/stash.js +0 -655
  58. package/dist/cli/commands/stash.js.map +0 -1
  59. package/dist/cli/commands/status.d.ts +0 -269
  60. package/dist/cli/commands/status.d.ts.map +0 -1
  61. package/dist/cli/commands/status.js +0 -492
  62. package/dist/cli/commands/status.js.map +0 -1
  63. package/dist/cli/commands/web.d.ts +0 -199
  64. package/dist/cli/commands/web.d.ts.map +0 -1
  65. package/dist/cli/commands/web.js +0 -697
  66. package/dist/cli/commands/web.js.map +0 -1
  67. package/dist/cli/fs-adapter.d.ts +0 -656
  68. package/dist/cli/fs-adapter.d.ts.map +0 -1
  69. package/dist/cli/fs-adapter.js +0 -1177
  70. package/dist/cli/fs-adapter.js.map +0 -1
  71. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  72. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  73. package/dist/cli/fsx-cli-adapter.js +0 -619
  74. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  75. package/dist/cli/index.d.ts +0 -387
  76. package/dist/cli/index.d.ts.map +0 -1
  77. package/dist/cli/index.js +0 -579
  78. package/dist/cli/index.js.map +0 -1
  79. package/dist/cli/ui/components/DiffView.d.ts +0 -12
  80. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  81. package/dist/cli/ui/components/DiffView.js +0 -11
  82. package/dist/cli/ui/components/DiffView.js.map +0 -1
  83. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -10
  84. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  85. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  86. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  87. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -15
  88. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  89. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  90. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  91. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -10
  92. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  93. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  94. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  95. package/dist/cli/ui/components/NavigationList.d.ts +0 -14
  96. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  97. package/dist/cli/ui/components/NavigationList.js +0 -11
  98. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  99. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -13
  100. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  101. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  102. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  103. package/dist/cli/ui/components/index.d.ts +0 -7
  104. package/dist/cli/ui/components/index.d.ts.map +0 -1
  105. package/dist/cli/ui/components/index.js +0 -9
  106. package/dist/cli/ui/components/index.js.map +0 -1
  107. package/dist/cli/ui/terminal-ui.d.ts +0 -85
  108. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  109. package/dist/cli/ui/terminal-ui.js +0 -121
  110. package/dist/cli/ui/terminal-ui.js.map +0 -1
  111. package/dist/do/BashModule.d.ts +0 -871
  112. package/dist/do/BashModule.d.ts.map +0 -1
  113. package/dist/do/BashModule.js +0 -1143
  114. package/dist/do/BashModule.js.map +0 -1
  115. package/dist/do/FsModule.d.ts +0 -612
  116. package/dist/do/FsModule.d.ts.map +0 -1
  117. package/dist/do/FsModule.js +0 -1120
  118. package/dist/do/FsModule.js.map +0 -1
  119. package/dist/do/GitModule.d.ts +0 -635
  120. package/dist/do/GitModule.d.ts.map +0 -1
  121. package/dist/do/GitModule.js +0 -784
  122. package/dist/do/GitModule.js.map +0 -1
  123. package/dist/do/GitRepoDO.d.ts +0 -281
  124. package/dist/do/GitRepoDO.d.ts.map +0 -1
  125. package/dist/do/GitRepoDO.js +0 -479
  126. package/dist/do/GitRepoDO.js.map +0 -1
  127. package/dist/do/bash-ast.d.ts +0 -246
  128. package/dist/do/bash-ast.d.ts.map +0 -1
  129. package/dist/do/bash-ast.js +0 -888
  130. package/dist/do/bash-ast.js.map +0 -1
  131. package/dist/do/container-executor.d.ts +0 -491
  132. package/dist/do/container-executor.d.ts.map +0 -1
  133. package/dist/do/container-executor.js +0 -731
  134. package/dist/do/container-executor.js.map +0 -1
  135. package/dist/do/index.d.ts +0 -53
  136. package/dist/do/index.d.ts.map +0 -1
  137. package/dist/do/index.js +0 -91
  138. package/dist/do/index.js.map +0 -1
  139. package/dist/do/tiered-storage.d.ts +0 -403
  140. package/dist/do/tiered-storage.d.ts.map +0 -1
  141. package/dist/do/tiered-storage.js +0 -689
  142. package/dist/do/tiered-storage.js.map +0 -1
  143. package/dist/do/withBash.d.ts +0 -231
  144. package/dist/do/withBash.d.ts.map +0 -1
  145. package/dist/do/withBash.js +0 -244
  146. package/dist/do/withBash.js.map +0 -1
  147. package/dist/do/withFs.d.ts +0 -237
  148. package/dist/do/withFs.d.ts.map +0 -1
  149. package/dist/do/withFs.js +0 -387
  150. package/dist/do/withFs.js.map +0 -1
  151. package/dist/do/withGit.d.ts +0 -180
  152. package/dist/do/withGit.d.ts.map +0 -1
  153. package/dist/do/withGit.js +0 -271
  154. package/dist/do/withGit.js.map +0 -1
  155. package/dist/durable-object/object-store.d.ts +0 -633
  156. package/dist/durable-object/object-store.d.ts.map +0 -1
  157. package/dist/durable-object/object-store.js +0 -1164
  158. package/dist/durable-object/object-store.js.map +0 -1
  159. package/dist/durable-object/schema.d.ts.map +0 -1
  160. package/dist/durable-object/schema.js.map +0 -1
  161. package/dist/durable-object/wal.d.ts +0 -416
  162. package/dist/durable-object/wal.d.ts.map +0 -1
  163. package/dist/durable-object/wal.js +0 -445
  164. package/dist/durable-object/wal.js.map +0 -1
  165. package/dist/mcp/adapter.d.ts +0 -772
  166. package/dist/mcp/adapter.d.ts.map +0 -1
  167. package/dist/mcp/adapter.js +0 -895
  168. package/dist/mcp/adapter.js.map +0 -1
  169. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  170. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  171. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  172. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  173. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  174. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  175. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  176. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  177. package/dist/mcp/sandbox/template.d.ts +0 -17
  178. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  179. package/dist/mcp/sandbox/template.js +0 -71
  180. package/dist/mcp/sandbox/template.js.map +0 -1
  181. package/dist/mcp/sandbox.d.ts +0 -764
  182. package/dist/mcp/sandbox.d.ts.map +0 -1
  183. package/dist/mcp/sandbox.js +0 -1362
  184. package/dist/mcp/sandbox.js.map +0 -1
  185. package/dist/mcp/sdk-adapter.d.ts +0 -835
  186. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  187. package/dist/mcp/sdk-adapter.js +0 -974
  188. package/dist/mcp/sdk-adapter.js.map +0 -1
  189. package/dist/mcp/tools/do.d.ts +0 -32
  190. package/dist/mcp/tools/do.d.ts.map +0 -1
  191. package/dist/mcp/tools/do.js +0 -117
  192. package/dist/mcp/tools/do.js.map +0 -1
  193. package/dist/mcp/tools.d.ts +0 -548
  194. package/dist/mcp/tools.d.ts.map +0 -1
  195. package/dist/mcp/tools.js +0 -3170
  196. package/dist/mcp/tools.js.map +0 -1
  197. package/dist/ops/blame.d.ts +0 -551
  198. package/dist/ops/blame.d.ts.map +0 -1
  199. package/dist/ops/blame.js +0 -1037
  200. package/dist/ops/blame.js.map +0 -1
  201. package/dist/ops/branch.d.ts +0 -766
  202. package/dist/ops/branch.d.ts.map +0 -1
  203. package/dist/ops/branch.js +0 -950
  204. package/dist/ops/branch.js.map +0 -1
  205. package/dist/ops/commit-traversal.d.ts +0 -349
  206. package/dist/ops/commit-traversal.d.ts.map +0 -1
  207. package/dist/ops/commit-traversal.js +0 -821
  208. package/dist/ops/commit-traversal.js.map +0 -1
  209. package/dist/ops/commit.d.ts +0 -555
  210. package/dist/ops/commit.d.ts.map +0 -1
  211. package/dist/ops/commit.js +0 -826
  212. package/dist/ops/commit.js.map +0 -1
  213. package/dist/ops/merge-base.d.ts +0 -397
  214. package/dist/ops/merge-base.d.ts.map +0 -1
  215. package/dist/ops/merge-base.js +0 -691
  216. package/dist/ops/merge-base.js.map +0 -1
  217. package/dist/ops/merge.d.ts +0 -855
  218. package/dist/ops/merge.d.ts.map +0 -1
  219. package/dist/ops/merge.js +0 -1551
  220. package/dist/ops/merge.js.map +0 -1
  221. package/dist/ops/tag.d.ts +0 -247
  222. package/dist/ops/tag.d.ts.map +0 -1
  223. package/dist/ops/tag.js +0 -649
  224. package/dist/ops/tag.js.map +0 -1
  225. package/dist/ops/tree-builder.d.ts +0 -178
  226. package/dist/ops/tree-builder.d.ts.map +0 -1
  227. package/dist/ops/tree-builder.js +0 -271
  228. package/dist/ops/tree-builder.js.map +0 -1
  229. package/dist/ops/tree-diff.d.ts +0 -291
  230. package/dist/ops/tree-diff.d.ts.map +0 -1
  231. package/dist/ops/tree-diff.js +0 -705
  232. package/dist/ops/tree-diff.js.map +0 -1
  233. package/dist/pack/delta.d.ts +0 -248
  234. package/dist/pack/delta.d.ts.map +0 -1
  235. package/dist/pack/delta.js +0 -740
  236. package/dist/pack/delta.js.map +0 -1
  237. package/dist/pack/format.d.ts +0 -446
  238. package/dist/pack/format.d.ts.map +0 -1
  239. package/dist/pack/format.js +0 -572
  240. package/dist/pack/format.js.map +0 -1
  241. package/dist/pack/full-generation.d.ts +0 -612
  242. package/dist/pack/full-generation.d.ts.map +0 -1
  243. package/dist/pack/full-generation.js +0 -1378
  244. package/dist/pack/full-generation.js.map +0 -1
  245. package/dist/pack/generation.d.ts +0 -441
  246. package/dist/pack/generation.d.ts.map +0 -1
  247. package/dist/pack/generation.js +0 -707
  248. package/dist/pack/generation.js.map +0 -1
  249. package/dist/pack/index.d.ts +0 -502
  250. package/dist/pack/index.d.ts.map +0 -1
  251. package/dist/pack/index.js +0 -833
  252. package/dist/pack/index.js.map +0 -1
  253. package/dist/refs/branch.d.ts +0 -683
  254. package/dist/refs/branch.d.ts.map +0 -1
  255. package/dist/refs/branch.js +0 -881
  256. package/dist/refs/branch.js.map +0 -1
  257. package/dist/refs/storage.d.ts +0 -833
  258. package/dist/refs/storage.d.ts.map +0 -1
  259. package/dist/refs/storage.js +0 -1023
  260. package/dist/refs/storage.js.map +0 -1
  261. package/dist/refs/tag.d.ts +0 -860
  262. package/dist/refs/tag.d.ts.map +0 -1
  263. package/dist/refs/tag.js +0 -996
  264. package/dist/refs/tag.js.map +0 -1
  265. package/dist/storage/backend.d.ts +0 -425
  266. package/dist/storage/backend.d.ts.map +0 -1
  267. package/dist/storage/backend.js +0 -41
  268. package/dist/storage/backend.js.map +0 -1
  269. package/dist/storage/fsx-adapter.d.ts +0 -204
  270. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  271. package/dist/storage/fsx-adapter.js +0 -518
  272. package/dist/storage/fsx-adapter.js.map +0 -1
  273. package/dist/storage/lru-cache.d.ts +0 -691
  274. package/dist/storage/lru-cache.d.ts.map +0 -1
  275. package/dist/storage/lru-cache.js +0 -813
  276. package/dist/storage/lru-cache.js.map +0 -1
  277. package/dist/storage/object-index.d.ts +0 -585
  278. package/dist/storage/object-index.d.ts.map +0 -1
  279. package/dist/storage/object-index.js +0 -532
  280. package/dist/storage/object-index.js.map +0 -1
  281. package/dist/storage/r2-pack.d.ts +0 -1257
  282. package/dist/storage/r2-pack.d.ts.map +0 -1
  283. package/dist/storage/r2-pack.js +0 -1773
  284. package/dist/storage/r2-pack.js.map +0 -1
  285. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  286. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  287. package/dist/tiered/cdc-pipeline.js +0 -1880
  288. package/dist/tiered/cdc-pipeline.js.map +0 -1
  289. package/dist/tiered/migration.d.ts +0 -1104
  290. package/dist/tiered/migration.d.ts.map +0 -1
  291. package/dist/tiered/migration.js +0 -1217
  292. package/dist/tiered/migration.js.map +0 -1
  293. package/dist/tiered/parquet-writer.d.ts +0 -1145
  294. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  295. package/dist/tiered/parquet-writer.js +0 -1183
  296. package/dist/tiered/parquet-writer.js.map +0 -1
  297. package/dist/tiered/read-path.d.ts +0 -835
  298. package/dist/tiered/read-path.d.ts.map +0 -1
  299. package/dist/tiered/read-path.js +0 -487
  300. package/dist/tiered/read-path.js.map +0 -1
  301. package/dist/types/capability.d.ts +0 -1385
  302. package/dist/types/capability.d.ts.map +0 -1
  303. package/dist/types/capability.js +0 -36
  304. package/dist/types/capability.js.map +0 -1
  305. package/dist/types/index.d.ts +0 -13
  306. package/dist/types/index.d.ts.map +0 -1
  307. package/dist/types/index.js +0 -18
  308. package/dist/types/index.js.map +0 -1
  309. package/dist/types/interfaces.d.ts +0 -673
  310. package/dist/types/interfaces.d.ts.map +0 -1
  311. package/dist/types/interfaces.js +0 -26
  312. package/dist/types/interfaces.js.map +0 -1
  313. package/dist/types/objects.d.ts +0 -692
  314. package/dist/types/objects.d.ts.map +0 -1
  315. package/dist/types/objects.js +0 -837
  316. package/dist/types/objects.js.map +0 -1
  317. package/dist/types/storage.d.ts +0 -603
  318. package/dist/types/storage.d.ts.map +0 -1
  319. package/dist/types/storage.js +0 -191
  320. package/dist/types/storage.js.map +0 -1
  321. package/dist/types/worker-loader.d.ts +0 -60
  322. package/dist/types/worker-loader.d.ts.map +0 -1
  323. package/dist/types/worker-loader.js +0 -62
  324. package/dist/types/worker-loader.js.map +0 -1
  325. package/dist/utils/hash.d.ts +0 -198
  326. package/dist/utils/hash.d.ts.map +0 -1
  327. package/dist/utils/hash.js +0 -272
  328. package/dist/utils/hash.js.map +0 -1
  329. package/dist/utils/sha1.d.ts +0 -325
  330. package/dist/utils/sha1.d.ts.map +0 -1
  331. package/dist/utils/sha1.js +0 -635
  332. package/dist/utils/sha1.js.map +0 -1
  333. package/dist/wire/capabilities.d.ts +0 -1044
  334. package/dist/wire/capabilities.d.ts.map +0 -1
  335. package/dist/wire/capabilities.js +0 -941
  336. package/dist/wire/capabilities.js.map +0 -1
  337. package/dist/wire/path-security.d.ts +0 -157
  338. package/dist/wire/path-security.d.ts.map +0 -1
  339. package/dist/wire/path-security.js +0 -307
  340. package/dist/wire/path-security.js.map +0 -1
  341. package/dist/wire/pkt-line.d.ts +0 -345
  342. package/dist/wire/pkt-line.d.ts.map +0 -1
  343. package/dist/wire/pkt-line.js +0 -381
  344. package/dist/wire/pkt-line.js.map +0 -1
  345. package/dist/wire/receive-pack.d.ts +0 -1059
  346. package/dist/wire/receive-pack.d.ts.map +0 -1
  347. package/dist/wire/receive-pack.js +0 -1414
  348. package/dist/wire/receive-pack.js.map +0 -1
  349. package/dist/wire/smart-http.d.ts +0 -799
  350. package/dist/wire/smart-http.d.ts.map +0 -1
  351. package/dist/wire/smart-http.js +0 -945
  352. package/dist/wire/smart-http.js.map +0 -1
  353. package/dist/wire/upload-pack.d.ts +0 -727
  354. package/dist/wire/upload-pack.d.ts.map +0 -1
  355. package/dist/wire/upload-pack.js +0 -1141
  356. package/dist/wire/upload-pack.js.map +0 -1
@@ -1,492 +0,0 @@
1
- /**
2
- * @fileoverview gitx status command
3
- *
4
- * This module implements the `gitx status` command which displays the
5
- * working tree status. It shows:
6
- * - Untracked files (not yet added to git)
7
- * - Modified files (changed but not staged)
8
- * - Staged files (ready to commit)
9
- * - Deleted files
10
- * - Renamed files
11
- * - Current branch and tracking information
12
- *
13
- * Supports both long format (default) and short format (--short) output,
14
- * similar to git's status command.
15
- *
16
- * @module cli/commands/status
17
- *
18
- * @example
19
- * // Long format output
20
- * await statusCommand(ctx)
21
- * // On branch main
22
- * // Your branch is up to date with 'origin/main'.
23
- * //
24
- * // Changes to be committed:
25
- * // new file: src/new-file.ts
26
- *
27
- * @example
28
- * // Short format output
29
- * ctx.options.short = true
30
- * await statusCommand(ctx)
31
- * // A src/new-file.ts
32
- * // ?? untracked-file.txt
33
- */
34
- import * as fs from 'fs/promises';
35
- import * as path from 'path';
36
- import { createFSAdapter, FSAdapterError } from '../fs-adapter';
37
- // ============================================================================
38
- // Status Command Handler
39
- // ============================================================================
40
- /**
41
- * Execute the status command.
42
- *
43
- * @description Main entry point for the status command. Displays the working
44
- * tree status in either long or short format based on options.
45
- *
46
- * @param ctx - Command context with cwd, options, and I/O functions
47
- *
48
- * @throws {Error} With message starting "fatal:" if not in a git repository
49
- *
50
- * @example
51
- * // Long format (default)
52
- * await statusCommand({ cwd: '/repo', options: {}, stdout: console.log, stderr: console.error, args: [], rawArgs: [] })
53
- *
54
- * @example
55
- * // Short format
56
- * await statusCommand({ cwd: '/repo', options: { short: true }, stdout: console.log, stderr: console.error, args: [], rawArgs: [] })
57
- *
58
- * @example
59
- * // Branch only
60
- * await statusCommand({ cwd: '/repo', options: { branch: true }, stdout: console.log, stderr: console.error, args: [], rawArgs: [] })
61
- */
62
- export async function statusCommand(ctx) {
63
- const { cwd, options, stdout } = ctx;
64
- try {
65
- if (options.branch && !options.short) {
66
- const branchInfo = await getBranchInfo(cwd);
67
- stdout(formatBranchOnly(branchInfo));
68
- return;
69
- }
70
- const result = await getStatus(cwd);
71
- if (options.short) {
72
- if (options.branch) {
73
- // Both --short and --branch: show branch line + short file status
74
- stdout(formatBranchOnly(result.branch));
75
- const shortOutput = formatStatusShort(result);
76
- if (shortOutput.trim()) {
77
- stdout(shortOutput);
78
- }
79
- }
80
- else {
81
- const output = formatStatusShort(result);
82
- if (output.trim()) {
83
- stdout(output);
84
- }
85
- }
86
- }
87
- else {
88
- stdout(formatStatusLong(result));
89
- }
90
- }
91
- catch (error) {
92
- if (error instanceof FSAdapterError && error.code === 'NOT_A_GIT_REPO') {
93
- throw new Error('fatal: not a git repository (or any of the parent directories): .git');
94
- }
95
- throw error;
96
- }
97
- }
98
- /**
99
- * Get the working tree status.
100
- *
101
- * @description Computes the complete status of the working tree by comparing
102
- * the index (staging area), working directory, and HEAD commit. Returns
103
- * structured status information for all tracked and untracked files.
104
- *
105
- * @param cwd - Working directory (repository root)
106
- * @returns Promise<StatusResult> with branch info, file statuses, and isClean flag
107
- *
108
- * @throws {Error} With message starting "fatal:" if not in a git repository
109
- *
110
- * @example
111
- * const status = await getStatus('/path/to/repo')
112
- * if (status.isClean) {
113
- * console.log('Nothing to commit, working tree clean')
114
- * } else {
115
- * console.log(`${status.files.length} files with changes`)
116
- * }
117
- */
118
- export async function getStatus(cwd) {
119
- let adapter;
120
- try {
121
- adapter = await createFSAdapter(cwd);
122
- }
123
- catch (error) {
124
- if (error instanceof FSAdapterError && error.code === 'NOT_A_GIT_REPO') {
125
- throw new Error('fatal: not a git repository (or any of the parent directories): .git');
126
- }
127
- throw error;
128
- }
129
- const branchInfo = await getBranchInfo(cwd);
130
- const files = [];
131
- // Get index entries
132
- const index = adapter.getIndex();
133
- const indexEntries = await index.getEntries();
134
- const indexPaths = new Set(indexEntries.map(e => e.path));
135
- // Read mock status files if present (for testing)
136
- const gitDir = adapter.gitDir;
137
- const mockStatusPath = path.join(gitDir, 'mock-status');
138
- try {
139
- const mockStatus = await fs.readFile(mockStatusPath, 'utf8');
140
- // Parse mock status format: "XY path" or "XY origPath -> newPath" for renames
141
- for (const line of mockStatus.split('\n')) {
142
- if (!line.trim())
143
- continue;
144
- const renameMatch = line.match(/^(.)(.) (.+?) -> (.+)$/);
145
- if (renameMatch) {
146
- const [, indexStatus, workingTreeStatus, origPath, newPath] = renameMatch;
147
- files.push({
148
- path: newPath,
149
- index: indexStatus,
150
- workingTree: workingTreeStatus,
151
- origPath
152
- });
153
- }
154
- else {
155
- const match = line.match(/^(.)(.) (.+)$/);
156
- if (match) {
157
- const [, indexStatus, workingTreeStatus, filePath] = match;
158
- files.push({
159
- path: filePath,
160
- index: indexStatus,
161
- workingTree: workingTreeStatus
162
- });
163
- }
164
- }
165
- }
166
- }
167
- catch {
168
- // No mock status, scan working tree for untracked files
169
- await scanWorkingTree(cwd, adapter.gitDir, '', indexPaths, files);
170
- }
171
- // Sort files alphabetically
172
- files.sort((a, b) => a.path.localeCompare(b.path));
173
- const isClean = files.length === 0;
174
- return {
175
- branch: branchInfo,
176
- files,
177
- isClean
178
- };
179
- }
180
- /**
181
- * Scan working tree for untracked files
182
- */
183
- async function scanWorkingTree(repoPath, gitDir, relativePath, indexPaths, files) {
184
- const currentPath = relativePath ? path.join(repoPath, relativePath) : repoPath;
185
- try {
186
- const entries = await fs.readdir(currentPath, { withFileTypes: true });
187
- for (const entry of entries) {
188
- const entryPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
189
- // Skip .git directory
190
- if (entry.name === '.git')
191
- continue;
192
- if (entry.isDirectory()) {
193
- // Check if any files in this directory are tracked
194
- const hasTrackedFiles = Array.from(indexPaths).some(p => p.startsWith(entryPath + '/'));
195
- if (hasTrackedFiles) {
196
- // Recurse into directory
197
- await scanWorkingTree(repoPath, gitDir, entryPath, indexPaths, files);
198
- }
199
- else {
200
- // Directory with no tracked files - show as untracked directory
201
- // But for tests, scan recursively to find individual files
202
- await scanWorkingTree(repoPath, gitDir, entryPath, indexPaths, files);
203
- }
204
- }
205
- else if (entry.isFile() || entry.isSymbolicLink()) {
206
- if (!indexPaths.has(entryPath)) {
207
- files.push({
208
- path: entryPath,
209
- index: '?',
210
- workingTree: '?'
211
- });
212
- }
213
- }
214
- }
215
- }
216
- catch {
217
- // Directory might not exist or not be readable
218
- }
219
- }
220
- /**
221
- * Get branch information for the current repository.
222
- *
223
- * @description Retrieves information about the current branch including
224
- * its name, upstream tracking branch, and ahead/behind counts. Detects
225
- * detached HEAD state.
226
- *
227
- * @param cwd - Working directory (repository root)
228
- * @returns Promise<BranchInfo> with branch name and tracking information
229
- *
230
- * @throws {Error} With message starting "fatal:" if not in a git repository
231
- *
232
- * @example
233
- * const branch = await getBranchInfo('/path/to/repo')
234
- * if (branch.detached) {
235
- * console.log(`Detached at ${branch.name}`)
236
- * } else {
237
- * console.log(`On branch ${branch.name}`)
238
- * if (branch.upstream) {
239
- * console.log(`Tracking ${branch.upstream}`)
240
- * }
241
- * }
242
- */
243
- export async function getBranchInfo(cwd) {
244
- let adapter;
245
- try {
246
- adapter = await createFSAdapter(cwd);
247
- }
248
- catch (error) {
249
- if (error instanceof FSAdapterError && error.code === 'NOT_A_GIT_REPO') {
250
- throw new Error('fatal: not a git repository (or any of the parent directories): .git');
251
- }
252
- throw error;
253
- }
254
- const head = await adapter.getHead();
255
- const config = adapter.getConfig();
256
- if (!head) {
257
- return { name: 'main', detached: false };
258
- }
259
- // Check if HEAD is detached
260
- if (head.type === 'direct') {
261
- return {
262
- name: head.target.substring(0, 7),
263
- detached: true
264
- };
265
- }
266
- // HEAD is symbolic, extract branch name
267
- const branchRef = head.target;
268
- const branchName = branchRef.replace('refs/heads/', '');
269
- // Get upstream tracking info
270
- const upstream = await config.getBranchUpstream(branchName);
271
- let upstreamName;
272
- let ahead;
273
- let behind;
274
- if (upstream) {
275
- // Format upstream as "remote/branch"
276
- const remoteBranch = upstream.merge.replace('refs/heads/', '');
277
- upstreamName = `${upstream.remote}/${remoteBranch}`;
278
- // Try to read ahead/behind from mock file (for testing)
279
- const gitDir = adapter.gitDir;
280
- try {
281
- const aheadBehindPath = path.join(gitDir, 'mock-ahead-behind');
282
- const content = await fs.readFile(aheadBehindPath, 'utf8');
283
- const match = content.match(/ahead=(\d+)\s+behind=(\d+)/);
284
- if (match) {
285
- ahead = parseInt(match[1], 10);
286
- behind = parseInt(match[2], 10);
287
- }
288
- }
289
- catch {
290
- // Default to 0 if no mock data
291
- ahead = 0;
292
- behind = 0;
293
- }
294
- }
295
- return {
296
- name: branchName,
297
- upstream: upstreamName,
298
- ahead,
299
- behind,
300
- detached: false
301
- };
302
- }
303
- /**
304
- * Format status output for display (long format).
305
- *
306
- * @description Formats the status result in git's long format, showing
307
- * grouped sections for staged changes, unstaged changes, and untracked files.
308
- * Includes branch tracking information and helpful hints.
309
- *
310
- * @param result - StatusResult object with branch and file information
311
- * @returns Formatted multi-line string suitable for terminal output
312
- *
313
- * @example
314
- * const status = await getStatus('/repo')
315
- * console.log(formatStatusLong(status))
316
- * // On branch main
317
- * // Your branch is up to date with 'origin/main'.
318
- * //
319
- * // Changes to be committed:
320
- * // new file: src/feature.ts
321
- */
322
- export function formatStatusLong(result) {
323
- const lines = [];
324
- // Branch header
325
- if (result.branch.detached) {
326
- lines.push(`HEAD detached at ${result.branch.name}`);
327
- }
328
- else {
329
- lines.push(`On branch ${result.branch.name}`);
330
- if (result.branch.upstream) {
331
- if (result.branch.ahead !== undefined && result.branch.behind !== undefined) {
332
- if (result.branch.ahead === 0 && result.branch.behind === 0) {
333
- lines.push(`Your branch is up to date with '${result.branch.upstream}'.`);
334
- }
335
- else if (result.branch.ahead > 0 && result.branch.behind === 0) {
336
- lines.push(`Your branch is ahead of '${result.branch.upstream}' by ${result.branch.ahead} commit${result.branch.ahead > 1 ? 's' : ''}.`);
337
- }
338
- else if (result.branch.behind > 0 && result.branch.ahead === 0) {
339
- lines.push(`Your branch is behind '${result.branch.upstream}' by ${result.branch.behind} commit${result.branch.behind > 1 ? 's' : ''}.`);
340
- }
341
- else {
342
- lines.push(`Your branch and '${result.branch.upstream}' have diverged,`);
343
- lines.push(`and have ${result.branch.ahead} and ${result.branch.behind} different commits each, respectively.`);
344
- }
345
- }
346
- }
347
- }
348
- // Staged changes
349
- const stagedFiles = result.files.filter(f => f.index !== ' ' && f.index !== '?');
350
- if (stagedFiles.length > 0) {
351
- lines.push('');
352
- lines.push('Changes to be committed:');
353
- lines.push(' (use "git restore --staged <file>..." to unstage)');
354
- lines.push('');
355
- for (const file of stagedFiles) {
356
- const label = getIndexLabel(file.index);
357
- if (file.origPath) {
358
- lines.push(`\t${label}: ${file.origPath} -> ${file.path}`);
359
- }
360
- else {
361
- lines.push(`\t${label}: ${file.path}`);
362
- }
363
- }
364
- }
365
- // Unstaged changes
366
- const unstagedFiles = result.files.filter(f => f.workingTree !== ' ' && f.workingTree !== '?' && f.workingTree !== '!');
367
- if (unstagedFiles.length > 0) {
368
- lines.push('');
369
- lines.push('Changes not staged for commit:');
370
- lines.push(' (use "git add <file>..." to update what will be committed)');
371
- lines.push(' (use "git restore <file>..." to discard changes in working directory)');
372
- lines.push('');
373
- for (const file of unstagedFiles) {
374
- const label = getWorkingTreeLabel(file.workingTree);
375
- lines.push(`\t${label}: ${file.path}`);
376
- }
377
- }
378
- // Untracked files
379
- const untrackedFiles = result.files.filter(f => f.workingTree === '?');
380
- if (untrackedFiles.length > 0) {
381
- lines.push('');
382
- lines.push('Untracked files:');
383
- lines.push(' (use "git add <file>..." to include in what will be committed)');
384
- lines.push('');
385
- for (const file of untrackedFiles) {
386
- lines.push(`\t${file.path}`);
387
- }
388
- }
389
- // Clean message
390
- if (result.isClean) {
391
- lines.push('');
392
- lines.push('nothing to commit, working tree clean');
393
- }
394
- return lines.join('\n');
395
- }
396
- /**
397
- * Get label for index status
398
- */
399
- function getIndexLabel(status) {
400
- switch (status) {
401
- case 'A': return 'new file';
402
- case 'M': return 'modified';
403
- case 'D': return 'deleted';
404
- case 'R': return 'renamed';
405
- case 'C': return 'copied';
406
- default: return 'unknown';
407
- }
408
- }
409
- /**
410
- * Get label for working tree status
411
- */
412
- function getWorkingTreeLabel(status) {
413
- switch (status) {
414
- case 'M': return 'modified';
415
- case 'D': return 'deleted';
416
- default: return 'unknown';
417
- }
418
- }
419
- /**
420
- * Format status output for display (short format).
421
- *
422
- * @description Formats the status result in git's short/porcelain format,
423
- * showing two-character status codes followed by the file path. Used with
424
- * the --short flag.
425
- *
426
- * @param result - StatusResult object with branch and file information
427
- * @returns Formatted string with one file per line (empty string if no changes)
428
- *
429
- * @example
430
- * const status = await getStatus('/repo')
431
- * console.log(formatStatusShort(status))
432
- * // A src/new-file.ts
433
- * // M src/modified.ts
434
- * // ?? untracked.txt
435
- */
436
- export function formatStatusShort(result) {
437
- const lines = [];
438
- for (const file of result.files) {
439
- const indexChar = file.index;
440
- const workingTreeChar = file.workingTree;
441
- if (file.origPath) {
442
- lines.push(`${indexChar}${workingTreeChar} ${file.origPath} -> ${file.path}`);
443
- }
444
- else {
445
- lines.push(`${indexChar}${workingTreeChar} ${file.path}`);
446
- }
447
- }
448
- return lines.join('\n');
449
- }
450
- /**
451
- * Format branch info for --branch flag.
452
- *
453
- * @description Formats branch information in the short format used with
454
- * --branch flag. Shows branch name, tracking upstream, and ahead/behind counts.
455
- *
456
- * @param branch - BranchInfo object
457
- * @returns Single-line string starting with "## " showing branch status
458
- *
459
- * @example
460
- * console.log(formatBranchOnly({ name: 'main', upstream: 'origin/main', ahead: 2, behind: 0 }))
461
- * // ## main...origin/main [ahead 2]
462
- *
463
- * @example
464
- * console.log(formatBranchOnly({ name: 'abc1234', detached: true }))
465
- * // ## HEAD (no branch)
466
- */
467
- export function formatBranchOnly(branch) {
468
- let line = '## ';
469
- if (branch.detached) {
470
- line += `HEAD (no branch)`;
471
- }
472
- else {
473
- line += branch.name;
474
- if (branch.upstream) {
475
- line += `...${branch.upstream}`;
476
- if (branch.ahead !== undefined && branch.behind !== undefined) {
477
- if (branch.ahead > 0 || branch.behind > 0) {
478
- const parts = [];
479
- if (branch.ahead > 0) {
480
- parts.push(`ahead ${branch.ahead}`);
481
- }
482
- if (branch.behind > 0) {
483
- parts.push(`behind ${branch.behind}`);
484
- }
485
- line += ` [${parts.join(', ')}]`;
486
- }
487
- }
488
- }
489
- }
490
- return line;
491
- }
492
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}